例、模擬ログイン
コードは次のとおりです | |
/** * ログインをシミュレートします * $urlリクエストアドレス * $postにはPOSTデータが必要です * $cookie はログイン時に取得される COOKIE です * $cookiejar Cookie が保存される場所 (/tmp/test.cookie など) * $referer 前のページのアドレス * **/ function vcurl($url, $post = '', $cookie = '', $cookiejar = '', $referer = ''){ $tmpInfo = ''; //Cookie の保存に使用されるファイル //curlを初期化します $curl =curl_init(); // ターゲット URL を設定します curl_setopt($curl, CURLOPT_URL, $url); //現在使用されているブラウザ プロキシを使用します curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); //curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (互換性; MSIE 6.0; Windows NT 5.0)"); //Ref パラメータがある場合は、Referer ヘッダーを設定します。そうでない場合は、Referer ヘッダーが自動的に設定されます if($referer) { curl_setopt($curl, CURLOPT_REFERER, $referer); } その他 { curl_setopt($curl, CURLOPT_AUTOREFERER, 1); } //投稿データパラメータがある場合、メソッドは POST でデータを設定します。それ以外の場合は GET です if($post) { // 通常の POST リクエストを送信します。デフォルトのタイプは次のとおりです: application/x-www-form-urlencoded、www.111cn.net フォーム送信 curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $post); } //Cookieパラメータがある場合は設定します if($cookie) { curl_setopt($curl, CURLOPT_COOKIE, $cookie); } //Cookieファイルパラメータがある場合は、アクセスCookieファイル名を設定します if($cookiejar) { curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiejar); curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiejar); } //302転送の場合は転送したURLとコンテンツを返す curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); //実行の最大秒数を設定します curl_setopt($curl, CURLOPT_TIMEOUT, 100); //返されたコンテンツにヘッダー情報が含まれているかどうか curl_setopt($curl, CURLOPT_HEADER, 0); //返された結果をブラウザに直接表示するのではなく、ファイルまたは変数に保存します curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //関数実行後の戻り結果 $tmpInfo =curl_exec($curl); //エラーが発生した場合はエラーメッセージを表示 if (curl_errno($curl)) { $tmpInfo = ' エラー: |
例子、石鹸
代码如下 | |
関数 vcurlsoap($url, $SoapRequest, $SoapAction) { $ch =curl_init(); //カールセッションを開始します curl_setopt ( $ch 、 CURLOPT_URL 、 $url ); //投稿先のURLを設定 curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); // データを変数で返します curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch 、 CURLOPT_POSTFIELDS 、 $SoapRequest ); // XML を投稿します curl_setopt ( $ch, CURLOPT_TIMEOUT, 60 ); // タイムアウトを秒単位で設定します curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, 0 ); $header = array ("Content-Type: text/xml" ); $header [] = "コンテンツの長さ: ".strlen($SoapRequest); if (! is_null ( $SoapAction )) $header [] = 'SOAPAction: "' . $SoapAction . '"'; curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header ); $xmlResponse =curl_exec ( $ch ); curl_close ( $ch ); $xmlResponse を返す; } |