Как я могу войти на удаленный сайт с помощью PHP cURL, а затем перенаправить на этот сайт - PullRequest
0 голосов
/ 09 сентября 2010

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

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

Спасибо

Mark

Ответы [ 3 ]

2 голосов
/ 09 сентября 2010

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

1 голос
/ 09 сентября 2010

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

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

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

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

0 голосов
/ 09 сентября 2010

Если сайт использует куки, вы можете использовать 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");
}

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

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