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

Форум PHP

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

 

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

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

тема: Одновременный GET/POST
 
 автор: udpn   (02.01.2009 в 14:55)   письмо автору
 
 

Если одновременно передаются GET и POST данные, какие хидеры будет отправлять клиент? Ответьте, если можно, с указанием на страницу RFC.

  Ответить  
 
 автор: Trianon   (02.01.2009 в 15:05)   письмо автору
 
   для: udpn   (02.01.2009 в 14:55)
 

Данные POST передаются в теле POST-запроса.
Данные GET передаются заголовке (более точно - в URI) запроса . Любого.
Собственно, это никакие не данные GET, а всего лишь параметры URI. Просто на старте php они складываются в массив $_GET независимо от типа запроса.
RFC как обычно 2616 . Только что именно Вы хотите в нем найти?

  Ответить  
 
 автор: udpn   (02.01.2009 в 15:12)   письмо автору
 
   для: Trianon   (02.01.2009 в 15:05)
 

POST /index.php?abc=123 HTTP/1.1\r\n
Host: test.ru\r\n

Я ваc правильно понял?

  Ответить  
 
 автор: udpn   (02.01.2009 в 15:14)   письмо автору
 
   для: udpn   (02.01.2009 в 15:12)
 

Мда, как всегда найти удается сразу после вопроса на форуме =)

Нашел пример на http://webi.ru/webi_articles/6_7_f.html, пишу для тех, кто ищет по форуму.

<?
$url 
"http://test.ru/patch/file.php?var=23&var2=54"// это адрес, по которому скрипт передаст данные методом POST. Как видно, здесь указаны переменные, которые будут переданы через GET
$parse_url parse_url($url); // при помощи этой функции разбиваем адрес на массив, который будет содержать хост, путь и список переменных.
$path $parse_url["path"]; // путь до файла(/patch/file.php)
if($parse_url["query"]) // если есть список параметров
$path .= "?" $parse_url["query"]; // добавляем к пути до файла список переменных(?var=23&var2=54)
$host$parse_url["host"]; // тут получаем хост (test.ru)
$data "var3=test&var4=".urlencode("еще тест"); // а вот тут создаем список переменных с параметрами. Эти данные будут переданы через POST. Все значения переменных обязательно нужно кодировать urlencode ("еще тест")

$fp fsockopen($host80$errno$errstr10);
if (
$fp)
{

$out "POST ".$path." HTTP/1.1\n";
$out .= "Host: ".$host."\n";
$out .= "Referer: ".$url."/\n";
$out .= "User-Agent: Operan";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";

fputs($fp$out); // отправляем данные

// после отправки данных можно получить ответ сервера и прочитать информацию выданную файлом, в который отправили данные...
// читаем данные построчно и выводим их. Конечно, эти данные можно использовать по своему усмотрению.
while($gets=fgets($fp,2048))
{
print 
$gets;
}
fclose($fp);
}
?>

  Ответить  
 
 автор: Trianon   (02.01.2009 в 15:16)   письмо автору
 
   для: udpn   (02.01.2009 в 15:12)
 

POST /index.php?abc=123 HTTP/1.0
Host: test.ru
Content-Length: 11

с=456&d=789


пример, который Вы привели в предыдущем комментарии, содержит ошибки протокола. Довольно грубые.

  Ответить  
 
 автор: udpn   (02.01.2009 в 15:40)   письмо автору
 
   для: Trianon   (02.01.2009 в 15:16)
 

А можно подробнее про ошибки протокола?

  Ответить  
 
 автор: Trianon   (02.01.2009 в 15:45)   письмо автору
 
   для: udpn   (02.01.2009 в 15:40)
 

Коротко.
HTTP/1.1 , если не указано обратное, не закрывает соединение, а ожидает очередной запрос в потоке.
Обратное не указано.

Подробнее - в RFC.

  Ответить  
 
 автор: udpn   (02.01.2009 в 15:51)   письмо автору
 
   для: Trianon   (02.01.2009 в 15:45)
 

Вы об этом =) Я исправил и даже не заметил. Там еще и неверные окончания строк установлены.

  Ответить  
 
 автор: cheops   (02.01.2009 в 15:05)   письмо автору
 
   для: udpn   (02.01.2009 в 14:55)
 

Да точно такие же как при обычных POST и GET-запросах... собственно никакого конфликта тут быть не может, POST-данные идут в теле HTTP-документа, GET-данные в HTTP-заголовках. Поэтому смело можете отправлять данные одновременно методом POST и методом GET - они будут доступны на сервере.

  Ответить  
Rambler's Top100
вверх

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