Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Задача N 15 Передача данных методом POST
 
 автор: cheops   (03.04.2006 в 13:12)   письмо автору
 
 

В разделе "Задачи на PHP" появилась новая задача, категории 3 - Передача данных методом POST http://www.softtime.ru/info/task.php?id_article=87. Все желающие, могут оставлять свои решения в HTML-форме, ссылку на которую можно найти в тексте задачи.

   
 
 автор: Axxil   (03.04.2006 в 13:40)   письмо автору
 
   для: cheops   (03.04.2006 в 13:12)
 

Чё-то я не понял, данные откуда должны в handler.php передаваться? С удалённого сервера или просто при заходе на index.php данные отсылаются в handler.php методом POST или что-то другое?

   
 
 автор: cheops   (03.04.2006 в 14:03)   письмо автору
 
   для: Axxil   (03.04.2006 в 13:40)
 

Из скрипта, который вы напишите, смысл в том, что вы должны передать данные с удалённой машине сразу обработчику формы, минуя HTML-форму.

   
 
 автор: Саня   (06.04.2006 в 15:32)   письмо автору
 
   для: cheops   (03.04.2006 в 14:03)
 

Это надо на яве написать апплет, открывающий сокет и передающий данные методом post?

   
 
 автор: cheops   (07.04.2006 в 00:08)   письмо автору
 
   для: Саня   (06.04.2006 в 15:32)
 

Нет, апплет не нужен, достаточно средств PHP...

   
 
 автор: Саня   (07.04.2006 в 00:52)   письмо автору
 
   для: cheops   (07.04.2006 в 00:08)
 

Я не понимаю. Пользователь заходит, вводит какие-то данные... и эти данные передаются методом post без формы??? Я не знаю какими средствами можно такое сделать. На ум приходят апплеты Java, ActiveX, VBS, в конце концов, но никак не серверные языки!
После заполнения текстового поля и нажатия на кнопку "Отправить" методом POST данные отправляются обработчику handler.php:
...
Передайте обработчику handler.php POST-данные напрямую, минуя HTML-форму
То есть нужно сделать то же самое, но без тега <form> на страничке?

Или так: пользователь зашёл на index.php, ввёл данные в форму, эта данные передались этому же самому index.php, который в свою очередь открывает сокет и пересылает данные файлу handler.php?

   
 
 автор: cheops   (07.04.2006 в 01:05)   письмо автору
 
   для: Саня   (07.04.2006 в 00:52)
 

Все перечисленные технологии + браузер пользуются сокетами - они реализованы в PHP, поэтому никаких сложностей быть не должно.

   
 
 автор: Саня   (07.04.2006 в 01:17)   письмо автору
 
   для: cheops   (07.04.2006 в 01:05)
 

То есть пользователь заходит на index.php и, пока скрипт обрабатывается сервером, он передаёт какие-то данные скрипту handler.php методом post?

Если в задаче подразумевается передача данных, которые ввёл пользователь, то без формы тут не обойтись.

   
 
 автор: Бамси   (07.04.2006 в 02:03)   письмо автору
 
   для: Саня   (07.04.2006 в 01:17)
 

Зачем вы придераетесь к словам? Ведь вопрос достаточно хорошо изложан. Надо просто сделать скрипт который отсылает POST данные обработчику.
И потом так же в обработчике сделать защиту от POST которые были послы не из формы.

   
 
 автор: Саня   (07.04.2006 в 02:58)   письмо автору
 
   для: Бамси   (07.04.2006 в 02:03)
 

Я не придираюсь к словам. Просто я совсем не понял эту задачу, вот и спрашиваю.

Ладно, посмотрю на ответы других. Тогда и пойму что требовалось в задаче.

   
 
 автор: Trianon   (07.04.2006 в 10:39)   письмо автору
 
   для: cheops   (03.04.2006 в 13:12)
 

Можно поинтересоваться, в чем практическая ценность этой задачи?
Когда может потребоваться клиенту передавать данные в обход формы, и с какой целью опять же может потребоваться серверу воспрепятствовать обработке таких данных?

   
 
 автор: cheops   (07.04.2006 в 12:34)   письмо автору
 
   для: Trianon   (07.04.2006 в 10:39)
 

