У меня есть следующий код для входа в систему в приложение внешнего сайта (приложение asp.net) от локальной формы входа в систему сайта (записанный в php):
<?php
$curl_connection = curl_init('www.external.com/login.aspx');
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
// Post data array
$post_data['LoginControl$UserName'] = 'ExampleUName';
$post_data['LoginControl$Password'] = 'ExamplePWord';
// Add form fields into an array to get ready to post
foreach ($post_data as $key => $value)
{
$post_items[] = $key . '=' . $value;
}
$post_string = implode ('&', $post_items);
// Tell cURL which string to post
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
// Execute and post
$result = curl_exec($curl_connection);
?>
Я направлен к форме входа в систему внешнего сайта вместо того, чтобы быть направленным к зарегистрированному приложению. Я думаю, что проблема состоит в том, что я должен передать значения состояния отображения через, но я не уверен, как пойти о выполнении этого?
Я не управляю внешним приложением. Но мы хотим, чтобы пользователи смогли войти в приложение через наш веб-сайт, поддержать брендинг и т.д.
Я недавно отправил несколько других потоков об использовании ЗАВИХРЕНИЯ php, но я на этапе теперь, где я думаю, что состояние отображения является проблемой...
Спасибо, Mark.
Изменение:
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
Кому:
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, false);
Вам также необходимо настроить файл cookie, посмотрите CURLOPT_COOKIEFILE
CURLOPT_COOKIEFILE
:
Имя файла файл, содержащий данные cookie. Файл cookie может быть в формате Netscape или просто заголовками в стиле HTTP, выгруженными в файл.
CURLOPT_COOKIE
:
Содержимое заголовка «Cookie:», которое будет использоваться в HTTP-запросе. Обратите внимание, что несколько файлов cookie разделяются точкой с запятой, за которой следует пробел (например, «fruit = apple; color = red»)
CURLOPT_COOKIEJAR
:
имя файла для сохранения всех внутренних файлов cookie, когда соединение закрывается.
@see http://www.php.net/manual/en/function.curl-setopt.php
curl_setopt($curl_connection, CURLOPT_COOKIEFILE, 'cookiefile.txt');
curl_setopt($curl_connection, CURLOPT_COOKIEJAR, 'cookiefile.txt');