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);
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);
<?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);
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()
:
<?php function curl_download($url, $path) { $ch = curl_init(); curl_setopt_array($ch, [ CURLOPT_URL => $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');
<?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); }
<?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!