Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/10: Рейтинг темы: голосов - 10, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 20
1

Как отправить пост запрос и сделать редирект на УРЛ

29.03.2013, 04:14. Просмотров 2034. Ответов 3
Метки нет (Все метки)


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

С помощью кода ниже я отправляю POST запрос на url. А как сделать чтобы при переходе на файл с этим кодом на заданный url осуществлялся POST-запрос и переход на этот урл? Помогите пожалуйста

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// Отправляем POST запрос с помощью fsockopen()
 
//открываем сокет к http://www.example.loc на 80-й порт с таймаутом в 30 секунд
$socket = fsockopen($url, 80, $errno, $errstr, 30);
 
//если fsockopen вернула false, то завершаем работу скрипта и выводим текст и номер ошибки
if(!$socket)die("$errstr($errno)");
 
//собираем данные
$data = "purse=".urlencode($purse)."&order_id=".urlencode($order_id)."&amount=".urlencode($amount)."&amount=".urlencode($amount)."&description=".urlencode($description)."&sign=".urlencode($sign);
 
//пишем в сокет метод, URI и протокол
fwrite($socket, "POST ".$uri." HTTP/1.1\r\n");
//а также имя хоста
fwrite($socket, "Host: ".$url."\r\n");
 
//теперь отправляем заголовки
//Content-type должен быть applicaion/x-www-form-urlencoded
fwrite($socket,"Content-type: application/x-www-form-urlencoded\r\n");
//размер передаваемых данных передаем в заголовке Content-length
fwrite($socket,"Content-length:".strlen($data)."\r\n");
//типы принимаемых данных. */* означает, что принимаем все типы данных
fwrite($socket,"Accept:*/*\r\n");
//представимся оперой
fwrite($socket,"User-agent:Opera 10.00\r\n");
fwrite($socket,"Connection:Close\r\n");
fwrite($socket,"\r\n");
 
//теперь передаем данные
fwrite($socket,"$data\r\n");
fwrite($socket,"\r\n");
 
//читаем и выводим ответ (ВМЕСТО этого нужно перейти на $url)
/*
$answer = '';
while(!feof($socket)){
  $answer.= fgets($socket, 4096);
}
echo $answer;
 
*/
 
 
//закрываем сокет
fclose($socket);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2013, 04:14
Ответы с готовыми решениями:

Как отправить пост-запрос с символами типа '[{|\/% ?
Как отправить пост запрос с символами типа...

Отправить файл/изображение через пост запрос
Собственно, сабж в топике. Пробовал бусты для отправки пост - работает, но файл не хочет слать,...

Как правильно сделать пост запрос json?
День Добрый. Пишу небольшой сервис для локального osm сервера. Встала проблема с пост запросом на...

Отправить пост запрос по протоколу https формат xml на адрес и получить ответ
Нужно отправить пост запрос по протоколу https формат xml на адрес и получить ответ. Параметры...

3
Не мoдepaтор
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,026
Записей в блоге: 7
29.03.2013, 04:30 2
я для этого использовал курл, у вас есть возможность использовать курл?
если есть, я напишу код
0
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 20
29.03.2013, 14:26  [ТС] 3
да, есть, напишите пожалуйста
0
Не мoдepaтор
340 / 315 / 94
Регистрация: 07.07.2012
Сообщений: 1,026
Записей в блоге: 7
29.03.2013, 16:48 4
вот примерно так, должно работать
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
// header('Content-type: text/html; charset=windows-1251'); или  // header('Content-type: text/html; charset=UTF-8'); // выберите кодировку какую использует сайт-донор
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,"http://www.site.ua/add"); // куда отправляем пост запрос
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17');
curl_setopt($ch, CURLOPT_REFERER, "http://www.site.ua/tovar");  // с какой страницы отправляем пост
curl_setopt($ch, CURLOPT_PORT, 80);
curl_setopt($ch, CURLOPT_POSTFIELDS, "order_id=0&pay_type=5&comments=&delivery_type=7&form_action%5Bsave_1%5D=%"); // сам пост запрос 
$result = curl_exec($ch);
curl_setopt($ch, CURLOPT_URL,"http://www.site.ua/orders");  // куда идем после отправки пост
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17');
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Как узнать какой правильный запрос послать, надеюсь вы знаете

Добавлено через 1 час 57 минут
забыл о тайм-ауте, замените вот на это
PHP
1
2
3
curl_setopt($ch, CURLOPT_POSTFIELDS, "order_id=0&pay_type=5&comments=&delivery_type=7&form_action%5Bsave_1%5D=%"); // сам пост запрос 
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // добавлено
$result = curl_exec($ch);
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2013, 16:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как определить урл скрипта, который передаёт пост переменные или самой формы?
Подскажите, как определить урл скрипта, который передаёт пост переменные или самой формы? Я так...

УРЛ без post_id - как написать редирект?
Были УРЛ вида http://site.ru/avto/369-mazda.html поменял на http://site.ru/avto/mazda.html. Как...

Как отправить пост не субмитом?
Привет всем Помогите пожалуйста я уже 3 день ищу как такое сделать хочу сделать чтобы отправить...

Как отключить редирект на пост по старому урлу?
Приветствую. Может кто сталкивался с таким явлением... Поменял я урл на пост. был site.com/url1 а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.