Как я могу войти в удаленный сайт с CURL PHP, затем перенаправить на этот сайт

StackOverflow https://stackoverflow.com/questions/3676098

  •  01-10-2019
  •  | 
  •  

Вопрос

Я видел, как это спросил несколькими способами, но не могу найти ответ, который работает.

Я создал страницу, которая регистрирует на удаленный сайт на основе .NET, используя PHP / CURL. Работает отлично, насколько он идет - я могу вернуть данные с зарегистрированной страницы через curl_exec и делать все, что я В самом деле Нужно сделать это перенаправить пользователя на эту страницу. Просто перенаправление дает мне страницу выхода на удаленный сайт. Я знаю, что ответ в том, чтобы получить файл cookie, который возвращается, когда скручивается журналы, а затем передавать его во втором вызове. Отказ Отказ как-то. Я уверен, что кто-то должен Делать это и может обеспечить рабочий пример. Пожалуйста, помогите - это ездит мне орехи!

Спасибо,

отметка

Это было полезно?

Решение

Неудивительно, что вы не можете найти ответ, который работает.
Это невозможно.

Другие советы

Проблема в том, что логин придет с вашего PHP-сервера, а не из IP-адреса конечного пользователя, поэтому, когда вы перенаправляете пользователя, сайт, вероятно, не увидит их как войти в систему.

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

Если у вас полный контроль над обоими сайтами, и они могут получить доступ к базам данных для каждой другой, вы можете записать несколько задних конечно-кода, чтобы PHP-сервер сообщает .NET-сайт ожидал, что входящий пользователь; Это может работать. Но вам нужно будет выполнить некоторую спину работать в обеих системах.

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

Если сайт использует cookies, вы можете использовать Curl.

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, "User=$user&passwd=$passwd");
curl_setopt ($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_NOBODY, TRUE);

$header = curl_exec($ch);

if (preg_match("/set-cookie:(.*)\n", $header, $m)) {
  $cookies = preg_replace('/(expires|path|domain)=[^;]*;?/i', '', $m[1]);
  header("Cookies: " . $cookies);
  header("Location: $url");
}

Это должно работать, но я не проверю его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top