タイトルが示唆するように、ログインが必要なサイトで(複数の)ページの内容を取り戻そうとしています。これは正当なログインであり、私はコンテンツにアクセスできます。ログイン後にリモートファイルの内容を取得する
私はSOを検索して、同じことを試みているポスターをいくつか見つけました。この特定の問題の原因は何も見つかりませんでした。
私はいくつかのバリエーションを試しました - FOLLOWLOCATIONのようなさまざまなオプションを追加しました(trueに設定してからfalseに設定しようとしました)。タイムアウトを増加させる。 COOKIEJARとCOOKIEFILEの両方を設定します。ログイン後にcurl_closeを呼び出すと、(ターゲットファイルをロードする前に)新しいcurl_initが実行されます。従来のPHPメソッドを使用してファイルを取得します(file_get_contentsなど)。明示的にクッキーファイルを作成し、それを書き込み可能に設定します。 REFERERの有無にかかわらず試しました。 REFERERを変更しようとしました。 httpとhttpsの両方のプロトコルを試しました。最初にcurl_closeを1回呼び出してクッキーを書き込むようにしてから、すぐにスクリプトブロックを実行してみました。等...運がいいな。
以下は、使用中のコードのスナップショットです(今のところ1つのファイルを取得しようとしています)。
何か提案がありがとうございます。
$e = curl_init();
curl_setopt($e, CURLOPT_URL, 'https://www.some-site.com/login.php');
curl_setopt($e, CURLOPT_POST, 1);
curl_setopt($e, CURLOPT_POSTFIELDS, 'username=bob&password=1234');
curl_setopt($e, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($e, CURLOPT_REFERER, 'https://www.some-site.com');
curl_setopt($e, CURLOPT_RETURNTRANSFER, 1);
curl_exec($e);
curl_setopt($e, CURLOPT_URL, 'https://www.some-site.com/posts.php?id=1');
$content = curl_exec($e);
print htmlentities($content);
curl_close($e);
実際のエラーはありません - カールはそれのようにする必要があり取り組んでいるが、$コンテンツは、「ログインしていない...今ログインしてください...」ページに設定されているが。
ブラウザ(Fx、Chrome、Safari、IE)経由でログインした後、各投稿に問題なくアクセスできます。
私は困惑しています。
TYIAどのような提案についても - 追加情報があれば、LMKを参考にしてください。
は 'https://でwww.some-site.com/login.php'ユーザ名とパスワードが掲載されている場所への実際の提出スクリプト? – tradyblix
@tradyblix - はい、ログインフォームの動作です - ログインフォームがhttp://www.some-site.com/login.htmlであると仮定します。私はそれを言及すべきだった。 – momo
最初のリクエスト(login.php)で '$ content = curl_exec($ e);'を実行し、 '$ content'をダンプするとどうなりますか? – tradyblix