|
|
|
| В разделе "Задачи на PHP" появилась новая задача, категории 3 - Передача данных методом POST http://www.softtime.ru/info/task.php?id_article=87. Все желающие, могут оставлять свои решения в HTML-форме, ссылку на которую можно найти в тексте задачи. | |
|
|
|
|
|
|
|
для: cheops
(03.04.2006 в 13:12)
| | Чё-то я не понял, данные откуда должны в handler.php передаваться? С удалённого сервера или просто при заходе на index.php данные отсылаются в handler.php методом POST или что-то другое? | |
|
|
|
|
|
|
|
для: Axxil
(03.04.2006 в 13:40)
| | Из скрипта, который вы напишите, смысл в том, что вы должны передать данные с удалённой машине сразу обработчику формы, минуя HTML-форму. | |
|
|
|
|
|
|
|
для: cheops
(03.04.2006 в 14:03)
| | Это надо на яве написать апплет, открывающий сокет и передающий данные методом post? | |
|
|
|
|
|
|
|
для: Саня
(06.04.2006 в 15:32)
| | Нет, апплет не нужен, достаточно средств PHP... | |
|
|
|
|
|
|
|
для: cheops
(07.04.2006 в 00:08)
| | Я не понимаю. Пользователь заходит, вводит какие-то данные... и эти данные передаются методом post без формы??? Я не знаю какими средствами можно такое сделать. На ум приходят апплеты Java, ActiveX, VBS, в конце концов, но никак не серверные языки!
После заполнения текстового поля и нажатия на кнопку "Отправить" методом POST данные отправляются обработчику handler.php:
...
Передайте обработчику handler.php POST-данные напрямую, минуя HTML-форму
| То есть нужно сделать то же самое, но без тега <form> на страничке?
Или так: пользователь зашёл на index.php, ввёл данные в форму, эта данные передались этому же самому index.php, который в свою очередь открывает сокет и пересылает данные файлу handler.php? | |
|
|
|
|
|
|
|
для: Саня
(07.04.2006 в 00:52)
| | Все перечисленные технологии + браузер пользуются сокетами - они реализованы в PHP, поэтому никаких сложностей быть не должно. | |
|
|
|
|
|
|
|
для: cheops
(07.04.2006 в 01:05)
| | То есть пользователь заходит на index.php и, пока скрипт обрабатывается сервером, он передаёт какие-то данные скрипту handler.php методом post?
Если в задаче подразумевается передача данных, которые ввёл пользователь, то без формы тут не обойтись. | |
|
|
|
|
|
|
|
для: Саня
(07.04.2006 в 01:17)
| | Зачем вы придераетесь к словам? Ведь вопрос достаточно хорошо изложан. Надо просто сделать скрипт который отсылает POST данные обработчику.
И потом так же в обработчике сделать защиту от POST которые были послы не из формы. | |
|
|
|
|
|
|
|
для: Бамси
(07.04.2006 в 02:03)
| | Я не придираюсь к словам. Просто я совсем не понял эту задачу, вот и спрашиваю.
Ладно, посмотрю на ответы других. Тогда и пойму что требовалось в задаче. | |
|
|
|
|
|
|
|
для: cheops
(03.04.2006 в 13:12)
| | Можно поинтересоваться, в чем практическая ценность этой задачи?
Когда может потребоваться клиенту передавать данные в обход формы, и с какой целью опять же может потребоваться серверу воспрепятствовать обработке таких данных? | |
|
|
|
|
|
|
|
для: Trianon
(07.04.2006 в 10:39)
| | To Саня, Trianon - задача, как и подбор пароля несколько задач назад, на взлом. В таких случаях текст, как правило, жёстко вбивается в код скрипта, а сами скрипты применяются для флуда (есть ряд редких случаев, когда такие скрипты выполняют позитивную роль - там где заранее не предусмотрены альтернативные интерфейсы и нет возможности их реализации). Цель задачи продемонстрировать, что просто факт передачи данных методом POST не является защитой и POST-данные необходимо проверять также тщательно как GET-параметры или cookie. Более того, скрипт в отличие от человека может послать не одно, а 100 сообщений и это необходимо учитывать при разработке Web-приложений. Я не знаю как другие разработчики, но мне в самом начале работы на PHP было очень сложно посмотреть глазами злоумышленика (и сейчас сложно), свои скрипты ломать психологически сложно, особенно если навыков нет. Решив задачу или посмотрев ответ, Web-разработчик сможет другими глазами посмотреть на свои Web-приложения. | |
|
|
|
|
|
|
|
для: cheops
(07.04.2006 в 12:34)
| | Ну... это не сложно
..../handler.php?name=Yakor&pass=1234
|
А защита - можно сравнить реф... если он нулевой или не содержит .../index.php То die("Попытка влома") | |
|
|
|
|
|
|
|
|
для: Yakor
(10.04.2006 в 10:46)
| | А если броузер его не передает? Или он блокируется файрволом? Что тогда? | |
|
|
|
|
|
|
|
для: Yakor
(10.04.2006 в 10:46)
| | эт конечно возможно при включеном регистр глобал | |
|
|
|
|
|
|
|
для: fire_f12
(17.04.2006 в 08:57)
| | Маловероятно, в условиях задачи используется суперглобальный массив $_POST. | |
|
|
|
|
|
|
|
для: cheops
(17.04.2006 в 09:44)
| | Я не совсем понял, что значит передать напрямую! Поэтому приведу код, и если он не соответствует решению, тогда не молчите - отвечайте.
Добавляем в тэг form параметр action
<form action="handler.php" method="post">
Имя : <input type=text name=name>
Пароль : <input type=text name=pass>
<input type=submit name=send value=Отправить>
</form>
|
В самом handler.php пишем след. код:
<?php
if(isset($_POST["send"]) && isset($_POST["name"]) && isset($_POST["pass"]))
{
$name = htmlspecialchars(stripslashes(trim($_POST["name"])));
$pass = htmlspecialchars(stripslashes(trim($_POST["pass"])));
echo "Имя - $name";
echo "Пароль - $pass ";
}
else
{
echo "Hello anonymus";
}
?>
|
Ну или вообще через сессию сделать... Короче смотрите и ругайте... :) | |
|
|
|
|
|
|
|
для: UnErase
(18.04.2006 в 23:32)
| | Здесь подразумевалось, что для решения задачи будут использоваться сокеты http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=15857, так как HTML-форма может быть прошита сессией, проверять реферер - а подделать это всё можно только используя сокеты. | |
|
|
|
|
|
|
|
для: cheops
(19.04.2006 в 16:03)
| | Не все знают, что такое сокеты(я например:( ...) | |
|
|
|
|
|
|
|
для: Lelik
(20.04.2006 в 04:19)
| | Задача даёт повод познакомиться с ними, если вам понадобиться как-нибудь воссоздать полную иллюзию обращения браузера при помощи PHP - вы будете знать, что это возможно и осуществляется при помощи сокетов. | |
|
|
|
|
|
|
|
для: cheops
(20.04.2006 в 11:07)
| | Спасибо, но я все равно ничё ни понял | |
|
|
|
|
|
|
|
для: Lelik
(20.04.2006 в 18:21)
| | Яркий пример - отправки смс с сайтов, которые не имеют отношения к операторам сотовой связи. При помощи сокетов эмулируется заход браузера на страничку оператора связи, затем формируется своя форма, затем, когда пользователь ввёл данные, снова эмулировать заход на страницу, только с переданными параметрами.
Мне, когда делал такую систему, пришлось при помощи сокетов передавать ID сессии, куки и ещё парочку фишек методом POST через сокеты. | |
|
|
|
|
|
|
|
для: Саня
(21.04.2006 в 00:05)
| | Помоему проще E-mail отправить, только правильно сформированный, хотя если честно, то у меня так и не получилось получить такое смс. Операторы вроде как по умолчанию отключают прием смс через мыло... | |
|
|
|