Maison  >  Article  >  développement back-end  >  Instructions pour utiliser la fonction curl_init en PHP

Instructions pour utiliser la fonction curl_init en PHP

高洛峰
高洛峰original
2017-06-01 09:34:321332parcourir

$ch = curl_init(); 
$c_url = 'http://www.baidu.com'; 
$c_url_data = "product_&type=".$type.""; 
curl_setopt($ch, CURLOPT_URL,$c_url); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $c_url_data); 
echo $result = curl_exec($ch); 
curl_close ($ch); 
unset($ch);

Cet article explique principalement la connaissance de la bibliothèque php_curl et vous apprend à mieux utiliser php_curl.
Introduction
Vous pouvez rencontrer ce problème lors de l'écriture de code de script PHP : Comment obtenir du contenu provenant d'autres sites ? Il existe plusieurs solutions ici ; la plus simple est d'utiliser la fonction fopen() en PHP, mais la fonction fopen n'a pas suffisamment de paramètres à utiliser, par exemple lorsque vous souhaitez créer un "web crawler" et que vous souhaitez définir la description du client. du robot d'exploration (IE , Firefox), obtenez du contenu via différentes méthodes de requête, telles que POST, GET, etc. Ces exigences ne peuvent pas être remplies en utilisant la fonction fopen() ;
Afin de résoudre les problèmes que nous avons soulevés ci-dessus, nous pouvons utiliser la bibliothèque d'extensions PHP-Curl. Cette bibliothèque d'extensions est généralement incluse dans le package d'installation par défaut. Vous pouvez l'utiliser pour obtenir le contenu d'autres sites ou en faire d'autres. des choses.
Remarque : ces deux morceaux de code nécessitent la prise en charge de la bibliothèque d'extension php_curl. Vérifiez phpinfo(). Si la prise en charge de curl est activée, cela signifie que la bibliothèque curl est prise en charge.
1. Activez la prise en charge de la bibliothèque curl pour PHP sous Windows :
Ouvrez php.ini et supprimez le signe ; avant extension=php_curl.dll.
2. Activez le support de la bibliothèque curl pour PHP sous Linux :
Lors de la compilation de PHP, ajoutez –with-curl après ./configure
Dans cet article, voyons comment utiliser la bibliothèque curl. regardez ses autres utilisations, mais ensuite, nous devons commencer par l'utilisation la plus basique
Utilisation de base :
Dans la première étape, nous créons une nouvelle session curl via la fonction curl_init(), le code est le suivant :

<?php
// create a new curl resource 
$ch = curl_init(); 
?>

Nous avons réussi à créer une session curl. Si nous avons besoin d'obtenir le contenu d'une URL, alors l'étape suivante consiste à transmettre une URL à la fonction curl_setopt(), codez :

<?php
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/”); 
?>

Après avoir terminé l'étape précédente, le travail de préparation de curl est terminé. curl obtiendra le contenu de l'URL du site et l'imprimera. Code :

<?php
// grab URL and pass it to the browser 
curl_exec($ch); 
?>

Enfin, fermez la session curl en cours

<?php
//close curl resource, and free up system resources 
curl_close($ch); 
?>

Jetons un coup d'œil à l'exemple de code complété :

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://www.google.nl/”); 
// grab URL and pass it to the browser 
curl_exec($ch); 
// close curl resource, and free up system resources 
curl_close($ch); 
?>

Nous venons d'obtenir le contenu d'un autre site et de le transmettre automatiquement au navigateur. Existe-t-il un autre moyen pour nous d'organiser les informations obtenues et de contrôler ensuite le contenu de sortie ? Il n'y a aucun problème. Dans les paramètres de la fonction curl_setopt(), si vous souhaitez obtenir le contenu mais pas le sortir, utilisez le paramètre CURLOPT_RETURNTRANSFER et définissez-le sur une valeur non-0/true ! , veuillez consulter :

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://www.google.nl/”); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
// grab URL, and return output 
$output = curl_exec($ch); 
// close curl resource, and free up system resources 
curl_close($ch); 
// Replace ‘Google&#39; with ‘PHPit&#39; 
$output = str_replace(&#39;Google&#39;, ‘PHPit&#39;, $output); 
// Print output 
echo $output; 
?>

dans Dans les deux exemples ci-dessus, vous avez peut-être remarqué qu'en définissant différents paramètres de la fonction curl_setopt(), vous pouvez obtenir des résultats différents. C'est pourquoi curl est puissant. jetez un œil à la signification de ces paramètres.
Options liées à CURL :
Si vous avez lu la fonction curl_setopt() dans le manuel PHP, vous remarquerez qu'il y a une longue liste de paramètres en dessous. Il nous est impossible de les présenter un par un. Pour plus d'informations, veuillez consulter le manuel PHP, nous présentons ici uniquement certains paramètres couramment utilisés et certains paramètres.
Le premier paramètre intéressant est CURLOPT_FOLLOWLOCATION. Lorsque vous définissez ce paramètre sur true, curl obtiendra le chemin de redirection plus profond en fonction de n'importe quelle commande de redirection. Par exemple : lorsque vous essayez d'obtenir une page PHP, alors il y a un code de saut dedans. cette page PHP, et curl obtiendra le contenu de http://new_url au lieu de renvoyer le code de saut. Le code complet est le suivant :

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/”); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
// grab URL, and print 
curl_exec($ch); 
?>

