CURL ログイン経由でアクセスされる PHP コード

WBOY
リリース: 2016-07-25 08:45:47
オリジナル
1006 人が閲覧しました
  1. $data='username=zjzhoufy@126.com&password=1q2w3e&remember=1';
  2. $curlobj =curl_init() // 初期化
  3. curl_setopt($curlobj, CURLOPT_URL, "http: //www.imooc.com/user/login"); // Web ページにアクセスするための URL を設定します
  4. curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true); // 実行直後は印刷しません
  5. // Cookie関連する設定、この部分 すべてのセッションを開始する前に設定する必要があります
  6. date_default_timezone_set('PRC') // Cookie を使用する場合は、最初にタイムゾーンを設定する必要があります
  7. curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE); $curlobj, CURLOPT_COOKIEJAR, 'cookie.txt ' ); //保存
  8. curl_setopt($curlobj, CURLOPT_COOKIEFILE, 'cookie.txt ') //Read
  9. curl_setopt($curlobj, CURLOPT_HEADER, 0); j、 CURLOPT_FOLLOWLOCATION, 1); //これにより、cURL がページのリンクをジャンプします
  10. curl_setopt($curlobj, CURLOPT_POST, 1); ($curlobj, CURLOPT_POSTFIELDS, $data );
  11. curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("application/x-www-form-urlencoded; charset=utf-8",
  12. "Content-length: ".strlen($data) )
  13. ));
  14. curl_exec( $curlobj); //
  15. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index") を実行します。 ;
  16. curl_setopt($curlobj, CURLOPT_HTTPHEADER , array("Content-type: text/xml"
  17. )); //
  18. curl_close($curlobj) を実行します。 $output;
  19. ?>
  20. コードをコピー
上記のコードは完璧ではありません。Cookie はキャッシュに保存する必要があり、永続化する必要はありません。また、そのような永続化には 1 人のユーザーのみがアクセスできます。
それで、実際に必要なのは を設定するだけです


CURLOPT_COOKIESESSION

コードをコピー

以下を実行するだけです

  1. $data='username=demo_demo@126.com&password=123456qwe&remember=1';
  2. $curlobj =curl_init() // 初期化
  3. curl_setopt($curlobj, CURLOPT_URL , "http://www.imooc.com/user/login"); // Web ページにアクセスするための URL を設定します
  4. curl_setopt($curlobj, CURLOPT_RETURNTRANSFER, true); // 実行後に直接出力しません。
  5. // Cookie 関連の設定、この部分の設定はすべてのセッションを開始する前に設定する必要があります
  6. date_default_timezone_set('PRC'); // Cookie を使用する場合は、最初にタイムゾーンを設定する必要があります
  7. curl_setopt($curlobj, CURLOPT_COOKIESESSION, TRUE) );
  8. curl_setopt($curlobj, CURLOPT_HEADER, 0 );
  9. curl_setopt($curlobj, CURLOPT_COOKIE,session_name().'='.session_id()); この設定はセーフ モードをオフにする必要があるため、この行をコメントアウトします。 open_basedir、これはサーバーのセキュリティに良くありません
  10. //curl_setopt($curlobj, CURLOPT_POST, 1);
  11. curl_setopt($curlobj, CURLOPT_POSTFIELDS, $data); l_setopt( $curlobj, CURLOPT_HTTPHEADER, array("application/x-www - form-urlencoded; charset=utf-8",
  12. "Content-length: ".strlen($data)
  13. ));
  14. curl_exec($curlobj); /
  15. curl_setopt($curlobj, CURLOPT_URL, "http://www.imooc.com/space/index");
  16. curl_setopt($curlobj, CURLOPT_POST, 0); を実行します。
  17. curl_setopt($curlobj, CURLOPT_HTTPHEADER, array("Content) -type: text/xml"
  18. ));
  19. $output =curl_redir_exec($curlobj); //
  20. curl_close($curlobj) を実行; // cURL
  21. echo を閉じる $output;
  22. /**
  23. * ページリンクのジャンプとキャプチャのカスタマイズされた実装
  24. */
  25. 関数curl_redir_exec($ch,$debug="")
  26. {
  27. static $curl_loops = 0;
  28. static $curl_max_loops = 20;
  29. if ($curl_loops++ >= $curl_max_loops)
  30. {
  31. $curl_loops = 0;
  32. return FALSE;
  33. }
  34. curl_setopt($ch, CURLO PT_HEADER, true ); // ヘッダーがリダイレクトされた新しい URL を取得できるようにします
  35. $data =curl_exec($ch);
  36. // 返されたコンテンツを分割します
  37. $h_len =curl_getinfo ($ch, CURLINFO_HEADER_SIZE)
  38. $header = substr($data,0,$h_len);
  39. $data = substr($data,$h_len - 1);
  40. $http_code =curl_getinfo($ch, CURLINFO_HTTP_CODE);
  41. if ($http_code == 301 || $http_code == 302) {
  42. $matches = array();
  43. preg_match('/Location:(.*?); /', $header, $matches);
  44. $ url = @parse_url(trim(array_pop($matches)));
  45. // print_r($url); t リダイレクト先の URL を処理します
  46. $curl_loops = 0 ;
  47. return $data; }
  48. $last_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL))
  49. if (!isset($url['scheme']))
  50. $url['scheme'] = $last_url['scheme'];
  51. if (!isset($url['host']))
  52. $url['host'] = $last_url['host']; if (!isset($url['path'] ))
  53. $url['path'] = $last_url['path'];
  54. $new_url = $url['scheme'] 。 $url['ホスト'] . $url[' パス'] . (isset($url['クエリ'])?'?'.$url['クエリ']:''); CURLOPT_URL, $new_url);
  55. return curl_redir_exec($ ch);
  56. $curl_loops=0;
  57. return $data;
  58. コードをコピーします。
  59. カール、PHP
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート