これは通常私のために働くものです
$timeout=5;
$file='cookies.jar';
$this->handle=curl_init('');
curl_setopt($this->handle, CURLOPT_COOKIEFILE, $file);
curl_setopt($this->handle, CURLOPT_COOKIEJAR, $file);
curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($this->handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($this->handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 (.NET CLR 3.5.30729)");
curl_setopt($this->handle, CURLOPT_TIMEOUT, round($timeout,0));
curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT, round($timeout,0));
そして私は一般的にこのようにそれを使用します
$now=grab_first_page();
if(not_logged_in($now)) {
send_login_info();
}
if(not_logged_in()) { end_of_script_with_error(); }
// rest of script
このようにして、Cookieはセッション間で保持され、スクリプトは何かを実行するたびにログインする必要がありません。
---以下の説明----
オブジェクトを使用していますが、$ this->handleを$mycurlという名前の単純な変数に置き換えることができ、行は次のようになります。
$mycurl=curl_init(''
curl_setopt($mycurl, CURLOPT_COOKIEFILE, $file)
以下のコードは次のとおりです。-「curlインスタンス」を初期化します(単純にするため)(3行目)-4行目と5行目:Cookieをファイルに保存します。Curlはブラウザと同じように機能するため、curlを使用してページにログインすると、認証データを含むCookieがメモリに保持されます。スクリプトを2回実行したときに同じCookieが使用され、再度認証する必要がないように、ファイルに保存するように指示しています。または、同じCookieファイルを使用して複数のスクリプトを作成し、24時間ごとまたはログアウトするたびに実行するログイン用のスクリプトを1つだけ作成することもできます...-その他の設定:* followlocation-curlがhttpリダイレクトを受信すると、リダイレクトされたページであり、リダイレクトコードではありません*useragent-curlはfirefoxとして表示されます*timeout-接続が確立されるまでどのくらいの時間を待つ必要がありますか
私はここで使用する簡単なクラスを置きましたhttp://pastebin.com/Rfpc103X
このように使用できます
// -- initialize curl
$ec=new easyCurl;
// -- set some options
//if the file you are in right now is named file_a.php it will create a file_a.jar cookie file
$ec->start(str_replace('.php','.jar',__FILE__));
$ec->headersPrepare(false);
$ec->prepareTimeOut(20);
$url='http://www.google.com/';
// --- set url
$ec->curlPrepare($url);
// --- get the actual data
$page=$ec->grab();
echo $page;
// to send GET data
$get_data=array('id'=>10);
$ec->curlPrepare($url,$get_data);
// and to post data
$post_data=array('user'=>'blue','password'=>'black');
$ec->curlPrepare($url,array(),$post_data);
POST/GETや私が通常遭遇する他のオプションの設定を自動的に処理します。上記の例がお役に立てば幸いです。幸運を。