Maison > Article > développement back-end > bibliothèque cURL en PHP
Cet article vous présente la bibliothèque cURL en PHP Maintenant, je la partage avec vous. Les amis dans le besoin peuvent s'y référer
À l'origine. conçu, cURL (Client URL Library) était un outil de ligne de commande permettant de transférer des données à l'aide de la syntaxe URL. Grâce à la bibliothèque cURL, nous pouvons utiliser librement un certain protocole dans les scripts PHP pour obtenir ou soumettre des données, comme l'obtention de données de requête HTTP. En termes simples, cURL est un outil permettant aux clients de demander des ressources aux serveurs.
PHP prend en charge la bibliothèque libcurl créée par Daniel Stenberg, qui peut se connecter à différents serveurs et utiliser différents protocoles. Les protocoles actuellement pris en charge par libcurl incluent http, https, ftp, gopher, telnet, dict, file et ldap. libcurl prend également en charge les certificats HTTPS, HTTP POST, HTTP PUT, le téléchargement FTP (peut également être complété via l'extension FTP de PHP), le téléchargement basé sur un formulaire HTTP, le proxy, les cookies, l'authentification par nom d'utilisateur et mot de passe.
En PHP, il est en réalité très simple d'obtenir le contenu d'une URL. Il existe de nombreuses façons d'y parvenir, comme par exemple en utilisant la fonction file_get_contents()
:
<?php $content = file_get_contents("https://segmentfault.com"); var_dump($content);Bien que la fonction
soit très pratique à utiliser, elle n'est pas assez flexible et ne peut pas gérer les erreurs. Dans certaines requêtes complexes, les en-têtes de requête, les cookies, les proxys, l'authentification et autres informations connexes ne peuvent pas être définis, et les données de formulaire ne peuvent pas non plus être soumises à un serveur ou les fichiers téléchargés. file_get_contents()
cURL définit principalement les options de requête via la fonction
Pour des descriptions spécifiques de chaque option, veuillez consulter http://php.net/manual/zh/func. ..// 1. 初始化 cURL 会话 $ch = curl_init(); // 2. 设置请求选项 curl_setopt($ch, CURLOPT_URL, "https://segmentfault.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); # 获取的信息以字符串返回,而不是直接输出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); # 禁止 cURL 验证对等证书,从而支持 HTTPS 访问 // 3. 执行 cURL 会话 $response = curl_exec($ch); var_dump($response); // 4. 关闭 cURL 会话 curl_close($ch);
Les détails de l'erreur de session cURL peuvent être consultés via la fonction curl_setopt()
, et les informations de réponse peuvent être consultées via la fonction
. Ainsi, grâce à ces deux fonctions, nous pouvons implémenter un gestionnaire d'erreurs simple. Par exemple, si nous accédons désormais à une adresse URL inexistante :
Cas pratiquecurl_error()
curl_getinfo()
1. 🎜>
<?php // 1. 初始化 cURL 会话 $ch = curl_init(); // 2. 设置请求选项 curl_setopt($ch, CURLOPT_URL, "https://segmentfault.com/test.php"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); # 获取的信息以字符串返回,而不是直接输出 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); # 禁止 cURL 验证对等证书,从而支持 HTTPS 访问 // 3. 执行 cURL 会话 $response = curl_exec($ch); if ($response === FALSE) { echo "cURL connert error: " . curl_error($ch); exit; } $info = curl_getinfo($ch); if ($info['http_code'] == 404) { echo 'HTTP 404'; exit; } var_dump($response); // 4. 关闭 cURL 会话 curl_close($ch);2. Téléchargement de fichiersCURLOPT_POSTFIELDS : Toutes les données sont envoyées à l'aide de l'opération "POST" dans le protocole HTTP. Pour envoyer un fichier, préfixez le nom du fichier avec @ et utilisez le chemin complet. Le type de fichier peut être spécifié au format « ;type=mimetype » après le nom du fichier. Ce paramètre peut être une chaîne codée en URL, similaire à 'val1=1&val2=2&...', ou vous pouvez utiliser un tableau avec le nom du champ comme clé et les données du champ comme valeur. Envoyez une requête POST via cURL pour implémenter le téléchargement de fichiers :
<?php function curl_post($url, $data) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回 CURLOPT_POST => 1, # 发送 POST 请求 CURLOPT_POSTFIELDS => $data, # POST 请求数据 ]); $response = curl_exec($ch); curl_close($ch); return $response; } $url = 'http://localhost/test.php'; $data = ['id' => 1, 'username' => 'jochen']; echo curl_post($url, $data);3. Téléchargement de fichiers En fait, le téléchargement de fichiers est identique à une requête GET normale, il suffit de télécharger un fichier Enregistrez le contenu renvoyé dans un fichier au lieu de simplement le sortir. Coopérer avec la fonction
pour implémenter le téléchargement de fichiers :
<?php function curl_upload($url, $data) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回 CURLOPT_POST => 1, # 发送 POST 请求 CURLOPT_POSTFIELDS => $data, # POST 请求数据 ]); $response = curl_exec($ch); curl_close($ch); return $response; } $url = 'http://localhost/test.php'; $data = ['id' => 1, 'file' => '@/root/image/boy.jpg']; echo curl_post($url, $data);
Si le serveur doit vérifier la demande, définissez simplement le paramètre file_put_contents()
:
56b62e99cd671c33a22cc122cd1dca25 $url, CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回 ]); $response = curl_exec($ch); curl_close($ch); return file_put_contents($path, $response); } curl_download('http://localhost/boy.jpg', './boy.jpg');
Ici, nous montrons principalement les applications qui utilisent des cookies pour maintenir le statut de connexion. Tout d'abord, nous devons nous connecter avec le compte et le mot de passe pour obtenir les données du Cookie, puis utiliser le Cookie connecté pour obtenir les données de la page : CURLOPT_USERPWD
<?php function curl_auth($url, $user, $passwd) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_USERPWD => "$user:$passwd", # 格式为:"[username]:[password]" CURLOPT_RETURNTRANSFER => 1 ]); $result = curl_exec($ch); curl_close($ch); return $result; } echo curl_auth('http://localhost', 'jochen', 'password');bibliothèque d'emballages cURL PHP Curl Class est une bibliothèque de wrapper cURL bien écrite, ce qui rend très pratique l'envoi de requêtes HTTP et l'intégration à tout type d'API Web. La bibliothèque wrapper PHP Curl Class est disponible pour PHP 5.3, 5.4, 5.5, 5.6, 7.0, 7.1 et HHVM. Cette bibliothèque est bien connue et propose une syntaxe très simple :
<?php // 模拟登录获取 Cookie function curl_login($url, $data, $cookie) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_POST => 1, # 发送 POST 请求 CURLOPT_POSTFIELDS => $data, # POST 请求数据 CURLOPT_COOKIEJAR => $cookie # 将 cookie 信息保存至文件中 CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回 ]); $response = curl_exec($ch); curl_close($ch); return $response; } // 获取页面数据 function curl_content($url, $cookie) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $url, CURLOPT_COOKIEFILE => $cookie # 加载包含 Cookie 数据的文件 CURLOPT_RETURNTRANSFER => 1, # 获取的信息以字符串返回 ]); $response = curl_exec($ch); curl_close($ch); return $response; } $post = ['username' => 'jochen', 'password' => '123456']; $cookie = './cookie.txt'; if (curl_login('http://localhost/login', $post, $cookie)) { echo curl_content('http://localhost', $cookie); }Article de référence : Bibliothèque d'URL client
<?php require __DIR__ . '/vendor/autoload.php'; use \Curl\Curl; $curl = new Curl(); $curl->get('https://www.example.com/'); if ($curl->error) { echo 'Error: ' . $curl->errorCode . ': ' . $curl->errorMessage . "\n"; } else { echo 'Response:' . "\n"; var_dump($curl->response); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!