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 комментарии


14.02.2010 админ
epoy@bk.ru, вопрос не понятен, от куда данные не передаются пока не считаются?



18.02.2010 bazadaykin
тут народ интересовался как массив передать. есть в пхп такая пара функций serialize($var) и unserialize($var). занимаються они тем, что преобразуют $vsr (буть то массив, объект, строка или еще какая хрень) в в набор байтов (если упростить, то можно сказать что в строку). соответственно эту "строку" можно потом передать любым из методов. таким образом не надо передавать массив вот так:
$out="$array1=a&array2=b"

все что вам нужно сделать на передающем конце
$data = "var1=abc&var2=123&myarray=".serialize($myarray);

и на принимающем конце
if (get_magic_quotes_gpc())$myarray = unserialize(stripslashes($_POST['myarray'])); else $myarray = unserialize($_POST['myarray']);

про get_magic_quotes_gpc() уточняю. при передачи данных POST (и GET кажеться тоже) специальные символы проходят экранирование. т.е если в исходной строке у вас было K'mon, то после передачи на принимающем конеце будет K\'mon. если я не ошибаюсь в последних версиях php этого не делаеться, но тем не менее. так вот get_magic_quotes_gpc() как раз и говорит, применялось ли экранирование или нет. если экранирование было, значит надо убрать экранирующий \, т.е при serialize активно используються всякие слеши, апостровы и т.д. для этоко как раз и используется stripslashes. если stripslashes тыкать в любом случае (без проверки) то рискуете убрать спецсимвол там где он нужен.



18.02.2010 bazadaykin
дополню к предыдущему посту.

этот подход будет работать если такой способ передачи массивов предусмотрен принимающей стороной (ну например вы сами и пишете принимающий скрипт). тогда это очень удобно. не надо париться и воротить переборы массивов для того чтобы сформировать из него строку. а если еще массив многомерны.... вообщем, надеюсь облегчил жизнь комунить.



02.03.2010 Maxik
Тема КУЛ!!!
В учебниках них... нету тут нашел!
Автору огромное спасибо!



25.03.2010 Kostyan1488
Отличная статья, автору спасибо!



08.04.2010 boris
thx



29.04.2010 Max
Big thanks!



08.05.2010 Игорь
Пасиба бальшой



18.05.2010 Кирилл
Попробовал я использовать ваш пример. И не увидел на экране что получилось. Скопировал все в файл и нажал в эксплоре обновить. И как я понял принимающая часть ничего не приняла и не вывела на экран. Можно более детальный алгоритм)))
Заранее спасибо



18.05.2010 Кирилл
Дополнение.
Что мне нужно то. Отправить запрос на сайт и получить весь ответ сгенерированной сайтом странички



19.05.2010 админ
Кирилл, а разве данный код не показывает ответ сайта?
while($gets=fgets($fp,2048))
{
print $gets;
}



19.05.2010 Кирилл
Вот именно что не показывает.
Молчит как партизан. Доходит до этой функции и все тишина. Мб есть готовый пример рабочий в смысле сами файлы. Мало ли я чего не так применяю.



20.05.2010 Админ
Кирилл, внес не большие поправки в код. Попробуйте передать данные слегка измененным способом.
Обязательно отпишитесь, получилось у вас что-то или нет.

<?
$url = "http://test.ru/patch/file.php?var=23&var2=54"; // это адрес, по которому скрипт передаст данные методом POST.
$parse_url = parse_url($url);
$path = $parse_url["path"];
if($parse_url["query"])
$path .= "?" . $parse_url["query"];
$host= $parse_url["host"];
$data = "var3=test&var4=".urlencode("еще тест");

$fp = fsockopen($host, 80, $errno, $errstr, 10);
stream_set_blocking($fp,0);
stream_set_timeout($fp,3600*24);

if ($fp)
{

$out = "POST ".$path." HTTP/1.1\n";
$out .= "Host: ".$host."\n";
$out .= "Referer: ".$url."/\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); // отправляем данные
sleep(1);

while($gets=fgets($fp,2048))
{
print $gets;
}
fclose($fp);
}
?>



24.05.2010 Кирилл
Сработал код до конца, но то что я отправил так и не увидел. Я писал не test.ru, а localhost, по идеи это же не должно влиять.
Я создал файл file.php и скопировал код, правда <?php добавил (оказалось чувствительно к этому) и запускаю.
Но так и не увидел, то что оправил. Отладчик бы какой посоветуйте.



24.05.2010 админ
Кирилл, отладчик очень простой.
Посылаете данные в свой файл (например в 1.php) и в этом файле просто пишите
<?php
print_r($_POST);
print_r($_GET);
?>
После отправки данных в этот файл на экране увидите данные(POST и GET), которые пришли...
Вот и весь отладчик.



21.06.2010 pyt_on
Большое спасибо. Статья очень помогла!!!



10.07.2010 Евгений
вот было бы всегда все так просто...)



15.09.2010 Алексей
Здравствуйте. У меня проблема, сервер отвечает вот такую хрень, что делать ?

HTTP/1.1 400 Bad Request
Server: nginx/0.7.62
Date: Wed, 15 Sep 2010 07:42:27 GMT
Content-Type: text/html
Content-Length: 271
Connection: close

Это явно не страничка, а чтото непонятное (((
Помогите плиз.....



15.09.2010 Алексей
Порт пришлось поменять с 80 на 443, т.к. там он HTTPS



15.09.2010 Админ
Алексей, ну эта ошибка говорит о не правильном запросе.
Скорее всего ошиблись в отправке заголовков. Может где то кавычка опущена или перенос забыли...


1 2 3 4 5 6 7

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


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


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









 
 
  запомнить

 
Copyright © 2003-2017 WeBi Constructor
Rambler's Top100