2016-09-24 1 views
0

Я пытаюсь использовать кнопку на своем веб-приложении php для запуска сеанса входа в систему на другом веб-сайте. Другими словами, я хочу, чтобы мое приложение к:Headless Login: войдите в систему и откройте удаленную сессию с помощью cURL

  1. открыть новую вкладку/окно (достигнутый)
  2. перейти на другой сайт + логин или
  3. (альтернативно) собирают данные сессии, необходимые для целевого сайта на рассмотреть текущий браузер авторизованы

Это достигается (в неполной форме с помощью следующего кода:.

$ch = curl_init(); 
    curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
    curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_POSTFIELDS,$postdata); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 

    $result = curl_exec ($ch); 
    curl_close ($ch); 

    print $result; 

Это успешно визуализирует страницу «вошедшей в систему» ​​на удаленном сайте, но всякий раз, когда я нажимаю на любую из функций такого удаленного сайта, я получаю и явный 404. Это потому, что я просто печатаю вывод успешного входа через cURL и мой браузер не имеет дело с удаленным приложением на целевом веб-сайте. Например. моя адресная строка говорит, что я нахожусь в local.dev/loggedin.php, а не на secure.targetsite.com/loggein.php.

Возможно, это полезно: после входа в систему через браузер целевой веб-сайт устанавливает cookie сеанса, который позволяет сеансу выжить в течение определенного количества времени, что также может быть полезно. Могу ли мое веб-приложение просто извлекать и хранить данные сеанса из процедуры auth, выполняемой curl, и использовать ее для входа?

Это не могло бы быть возможно сделать через CURL ..

Я думал только разбор заголовка ответа для печенья и использовать PHP SetCookie(), но он не работает: я получаю отскочил от пульта дистанционного управления app, как будто я так и не был зарегистрирован.

Пожалуйста, будьте терпеливы, я не эксперт в использовании завитка.

+0

Вы правы, это невозможно с помощью cURL. И вы не можете установить cookie для других доменов. – CBroe

+0

, в каком случае вы могли бы подойти к этой проблеме, если бы хотели создать безликий вход на другой сайт? – artoo

ответ

0

Я сделал это для нескольких своих приложений, но он должен работать практически для всего, что может быть зарегистрировано посредством отправки формы html. Вы не можете использовать завиток для этого, потому что он работает на вашем веб-сервере (независимо от того, находится ли он на вашем локальном компьютере или в облаке где-то неактуально) и фактически не выполняется вашим браузером. Вашему PHP-приложению необходимо открыть новую вкладку/страницу со страницей, содержащей HTML-код, который включает все необходимые поля, метод = «получить» или «отправить» по мере необходимости, а action = «URL-адрес назначения для входа». Затем просто добавьте автоматическое представление формы, например, с jQuery $('#form_id').submit() при загрузке страницы.

Смежные вопросы