2016-09-24 2 views
0

私のphpウェブアプリケーションのボタンを使用して、別のウェブサイトでログインセッションを開始しようとしています。言い換えれば、私はに自分のアプリケーションたい:ヘッドレスログイン:ログインしてcURLを使ってリモートセッションを開く

  1. (達成)新しいタブ/ウィンドウを開くには、別のWebサイト+ログインまたは
  2. に行く(代わりに)に標的部位に必要なセッションデータを収集ログインして現在のブラウザを検討

これは、次のコードで不完全な形で(達成されています。

$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私のブラウザは対象のWebサイト上のリモートアプリケーションを扱っていません。例えば。私のアドレスバーは私がlocal.dev/loggedin.phpにあり、secure.targetsite.com/loggein.phpにいるのではないと言います。

これは参考になるかもしれません:ブラウザーを介してログインすると、対象のWebサイトは、セッションが一定の期間生存できるようにセッションCookieを設定します。私のWebアプリケーションは、curlによって実行された認証プロシージャからのセッションデータをフェッチして保存し、ログインに使用できますか?これは、cURLを介して行うことができない可能性があります

..

私はちょうどクッキーのレスポンスヘッダを解析し、(PHPのますsetcookieを使用)が、それは動作しないと考えていた

:私は、リモートでバウンスを取得私が決してログインしていなかったかのようにアプリ。

私はカールの使用の専門家ではありません。

+0

あなたはそうです、これはcURLでは不可能です。また、他のドメインに対してもCookieを設定することはできません。 – CBroe

+0

あなたは別のウェブサイトへのヘッドレスログインを作成したい場合、どのようにこの問題にアプローチしますか? – artoo

答えて

0

私は自分のアプリケーションのいくつかでこれを行っていますが、htmlフォームの投稿を通じてログインできるほとんどのもので動作します。 Webサーバー上で実行されているため(ローカルマシン上またはクラウド上のどこかに関係なく)、実際にはブラウザで実行されていないため、このためにカールを使用することはできません。 PHPアプリケーションは、必要なすべてのフィールド、method = "get"または "post"、action = "destination login URL"を含むHTMLを含むページを含む新しいタブ/ウィンドウを開く必要があります。次に、ページの読み込み時にjQuery $('#form_id').submit()などの自動フォーム送信を追加するだけです。

関連する問題