2017-01-18 13 views
1

http://www.domain.com/profileなどのページにアクセスしようとしています。アクションURLとログインURLは同じで、認証のためにクッキーをhttp://www.example.com/cookies.txtに保存しようとしています。ここで私が使用しているコードは次のとおりです。クッキーでcURL PHPリクエストが行われた場合の不正アクセス

$loginURL = 'http://www.domain.com/login'; 
$COOKIE_FILE = 'http://wwww.example.com/cookies.txt'; 
$postValues = array(
    'username' => 'myusername', 
    'password' => 'mypassword' 
); 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $loginURL); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues)); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_COOKIEJAR, $COOKIE_FILE); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Chrome/35.0.2309.372'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_REFERER, $loginURL); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_exec($curl); 
if(curl_errno($curl)){throw new Exception(curl_error($curl));} 

// now we are logged in, attempt to access a password-protected page 
curl_setopt($curl, CURLOPT_URL, 'http://www.domain.com/profile'); 
curl_setopt($curl, CURLOPT_COOKIEJAR, $COOKIE_FILE); 
curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
echo curl_exec($curl); 

カールの要求が成功しているように思えるが、私は、「不正アクセス」を言って、サーバーからページをエコー取得しています。私のクッキーシステムは正しく動作しているとは思わない?それをどうやって確認できますか?どうすれば修正できますか?

答えて

1

CURLOPT_COOKIEFILEをCURLOPT_COOKIEJARと同じパスに設定します。 curlはファイルから読み取り、jarに書き込みます。

ETA:スクリプトがうまくいかない理由の1つは、2番目のリクエストの最初のリクエストからCookieデータを送信しないことです。

+0

私はこれを試しましたが、うまくいきませんでした。 'echo file_get_contents($ COOKIE_FILE)'で$ COOKIE_FILEの内容を見ることができるはずですが、空白です。 – Wagtail

+0

クッキーデータを送信しないことの意味を説明できますか?どうすればいい? – Wagtail

+1

私はちょうど最初の文章を言い換えようとしました。ファイルから読み取るにはクッキーファイルが必要です。しかし、なぜファイルを作成できないのかわかりません。たぶん、まずローカルファイルを試してみてください。または、CURLOPT_VERBOSEをCURLOPT_STDERRと組み合わせて使用​​します。 – jh1711

0

実際の回答は、ログインがCASを経由していたため、より複雑な認証プロセスが必要でした。しかし、上記のコードではCURLOPT_COOKIEFILECURLOPT_COOKIEJARが不適切に使用されていたので、私はこれらの修正を行った後、私はアプローチの再作業が必要であることを発見しました。

関連する問題