To Саня, Trianon - задача, как и подбор пароля несколько задач назад, на взлом. В таких случаях текст, как правило, жёстко вбивается в код скрипта, а сами скрипты применяются для флуда (есть ряд редких случаев, когда такие скрипты выполняют позитивную роль - там где заранее не предусмотрены альтернативные интерфейсы и нет возможности их реализации). Цель задачи продемонстрировать, что просто факт передачи данных методом POST не является защитой и POST-данные необходимо проверять также тщательно как GET-параметры или cookie. Более того, скрипт в отличие от человека может послать не одно, а 100 сообщений и это необходимо учитывать при разработке Web-приложений. Я не знаю как другие разработчики, но мне в самом начале работы на PHP было очень сложно посмотреть глазами злоумышленика (и сейчас сложно), свои скрипты ломать психологически сложно, особенно если навыков нет. Решив задачу или посмотрев ответ, Web-разработчик сможет другими глазами посмотреть на свои Web-приложения.

   
 
 автор: Yakor   (10.04.2006 в 10:46)   письмо автору
 
   для: cheops   (07.04.2006 в 12:34)
 

Ну... это не сложно
..../handler.php?name=Yakor&pass=1234


А защита - можно сравнить реф... если он нулевой или не содержит .../index.php То die("Попытка влома")

   
 
 автор: cheops   (10.04.2006 в 12:26)   письмо автору
 
   для: Yakor   (10.04.2006 в 10:46)
 

Это GET-параметры, а речь идёт о POST-параметрах
http://www.softtime.ru/info/task.php?id_article=87
http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=15857

   
 
 автор: Loki   (10.04.2006 в 13:50)   письмо автору
 
   для: Yakor   (10.04.2006 в 10:46)
 

А если броузер его не передает? Или он блокируется файрволом? Что тогда?

   
 
 автор: fire_f12   (17.04.2006 в 08:57)   письмо автору
 
   для: Yakor   (10.04.2006 в 10:46)
 

эт конечно возможно при включеном регистр глобал

   
 
 автор: cheops   (17.04.2006 в 09:44)   письмо автору
 
   для: fire_f12   (17.04.2006 в 08:57)
 

Маловероятно, в условиях задачи используется суперглобальный массив $_POST.

   
 
 автор: UnErase   (18.04.2006 в 23:32)   письмо автору
 
   для: 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";

  }

?> 


Ну или вообще через сессию сделать... Короче смотрите и ругайте... :)

   
 
 автор: cheops   (19.04.2006 в 16:03)   письмо автору
 
   для: UnErase   (18.04.2006 в 23:32)
 

Здесь подразумевалось, что для решения задачи будут использоваться сокеты http://www.softtime.ru/forum/read.php?id_forum=7&id_theme=15857, так как HTML-форма может быть прошита сессией, проверять реферер - а подделать это всё можно только используя сокеты.

   
 
 автор: Lelik   (20.04.2006 в 04:19)   письмо автору
 
   для: cheops   (19.04.2006 в 16:03)
 

Не все знают, что такое сокеты(я например:( ...)

   
 
 автор: cheops   (20.04.2006 в 11:07)   письмо автору
 
   для: Lelik   (20.04.2006 в 04:19)
 

Задача даёт повод познакомиться с ними, если вам понадобиться как-нибудь воссоздать полную иллюзию обращения браузера при помощи PHP - вы будете знать, что это возможно и осуществляется при помощи сокетов.

   
 
 автор: Lelik   (20.04.2006 в 18:21)   письмо автору
 
   для: cheops   (20.04.2006 в 11:07)
 

Спасибо, но я все равно ничё ни понял

   
 
 автор: Саня   (21.04.2006 в 00:05)   письмо автору
 
   для: Lelik   (20.04.2006 в 18:21)
 

Яркий пример - отправки смс с сайтов, которые не имеют отношения к операторам сотовой связи. При помощи сокетов эмулируется заход браузера на страничку оператора связи, затем формируется своя форма, затем, когда пользователь ввёл данные, снова эмулировать заход на страницу, только с переданными параметрами.
Мне, когда делал такую систему, пришлось при помощи сокетов передавать ID сессии, куки и ещё парочку фишек методом POST через сокеты.

   
 
 автор: Евгений Петров   (21.04.2006 в 23:59)   письмо автору
 
   для: Саня   (21.04.2006 в 00:05)
 

Помоему проще E-mail отправить, только правильно сформированный, хотя если честно, то у меня так и не получилось получить такое смс. Операторы вроде как по умолчанию отключают прием смс через мыло...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования