WeBinstruments

Инструментарий для веб-мастеров

 

Техподдержка и
сопровождение
сайтов


на сайте на всех сайтах для веб разработчиков везде
 
 Скрипты
  PHP скрипты   
  Flash скрипты   
  Javascript скрипты   

 Софт
  Инструменты SEO   
  Разработка сайтов   
  Серверное ПО   

 Документация
  MySQL   
  PHP   
  HTML   
  Протоколы и сервисы Internet   

 Статьи
  PHP   
  MySQL   
  Сервер   
  еще...   

 Услуги и сервисы
  Домены   
  Хостинги   
  Блоки для сайта   

 Новости


 Контакты
  icq: 158325531
  email:
  все контакты: здесь




Atom все поступления
Раздел Новости
Раздел Услуги и сервисы
Раздел Статьи
Раздел Файлы
комментарии

Главная / Статьи / PHP / Передача данных из скрипта методом POST


Передача данных из скрипта методом POST

08.05.2007 (последний раз редактировалось 15.11.2010)
сайт автора: http://webi.ru
публикация данной статьи разрешена только со ссылкой на сайт автора статьи

Отправка данных из php скрипта методом POST так, как это делает обычная html форма. Отправка переменных и файлов. Отредактирована 15.11.2010

Читать всю статью


Комментарии

RSS комментарии


11.11.2010 Tofan
А как быть если нужно передать через форму не переменные а файл?



11.11.2010 Админ
Tofan, вот рабочий пример
В данном случае передается в скрипт test.php следующие данные:
массив mass[qwe] с текстом
переменная var с текстом
текстовый файл a.txt который имеет имя поля формы var_file
Обязательно точно измеряйте Content-length: ---

Скоро полностью опишу этот пример и добавлю его в статью.


POST /test/test.php HTTP/1.0
Host: site.com
Referer: site.com
Content-type: multipart/form-data, boundary=--ccf8111910
Content-length: 333

----ccf8111910
Content-Disposition: form-data; name="mass[qwe]"

значение переменной mass[qwe]
----ccf8111910
Content-Disposition: form-data; name="var"

значение переменной var
----ccf8111910
Content-Disposition: form-data; name="var_file"; filename="a.txt"
Content-Type: text/plain

содержимое файла
----ccf8111910--

Если есть вопросы по этому коду, задавайте.




12.11.2010 Александр
Каким образом можно после передачи данных этим методом вызвать скрипт, на который были переданы данные? Я пробовал написать в конце скрипта header("Location: ..."), но переданного поста уже не видно...



12.11.2010 Админ
Александр, вызывать скрипт после отправки не нужно. Скрипт уже вызван во время отправки данных. Ведь отправляете данные вы в скрипт.
Если вам нужно получить то, что выдает скрипт после отправки в него данных, то смотрите пример, после отправки данных нужно просто поймать этот вывод.

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



21.11.2010 Николай
Переменные отправляются, но вот как быть если скрипт после ввода переменных, перенаправляет на другую страницу, содержимое которой и надо обработать?





21.11.2010 Redfern.89
Огромное спасибо! очень нужная вещь!



21.11.2010 Админ
Николай, ну это уже тема другая.
Вам нужно сначала определить как происходит перенаправление, с помощью заголовков сервера, например 301 или перенаправление указано в html с помощью мета тега <META HTTP-EQUIV="REFRESH"...

Если перенапрвляется через заголовки сервера, то после отправки переменных на сервер обрабатывайте заголовки, находите адрес, на который происходит перенаправление и запрашивайте эту страницу и обрабатывайте ее...

Если переадресация идет через мета теги, тогда вам предется парсить html и выдергивать уже из мета адрес и так же запрашивать его и уже обрабатывать.

Только в этих случаях вам скорее всего потребуется еще передача КУК. Такие переадресации скорее всего устанавливаются после входа по логину и паролю, а значит переадресация на другую страницу тянет с собой куки, поэтому после отправки переменных вам нужно обработать заголовки на предмет наличия в них кук, если сервер послал вам в ответ еще и куки, то при переходе на следующую страницу нужно послать их в заголовках, точно так же как посылаются все остальные заголовки типа user-agen и т.д.



22.11.2010 Николай
Спасибо, будем пробовать



26.11.2010 псих99
полезно - очень мне помог спасибо



08.12.2010 Андрей
Здравствуйте!
Прекрасный код, огромное спасибо.
Возник вопрос.
Если данные отправляются из формы, то при отправке управление передается на ту страничку куда ушли данные.
Как сделать то же самое, если отправлять данные методом POST скриптом.




08.12.2010 админ
Андрей, что то совсем не понятен вопрос.
Если вы имеете ввиду, что после отправки данных в браузер грузится та страница на которую отправлены данные, то можно просто получить ответ от сервера и его показать. Это и будет та страница, на которую отправлены данные.
Либо после отправки данных перебросить браузер на ту страницу.
Все зависит от конкретного случая, в разных случаях все по разному.



08.12.2010 Андрей
Если конкретнее, мне именно нужно передейти на ту страницу. Скрипт пишется для эквайринга, и переход осуществляется на страницу, которая находится на другом сервере.
В тестовом режиме, если я перехожу с помощью хидера Location (или мета-тега), то страница делает рефреш без посланных мною данных методом POST.

Схема "передачи" данных такая между участниками обмена данными:
"Наш сайт" -> "Банк" -> "Платежная система" -> "Банк" -> "Наш сайт" "Банк" -> "Наш сайт".



09.12.2010 админ
Андрей, ну если вам нужно отобразить именно ту страницу, которая выдается именно после отправки POST, то нужно выводить результат ответа сервера.
То есть тут уже надо писать скрипт, похожий на анонимайзеры.
Выводить результаты ответа сервера. Но перед отображением нужно будет перебрать весь html, если найдутся например картинки или стили, то нужно будет обработать эти ссылки, если они указаны относительно того сайта, то естественно их переделать.
Просто передать данные и перекинуться на ту страницу не получится.
Так можно сделать только формой.

Можно еще получить заголовки сервера после отправки данных, там наверняка будет установлена сессия в куках. И эту сессию попробовать вставить в адрес, по принципу test.ru/index.php?PHPSESSID=e591e8ab5392a486a60f208487152348
И вот так попробовать уже сделать хидер Location с такой ссылкой.

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



10.12.2010 Андрей
Спасибо. Я вчера вроде докрутил скрипт. Все работает вроде. Хотя были моменты, когда клаву сломать хотелось :)



19.01.2011 yoyoshi
Здраствуйте уважаемые, подскажите плиз, правильно я сдела.
Необходимо получить текстовые переменные из формы расположеной на странице raschet_zakaza.php.
я так понял что в $data мне нужно их же указаь , так ли? И вставть этот код в ту старницу в которую я хочу вставить эти значения.?
<?
$data="name&email&tel&totalamountTax";
$fp = fsockopen("127.0.0.1", 80, $errno, $errstr, 10);
$out = "POST /raschet_zakaza.php HTTP/1.1\n";
$out .= "Host: 127.0.0.1\n";
$out .= "Referer: 127.0.0.1/\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x-www-form-urlencoded\n";
$out .= "Content-Length: ".strlen($data)."\n\n";
$out .= $data."\n\n";
//fputs($fp, $out);
//fclose($fp);
?>



21.01.2011 админ
yoyoshi, совсем все не так.
Если честно, то даже не понятно, что хотите сделать?
Форма расположена на странице raschet_zakaza.php, но совершенно не важно на какой странице расположена форма, важно куда форма отправляет данные.

$data="name&email&tel&totalamountTax";
А это список пустых переменных, которые передаются на страницу с формой.

Вообщем не понятно, что конкретно то хотите сделать?
Зачем вы в форму хотите передать переменные?



29.01.2011 slade
уважаемый админ, у меня проблема. хочу со своего сайта отправить данные на другой для того чтобы залогиниться на нём. вот что я сделал
$x = "n=$n&p=$p";
$fp = fsockopen("bgmag.ru", 80, $errno, $errstr, 10);
$out = "POST /login.php HTTP/1.1\r\n";
$out .= "Host: bgmag.ru\n";
$out .= "Referer: slade-x.org.ua\n";
$out .= "User-Agent: Opera\n";
$out .= "Content-Type: application/x- www-form-urlencoded\n";
$out .= "Content-Length: ".strlen ($x)."\n\n";
$out .= $x."\n\n";
fputs($fp, $out);
fclose($fp);

но ничего не работает :( можете подскажете в чем проблема?



29.01.2011 админ
slade, а что именно не работает?
В данном примере не возможно понять работает или нет.
происходит отправка каких-то данных и все.
возможно залогинивание прошло, ведь для того, чтобы понять работает или нет нужно получить ответ от сервера, что он там ответит.



02.02.2011 Максим
спасибо. отличная статья.



27.02.2011 Александр
CУПЕР!!! Спасибо огромное


1 2 3 4 5 6 7

Добавить свой комментарий


Ваше имя(* обязательно)


Текст сообщения(* обязательно)









 
 
  запомнить

 
Copyright © 2003-2017 WeBi Constructor
Rambler's Top100