Si Google envoie une demande de redirection, l'exemple ci-dessus continuera à obtenir du contenu en fonction de l'URL redirigée. Les deux options liées à ce paramètre sont CURLOPT_MAXREDIRS et CURLOPT_AUTOREFERER <.> Le paramètre CURLOPT_MAXREDIRS permet de définir le nombre maximum de requêtes de saut, au-delà duquel le contenu ne sera plus obtenu. Si CURLOPT_AUTOREFERER est défini sur true, curl ajoutera automatiquement l'en-tête Referer à chaque lien de saut. Cela n'est peut-être pas très important, mais c'est très utile dans certains cas.
Le paramètre suivant introduit est CURLOPT_POST, c'est une fonctionnalité très utile car elle vous permet de faire une requête POST au lieu d'une requête GET, ce qui signifie essentiellement que vous pouvez soumettre
d'autres formulaires de la page, pas besoin de réellement remplissez le formulaire. L'exemple ci-dessous montre ce que je veux dire :

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL,”http://projects/phpit/content/using%20curl%20php/demos/handle_form.php”); 
// Do a POST 
$data = array(&#39;name&#39; => ‘Dennis&#39;, &#39;surname&#39; => ‘Pallett&#39;); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
// grab URL, and print 
curl_exec($ch); 
?> 
And the handle_form.php file: 
echo ‘Form variables I received:&#39;; 
echo ‘&#39;; 
print_r ($_POST); 
echo ‘&#39;; 
?>
Comme vous pouvez le voir, cela rend la soumission du formulaire très facile et c'est un excellent moyen de tester tous vos formulaires sans avoir à les remplir. Ils sont là tout le temps.

Le paramètre CURLOPT_CONNECTTIMEOUT est généralement utilisé pour définir l'heure à laquelle curl essaie de demander un lien. C'est une option très importante si vous définissez cette heure trop courte, cela peut entraîner l'échec de la requête curl.
Mais si vous le définissez trop longtemps, le script PHP risque de mourir. Une option liée à ce paramètre est CURLOPT_TIMEOUT, qui est utilisée pour définir le temps requis pour que curl puisse s'exécuter. Si vous définissez cette valeur sur une très petite valeur, les pages téléchargées peuvent être incomplètes car leur téléchargement prend un certain temps.
La dernière option est CURLOPT_USERAGENT, qui vous permet de personnaliser le nom du client de la requête, tel que webspilder ou IE6.0. L'exemple de code est le suivant :
.

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://sc.jb51.net/”); 
curl_setopt($ch, CURLOPT_USERAGENT, ‘My custom web spider/0.1′); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
// grab URL, and print 
curl_exec($ch); 
?>

现在我们把最有意思的一个参数都介绍过了,下面我们来介绍一个curl_getinfo() 函数,看看它能为我们做些什么。 
获取页面的信息: 
函数curl_getinfo()可以使得我们获取接受页面各种信息,你能编辑这些信息通过设定选项的第二个参数,你也可以传递一个数组的形式。就像下面的例子: 

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://www.google.com”); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FILETIME, true); 
// grab URL 
$output = curl_exec($ch); 
// Print info 
echo ‘&#39;; 
print_r (curl_getinfo($ch)); 
echo ‘&#39;; 
?>

大部分返回的信息是请求本身的,像:这个请求花的时间,返回的头文件信息,当然也有一些页面的信息,像页面内容的大小,最后修改的时间。 
那些全是关于curl_getinfo()函数的,现在让我们看看它的实际用途。 
实际用途: 
curl库的第一用途可以查看一个URL页面是否存在,我们可以通过查看这个URL的请求返回的代码来判断比如404代表这个页面不存在,我们来看一些例子: 

// create a new curl resource 
$ch = curl_init(); 
// set URL and other appropriate options 
curl_setopt($ch, CURLOPT_URL, “http://www.google.com/does/not/exist”); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
// grab URL 
$output = curl_exec($ch); 
// Get response code 
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
// Not found? 
if ($response_code == ‘404′) { 
echo ‘Page doesn\&#39;t exist&#39;; 
} else { 
echo $output; 
} 
?>

其他的用户可能是创建一个自动检查器,验证每个请求的页面是否存在。 
我们可以用curl库来写和google类似的网页蜘蛛(web spider),或是其他的网页蜘蛛。这篇文章不是关于如何写一个网页蜘蛛的,因此所以我们没有讲任何关于网页蜘蛛的细节问题,但是以后在PHPit 将会介绍用 curl来构造一个web spider. 
结论: 
在这篇文章我已经表明,如何使用php中的curl库和其大部分的选项。 
为最基本的任务,只想获得一个网页,你可能不会需要CURL库,但是,一旦你想要做任何事情稍微先进的,您可能会想要使用curl库。 
在近未来,我会告诉您究竟如何建立自己的网络蜘蛛,类似Google的网络蜘蛛,敬请期待,以phpit。

更多在PHP中使用curl_init函数的说明相关文章请关注PHP中文网!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn