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

Форум PHP

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

 

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

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

тема: Передача данных методом POST
 
 автор: MRE   (17.09.2007 в 12:41)   письмо автору
 
 

Есть ли в php возможность:
1) передать данные в скрипт POST-ом, но без формы, то есть типа header, но еще передать парвметры не через

header("Location: ../reg.html?a=1&b=2") 

а так же, но параметры отдельно, чтобы принимались методом POST

2) возможно ли средствами php отправить данные в скрипт и получить их без перезагрузки страницы без использования Ajax ?

   
 
 автор: bronenos   (17.09.2007 в 12:59)   письмо автору
 
   для: MRE   (17.09.2007 в 12:41)
 

1. можно, curl или сокетом
2. чем вам не нравится аякс? и отправлять данные надо именно на php а не js?

   
 
 автор: MRE   (17.09.2007 в 13:21)   письмо автору
 
   для: bronenos   (17.09.2007 в 12:59)
 

Спасибо!
Не, Ajax меня всем устраивает, просто интересно есть ли другие способы.

   
 
 автор: SHAman   (27.11.2007 в 00:27)   письмо автору
 
   для: MRE   (17.09.2007 в 13:21)
 

Данные, отдаваемые методом пост - это тупо какое-то количество байт, следующих полсе пустого заголовка, посылаемого браузером.
К серверу приходит такая байда:

заголовок
заголовок
Content-length: размер данных POST

Данные, передаваемые методом пост.

Я писал об этом.

   
 
 автор: Trianon   (27.11.2007 в 00:56)   письмо автору
 
   для: SHAman   (27.11.2007 в 00:27)
 

После пустой строки. Заголовок не может быть пустым.

   
 
 автор: SHAman   (27.11.2007 в 12:07)   письмо автору
 
   для: Trianon   (27.11.2007 в 00:56)
 

Пустую строку частенько называют "пустым заголовком". Это не я выдумал, это в литературе так встречается. Впрочем, это дело вкуса.

   
 
 автор: cheops   (18.09.2007 в 10:32)   письмо автору
 
   для: MRE   (17.09.2007 в 12:41)
 

Возможно вас заинтересуют следующие ссылки
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1879
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=9050
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8931

   
 
 автор: Alex14   (24.11.2007 в 13:10)   письмо автору
 
   для: cheops   (18.09.2007 в 10:32)
 

Процесс передачи данных этим методом занимает порядка 20 секунд у меня на компьютере (код брал из указанных здесь ссылок). Этот способ (POST) мне нужен для гостевой книги. (У меня форма находится на той же странице, что и сообщения в index.php. Из формы в index.php данные идут в скрипт addrec.php, где анализируются и пишутся в базу. Или в случае неправильного ввода передаются обратно в форму в index.php - для этого и нужна отправка методом POST). Такое большое время наверное неприемлемо. Можно ли ускорить?

   
 
 автор: cheops   (25.11.2007 в 13:01)   письмо автору
 
   для: Alex14   (24.11.2007 в 13:10)
 

Где тестируете систему на локальном хосте или на сервере?

   
 
 автор: Alex14   (25.11.2007 в 15:58)   письмо автору
 
   для: cheops   (25.11.2007 в 13:01)
 

У себя на компьютере.
Из файла post.php

<? 
  
// передаваемые данные 
  
$name "Login"
  
$pass "Password"

  
$hostname "localhost"
  
$fp fsockopen($hostname,80); 

  
// формируем строку с отправляемымы данными 
  
$data "name=".urlencode($name)."&pass=".urlencode($pass)."\r\n\r\n"
  
$headers "POST /tmp/handler.php HTTP/1.1\r\n" 
            
."Host: $hostname\r\n" 
            
."Content-type: application/x-www-form-urlencoded\r\n" 
            
."Content-Length: ".strlen($data)."\r\n\r\n"
  
// отправляем 
  
fwrite($fp,$headers.$data); 

  
// на этом впринципе отправка закончена, 
  // для уверенности можно прочитать один 
  // байт или все содержимое: 
  
while(!feof($fp)) 
    echo 
fread($fp,1024); 

  
fclose($fp); 
?>

передаются данные в handler.php

<?php 
    
echo "Имя - $_POST[name] "
    echo 
"Пароль - $_POST[pass] "
?>

После открытия в браузере страницы http://localhost/tmp/post.php и 15-20 секунд ожидания появляется ответ:

HTTP/1.1 200 OK Date: Sun, 25 Nov 2007 13:02:21 GMT Server: Apache/1.3.33 (Win32) X-Powered-By: PHP/5.2.4 Transfer-Encoding: chunked Content-Type: text/html 22 Имя - Login Пароль - Password 0

   
 
 автор: Drago   (25.11.2007 в 16:07)   письмо автору
 
   для: Alex14   (25.11.2007 в 15:58)
 

Закрывайте соединение

<?
$headers 
"POST /tmp/handler.php HTTP/1.1\r\n"  
            
."Host: $hostname\r\n"  
            
."Content-type: application/x-www-form-urlencoded\r\n"  
            
."Content-Length: ".strlen($data)."\r\n"
            
."Connection: Close\r\n\r\n"
?>

   
 
 автор: Alex14   (25.11.2007 в 16:20)   письмо автору
 
   для: Drago   (25.11.2007 в 16:07)
 

Не помогает. Вместо "Transfer-Encoding: chunked" выдаётся "Connection: close". В остальном то же самое.

   
 
 автор: cheops   (26.11.2007 в 12:15)   письмо автору
 
   для: Alex14   (25.11.2007 в 15:58)
 

Замените HTTP/1.1 на HTTP/1.0 (в Windows ошибка, которая замедляет такие обращения - в UNIX и с HTTP/1.1 всё должно быть нормально и быстро).

   
 
 автор: Trianon   (26.11.2007 в 23:51)   письмо автору
 
   для: cheops   (26.11.2007 в 12:15)
 

А по-моему дело не в ОС,
Вот это

  // на этом впринципе отправка закончена, 
  // для уверенности можно прочитать один 
  // байт или все содержимое: 
  while(!feof($fp)) 
    echo fread($fp,1024); 


ну никак не отвечает протоколу 1.1

   
 
 автор: cheops   (27.11.2007 в 12:09)   письмо автору
 
   для: Trianon   (26.11.2007 в 23:51)
 

Возможно, но в UNIX этот код будет выполняться сильно быстрее, чем в Windows.

   
 
 автор: vasso   (28.02.2008 в 18:57)
 
   для: cheops   (27.11.2007 в 12:09)
 

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

может есть свежие мысли по этому поводу?

для хеопса - сервер unix

   
 
 автор: vasso_m   (28.02.2008 в 18:57)   письмо автору
 
   для: cheops   (27.11.2007 в 12:09)
 

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

может есть свежие мысли по этому поводу?

для хеопса - сервер unix

   
 
 автор: mihdan   (29.02.2008 в 14:05)   письмо автору
 
   для: vasso_m   (28.02.2008 в 18:57)
 

http://dklab.ru/lib/JsHttpRequest/

   
Rambler's Top100
вверх

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