За последние 24 часа нас посетили 18835 программистов и 1630 роботов. Сейчас ищет 871 программист ...

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

Тема в разделе "Прочие вопросы по PHP", создана пользователем rambap, 29 мар 2013.

  1. rambap

    rambap Активный пользователь

    С нами с:
    22 мар 2013
    Сообщения:
    25
    Симпатии:
    0
    Мне нужно отправить на определенный скрипт POST запрос и затем перейти на этот адрес, чтобы был виден результат POST запроса.

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

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

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    php.net/manual/ru/function.header.php ?
     
  3. rambap

    rambap Активный пользователь

    С нами с:
    22 мар 2013
    Сообщения:
    25
    Симпатии:
    0
    не работает - header() просто редиректит на url, результата post запроса не видно
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    На php так нельзя сделать!
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    переход - нельзя, но то что он там ответил можно вывалить на экран.
     
  6. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    igordata,
    Ему после сокета нужно сразу перейти на файл и тут же отправить пост и вывести, так сделать нельзя на php...
    Он не умеет сам отправлять, как javascript например.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ответ в стиле саги о гарри поттере:

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