Отправка POST на URL - PullRequest
       9

Отправка POST на URL

1 голос
/ 08 марта 2020

Я хочу перенаправить страницу PHP на другую, отправив ей данные методом HTTP POST .

Я не могу использовать cURL, потому что мне нужны относительные URL (функция будет вызываться из разных мест), поэтому я нашел эту функцию в Интернете:

function head($url)
{
    $string = http_build_query($GLOBALS['new']);//$GLOBALS['new'] is an array containing some variables and I already tested it using var_dump()

    $options = array('method'=>'POST', 'header'=>'Content-type: application/x-www-form-urlencoded', 'content'=>$string);
    file_get_contents($url, false, stream_context_create(array('http'=>$options)));

    echo error_get_last()['message'];//temporary to see the error message

    header("Location: $url");
}

Я бы вызвал ее, набрав head(".?result=success) или что-то в этом роде ...


Проблема в том, что я получаю это сообщение об ошибке

file_get_contents(.?result=success): failed to open stream: No error

, и страница назначения ничего не получает.


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

Можете ли вы найти способ заставить его работать?

Или, если это невозможно, можете ли вы предложить мне другой способ отправки HTTP POST с использованием относительного URL-адресов

1 Ответ

1 голос
/ 08 марта 2020

Это рабочий пример кода, который я использую в своем пользовательском классе сайтов для входа в систему

$url = 'http://' . $_SERVER['HTTP_HOST'];            // Get the server
$url .= rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); // Get the current directory
$url .= 'index.php?error';            // <-- Your relative path
header('Location: ' . $url, true, 302);
exit;

Затем в моем индексе. php Страница У меня есть оператор if, который оценивает

if(isset($_GET[error])){ //set error message and handle error }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...