質問: "認証用ファイルが置いてある外部サイトのURL"; echo file_get_contents($url, false, stream_context_create($context)); ?> ``` 尚、PHPを使わず、HTMLのFormタグとJavascriptの組み合わせ(Formタグに予めPOSTデータを仕込んでおき、Javascriptに自動でSubmitさせる方法)であればうまくいきますが、今回は、PHPで実装することを目標としています。 ブラウザからのリクエストと、サーバからのリクエストで、HTTPリクエストヘッダが違うことが原因かとも思ったのですが、自己解決できず、質問させていただくに至りました。 そもそも、この方法(file_get_contentsを用いたPOSTリクエスト)で外部サイトの認証は突破できますでしょうか? お詳しい方のご意見をお待ちしております。
回答: フォームを使ってログインするサイトの場合、たいていの場合cookieでセッション管理していますので、cookieを適切に取り扱う必要があります。PHPの`file_get_contents`はcookie管理機能を持っていないように思われますので、自分でレスポンスヘッダからcookieを取り出したり、リクエストヘッダにcookieをつけてあげる必要があるでしょう。 また、いきなり認証情報をPOSTしていますが、ログインフォームが表示されている画面でセッションを開始してあげないといけないかもしれません。 後はリクエスト/レスポンスをブラウザでやる場合とプログラムでやった場合で見比べて差を見つけていくしかありません。