URLを取得パラメータとして取得するスクリプトがあり、そのページの内容をファイルに書き込もうとします。認証されていないページでは正常に動作しますが、認証が必要なページで使用しようとすると破損します。すでにログインしている場合、PHP cURLが認証済みサイトに入ります
私はすでににログインしているので、現在設定されているすべてのクッキーが機能する標準のcURLリクエストを作成すると仮定しましたが、そうではありません。当初、私は302レスポンスを受け取りましたが、 'FOLLOWLOCATION'をtrueに設定すると、私は自分が望むページの代わりにサイトのログインページに行きました。
$client = curl_init();
//curl_setopt($client, CURLOPT_HEADER, true);
curl_setopt($client, CURLOPT_RETURNTRANSFER, true);
curl_setopt($client, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($client, CURLOPT_URL, $pageToLoad);
/* Supposedly libcurl loads all cookies auto-magically if you don't set CURL_COOKIESESSION
if (isset($_SERVER['HTTP_COOKIE'])) {
curl_setopt($client, CURLOPT_COOKIE, $_SERVER['HTTP_COOKIE']);
}
*/
$response = curl_exec($client);
curl_close($client);
私はこれが機能するためのCookieJarファイル(私のスクリプトは、devのサーバー上の書き込み権限を持っていないため、「沈没」)を設定する必要があります沈没感を持っていますが、あなたのものです思考?
EDIT: だから、馬鹿の一種であること、とにかく...私はいくつかの書き込みアクセス権を持っているが判明し、私は私のスクリプトを書くことができます確認した私のホームディレクトリに一時フォルダを作っ:
$fname = '/home/temp/cookies.txt';
if($save = fopen($fname, 'w')) {
fwrite($save, 'testing');
}
スクリプトを実行すると、「テスト」が1行目に表示されます。
私は私のcURLのリクエストに次の2行を追加しました:
curl_setopt($ch, CURLOPT_COOKIEJAR, '/home/temp/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/home/temp/cookies.txt');
を、何も私のシナリオでは変わっていません。 cookies.txtファイルはまだ 'testing'と表示されており、クッキーは保存されておらず、最後のアクセス時間も変更されていません。
これ以上の考えはありますか? \
はい、この形式の認証が機能すると思われる場合は、あとからすべてのCookieを使用してリクエストを行う必要があります。 – Brad
あなたはリクエストされたサーバーのソースにアクセスできますか? – bensiu
いいえ、私は要求されたサーバーへのアクセスを持っていません – wolv2012