Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Funktionsfalls der PHP-CURL-Methode curl_setopt()

Detaillierte Erläuterung des Funktionsfalls der PHP-CURL-Methode curl_setopt()

墨辰丷
墨辰丷Original
2018-05-29 15:19:451631Durchsuche

In diesem Artikel werden hauptsächlich die Funktionsfälle der Curl_setopt()-Funktion von PHP vorgestellt: 1. Einfacher Fall des Crawlens von Webseiten 2. POST-Datenfall

Mit der Funktion curl_setopt() können Webseiten einfach und schnell erstellt werden gecrawlt (Sammlung ist sehr praktisch, lol), curl_setopt ist eine Erweiterungsbibliothek von PHP

Nutzungsbedingungen: Es muss in php.ini konfiguriert und aktiviert werden. (PHP 4 >= 4.0.2)
//Kommentieren Sie Folgendes aus

extension=php_curl.dll

unter Linux, Sie benötigen Um PHP neu zu kompilieren, müssen Sie die Kompilierungsparameter aktivieren – fügen Sie den Parameter „-with-curl“ zum Konfigurationsbefehl hinzu.

1. Ein einfacher Fall von Web-Crawling:


[php] view plain copy print?
// 创建一个新cURL资源 
$ch = curl_init();  
// 设置URL和相应的选项 
curl_setopt($ch, CURLOPT_URL, "http://www.baidu.com/"); 
curl_setopt($ch, CURLOPT_HEADER, false);  
// 抓取URL并把它传递给浏览器 
curl_exec($ch); 
//关闭cURL资源,并且释放系统资源 
curl_close($ch);


2 . POST-Datenfall:


[php] view plain copy print?
// 创建一个新cURL资源 
$ch = curl_init(); 
$data = 'phone='. urlencode($phone); 
// 设置URL和相应的选项 
curl_setopt($ch, CURLOPT_URL, "http://www.post.com/"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
// 抓取URL并把它传递给浏览器 
curl_exec($ch); 
//关闭cURL资源,并且释放系统资源 
curl_close($ch);


3. Über SSL und Cookies

Bei SSL, dem HTTPS-Protokoll, müssen Sie lediglich http:// in der CURLOPT_URL-Verbindung in https:// ändern. Natürlich gibt es auch einen Parameter namens CURLOPT_SSL_VERIFYHOST, der zur Verifizierung der Site gesetzt werden kann.

In Bezug auf Cookies müssen Sie die folgenden drei Parameter kennen:

  • CURLOPT_COOKIE, setzen Sie ein Cookie in einer persönlichen Sitzung

  • CURLOPT_COOKIEJAR, speichert ein Cookie, wenn die Sitzung endet

  • CURLOPT_COOKIEFILE, Cookie-Datei.

PS: Teilweises Abfangen der Sina Weibo-Anmelde-API (Ich habe einige Kommentare zu einigen Teilen hinzugefügt, die alle als Parameter übersetzt werden. Haha) Wenn Sie interessiert sind, können Sie dies tun Recherchieren Sie es selbst. Hehe


[php] view plain copy print?
/** 
   * Make an HTTP request 
   * 
   * @return string API results 
   * @ignore 
   */ 
  function http($url, $method, $postfields = NULL, $headers = array()) { 
    $this->http_info = array(); 
    $ci = curl_init(); 
    /* Curl settings */ 
    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);//让cURL自己判断使用哪个版本 
    curl_setopt($ci, CURLOPT_USERAGENT, $this->useragent);//在HTTP请求中包含一个"User-Agent: "头的字符串。 
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $this->connecttimeout);//在发起连接前等待的时间,如果设置为0,则无限等待 
    curl_setopt($ci, CURLOPT_TIMEOUT, $this->timeout);//设置cURL允许执行的最长秒数 
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, TRUE);//返回原生的(Raw)输出 
    curl_setopt($ci, CURLOPT_ENCODING, "");//HTTP请求头中"Accept-Encoding: "的值。支持的编码有"identity","deflate"和"gzip"。如果为空字符串"",请求头会发送所有支持的编码类型。 
    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $this->ssl_verifypeer);//禁用后cURL将终止从服务端进行验证 
    curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));//第一个是cURL的资源句柄,第二个是输出的header数据 
    curl_setopt($ci, CURLOPT_HEADER, FALSE);//启用时会将头文件的信息作为数据流输出 
    switch ($method) { 
      case 'POST': 
        curl_setopt($ci, CURLOPT_POST, TRUE); 
        if (!empty($postfields)) { 
          curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); 
          $this->postdata = $postfields; 
        } 
        break; 
      case 'DELETE': 
        curl_setopt($ci, CURLOPT_CUSTOMREQUEST, 'DELETE'); 
        if (!empty($postfields)) { 
          $url = "{$url}?{$postfields}"; 
        } 
    } 
    if ( isset($this->access_token) && $this->access_token ) 
      $headers[] = "Authorization: OAuth2 ".$this->access_token; 
    $headers[] = "API-RemoteIP: " . $_SERVER['REMOTE_ADDR']; 
    curl_setopt($ci, CURLOPT_URL, $url ); 
    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers ); 
    curl_setopt($ci, CURLINFO_HEADER_OUT, TRUE ); 
    $response = curl_exec($ci); 
    $this->http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE); 
    $this->http_info = array_merge($this->http_info, curl_getinfo($ci)); 
    $this->url = $url; 
    if ($this->debug) { 
      echo "=====post data======\r\n"; 
      var_dump($postfields); 
 
      echo '=====info====='."\r\n"; 
      print_r( curl_getinfo($ci) ); 
 
      echo '=====$response====='."\r\n"; 
      print_r( $response ); 
    } 
    curl_close ($ci); 
    return $response; 
  }



Das Obige ist hoffentlich der gesamte Inhalt dieses Artikels Es wird für alle nützlich sein.


Verwandte Empfehlungen:

php-Funktion „curl_init“ und „curl_setopt“

PHP-Funktion „curl_setopt“. Einführung in die Verwendung

Einführung in die Verwendung der Funktion „curl_setopt“


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Funktionsfalls der PHP-CURL-Methode curl_setopt(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn