今日もカールを学びましょう
PHP は、curl を操作するための一連のcurl_* 関数を提供します。
一般的に使用されるものは次のとおりです:
Curl_init は、curl セッションを初期化します
Curl_close これはもちろんクローズです - -!
Curl_error は現在のセッションのエラーメッセージを返します
Curl_errno エラー番号
Curl_setopt はオプションを設定します。この関数は非常に重要です
Curl_setopt_array これは上記のcurl_setoptと同じですが、一度に複数のオプションを設定できる点が異なります
Curl_exec はcurlセッションを実行します
これらはより一般的に使用される機能です。他の機能を使用したい場合は、Google を使用できます。
GET リクエストをシミュレートしてみましょう:
[php]
$ch =curl_init();//ここでセッションが初期化されます
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//$ch セッションに関連するアドレスを設定します
curl_exec($ch);//セッションを実行します
curl_close($ch);//セッションを閉じる
$ch =curl_init();//ここでセッションが初期化されます
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//$ch セッションに関連するアドレスを設定します
curl_exec($ch);//セッションを実行します
curl_close($ch);//セッションを閉じる
閲覧後はGoogleのホームページの内容がブラウザ上に出力されます。
もし私が彼にアウトプットをさせたくないが、戻ってきたらどうするか?
あとはオプションを追加するだけです。
[php]
$ch =curl_init();//ここでセッションが初期化されます
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//$ch セッションに関連するアドレスを設定します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // ここで、出力したくない、戻りたいことをcurlに伝えます
$data =curl_exec($ch);//実行中にcurlが返されます。はは、素直ですね…
curl_close($ch); //セッションを閉じる
$ch =curl_init();//ここでセッションが初期化されます
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');//$ch セッションに関連するアドレスを設定します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // ここで、出力したくない、戻りたいことをcurlに伝えます
$data =curl_exec($ch);//実行中にcurlが返されます。はは、素直ですね…
curl_close($ch); // 上記は GET リクエストをシミュレートするため、次は POST をシミュレートします。
[php] view plaincopyprint?//ここで実験を行うために独自のプログラムを使用しました。
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST アドレス
$query = 'name=xiaokai&password=xiaokai';//これが提出されたデータです
$ch =curl_init($url);//初期化中に URL アドレスを関連付けます
curl_setopt($ch, CURLOPT_POST, true); //post メソッドを使用したいことをここで伝えます
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//彼に投稿データを渡します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//出力したくないけどリターン
$data =curl_exec($ch);//OK、実行後に返されます。
curl_close($ch);//閉じる
echo $data;//ログインが成功したことを示す結果を出力します。
//ここでは実験に独自のプログラムを使用しました.. - -!
$query = 'name=xiaokai&password=xiaokai';//これが入稿データです
$ch =curl_init($url);//初期化中にURLアドレスを関連付けます
curl_setopt($ch, CURLOPT_POST, true); //post メソッドを使用したいことをここで伝えてください
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//彼に投稿データを渡します
curl_setopt($ch, CURLOPT_RETURTRANSFER, true);//出力したくない、戻りたい
$data =curl_exec($ch);//OK、実行後に返されます。
curl_close($ch);//閉じる
echo $data;//ログインが成功したことを示す結果を出力します。
コードは自分で書きます。コピーしないでください。コピーしても決して学ぶことはできないからです。
上記のコードを実行すると、ログインが成功したことを示すメッセージが表示され、ログインは成功します。
ただし、ログインが保存および更新されない場合、この問題はブラウザが Cookie を有効にしていないことに関連しています。
同じ。それでは、curl 用の Cookie を開いてみましょう。
[php]
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//POST アドレス
$query = 'name=xiaokai&password=xiaokai';//これが提出されたデータです
$jar = realpath('cookie.txt');//Cookie が保存されるアドレス
$ch =curl_init($url);//初期化中に URL アドレスを関連付けます
curl_setopt($ch, CURLOPT_POST, true); //post メソッドを使用したいことをここで伝えます
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//彼に投稿データを渡します
curl_setopt($ch, CURLOPT_COOKIEJAR, $jar);//Cookie ファイルが保存されているアドレスを彼に与えると、Cookie は自動的に保存されます
コンテンツは Cookie ファイルに書き込まれます。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//出力したくないけどリターン
$data =curl_exec($ch);//OK、実行後に返されます
curl_close($ch);//閉じる
echo $data;//ログインが成功したことを示す結果を出力します。
$url = 'http://www.phpfamily.cn/Shop/login?formaction=login';//アドレスにPOSTします
$query = 'name=xiaokai&password=xiaokai';//これが入稿データです
$jar = realpath('cookie.txt');//Cookieによって保存されたアドレス
$ch =curl_init($url);//初期化中にURLアドレスを関連付けます
curl_setopt($ch, CURLOPT_POST, true); //post メソッドを使用したいことをここで伝えてください
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);//彼に投稿データを渡します
curl_setopt($ch, CURLOPT_COOKIEJAR, $jar);//Cookie ファイルが保存されているアドレスを彼に与えると、Cookie は自動的に保存されます
コンテンツは Cookie ファイルに書き込まれます。
curl_setopt($ch, CURLOPT_RETURTRANSFER, true);//出力したくない、戻りたい
$data =curl_exec($ch);//OK、実行後に返されます
curl_close($ch);//閉じる
echo $data;//ログインが成功したことを示す結果を出力します。
CURLOPT_COOKIEJAR オプションを追加するだけでOKです。とても簡単ではないでしょうか。ここに注目してください
CURLOPT_COOKIEJAR の値は絶対パスである必要があります。つまり、指定する Cookie ファイルの保存パスは絶対パスである必要があります。
[php]
$url = 'http://www.phpfamily.cn/Shop/register';
$jar = realpath('cookie.txt');//Cookie が保存されるアドレス
$ch =curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $jar);// ここに Cookie ファイルを保存するパスを指定します
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data =curl_exec($ch);
curl_close($ch);//閉じる
$data をエコーします。
$url = 'http://www.phpfamily.cn/Shop/register';
$jar = realpath('cookie.txt');//Cookieによって保存されたアドレス
$ch =curl_init($url);
curl_setopt($ch, CURLOPT_COOKIEFILE, $jar);//ここにCookieファイルを保存するパスを指定します
$data =curl_exec($ch);
curl_close($ch);//閉じる
$data をエコー;
続けて、上記で Cookie が保存されるため、再度ログインをシミュレートするときに POST する必要がなく、オプションを追加します
CURLOPT_COOKIEFILE は直接ログインできます。
もう一度プレビューすると、ログインしていることが確認されます。このようにすると、ログイン後に Cookie が保存され、送信などのあらゆる操作が可能になります
コメント、メッセージなど
http://www.bkjia.com/PHPjc/477350.html
www.bkjia.com