Detailed introductory tutorial for php CURL function_PHP tutorial
WBOY
Release: 2016-07-13 17:16:30
Original
890 people have browsed it
The cURL function in PHP has a set of related functions. It is a very good function. We often use it to simulate various login and collection tasks. Let me introduce you to the introduction of the CURL function.
Introduction to cURL
cURL is a tool that uses URL syntax to transfer data and files. It supports many protocols such as HTTP, FTP, TELNET, etc. PHP also supports the cURL library.
If we want to obtain the content of a certain web page, we may use the following methods:
These methods are quite simple, but lack flexibility and effective error handling. And they cannot complete some difficult actions, such as processing cookies, verification, form submission, file upload, etc.
cURL simple example
The following is a simple code, from which you can learn the general steps of using cURL, php cURL introductory tutorial.
The code is as follows
Copy code
header("Content-type: text/html; charset=utf-8");<🎜>
<🎜>// 1. Initialization<🎜>
$ch = curl_init();<🎜>
<🎜>// 2. Setting options<🎜>
curl_setopt($ch, CURLOPT_URL, "http://www.bKjia.c0m");<🎜>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<🎜>
curl_setopt($ch, CURLOPT_HEADER, 0);<🎜>
<🎜>// 3. Execute and get the returned content<🎜>
$output = curl_exec($ch);<🎜>
<🎜>// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs <🎜>
if ($output === FALSE) {<🎜>
echo "cURL Error: " . curl_error($ch);<🎜>
}<🎜>
<🎜> // 5. Release curl resources <🎜>
curl_close($ch);<🎜>
<🎜>//Output the obtained source code<🎜>
echo $output;<🎜>
?>
Regarding the second step, curl_setopt() is the most important. There is a long list of cURL parameters to set, which can specify various details of the URL request.
Get information
This is another optional setting that can obtain information about this request after cURL is executed:
The code is as follows
Copy code
header("Content-type: text/html; charset=utf-8");<🎜>
<🎜>// 1. Initialization<🎜>
$ch = curl_init();<🎜>
<🎜>// 2. Setting options<🎜>
curl_setopt($ch, CURLOPT_URL, "http://www.bKjia.c0m");<🎜>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<🎜>
curl_setopt($ch, CURLOPT_HEADER, 0);<🎜>
<🎜>/// 3. Execute and obtain the HTML document content<🎜>
$output = curl_exec($ch);<🎜>
<🎜>// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs <🎜>
if ($output === FALSE) {<🎜>
echo "cURL Error: " . curl_error($ch);<🎜>
}<🎜>
<🎜>// Get cURL information and output <🎜>
$info = curl_getinfo($ch);<🎜>
echo 'Get '. $info['url'] . ' Time consuming '. $info['total_time'] . 'Seconds';<🎜>
<🎜>// 5. Release curl handle<🎜>
curl_close($ch);<🎜>
?>
The returned array includes the following information:
"url" // Resource network address
"content_type" // Content type and encoding
"http_code" // HTTP status code
"header_size" // header size
"request_size" // Request size
"filetime" // file creation time
"ssl_verify_result" // SSL verification result
"redirect_count" // Jump technology
"total_time" //Total time spent
"namelookup_time" // DNS query time
"connect_time" // Time spent waiting for connection
"pretransfer_time" // Preparation time before transfer
"size_upload" // Size of uploaded data
"size_download" // Size of downloaded data
"speed_download" // Download speed
"speed_upload" // Upload speed
"download_content_length" // The length of the download content
"upload_content_length" // The length of the uploaded content
"starttransfer_time" // Time to start transfer
"redirect_time" // redirection time
//Data to be posted
$post_data = array (
"hyh" => "man",
"xlp" => "woman",
"love" => "yes"
);
// 1. Initialization
$ch = curl_init();
// 2. Setting options
curl_setopt($ch, CURLOPT_URL, "http://localhost/to.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); // Set to post mode here
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // Add data to prepare for post
/// 3. Execute and get the returned content
$output = curl_exec($ch);
// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs
if ($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
// 5. Release curl handle
curl_close($ch);
//Output content
echo $output;
?>
New to.php
The code is as follows
Copy code
";
print_r($_POST);
echo "
I'm come from http://www.bKjia.c0m"
?>
File upload
Uploading files is very similar to the previous POST, because all file upload forms are submitted through the POST method.
// 2. Setting options
curl_setopt($ch, CURLOPT_URL, "http://localhost/to.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); // Set to post mode here
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); // Add data to prepare for post
/// 3. Execute and get the returned content
$output = curl_exec($ch);
// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs
if ($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
// 5. Release curl resources
curl_close($ch);
//Output content
echo $output;
?>
New to.php:
If you need to upload a file, just pass the file path like a post variable, but remember to add the @ symbol in front.
Some more useful cURL examples
HTTP Authentication
If a URL request requires HTTP-based authentication, you can use the following code:
The code is as follows
Copy code
header("Content-type: text/html; charset=utf-8");<🎜>
<🎜>// 1. Initialization<🎜>
$ch = curl_init();<🎜>
<🎜>// 2. Setting options<🎜>
curl_setopt($ch, CURLOPT_URL, "http://www.bKjia.c0m");<🎜>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<🎜>
curl_setopt($ch, CURLOPT_USERPWD, "myusername:mypassword"); // Send username and password<🎜>
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // You can allow redirection<🎜>
curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, 1); // Allow cURL to send username and password after redirection<🎜>
<🎜>/// 3. Execute and get the returned content<🎜>
$output = curl_exec($ch);<🎜>
<🎜>// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs <🎜>
if ($output === FALSE) {<🎜>
echo "cURL Error: " . curl_error($ch);<🎜>
}<🎜>
<🎜> // 5. Release curl handle <🎜>
curl_close($ch);<🎜>
?>
FTP upload
PHP comes with its own FTP class library, but you can also use cURL. You can also refer to this article: PHP uses cURL to implement ftp upload
// 2. Setting options
curl_setopt($ch, CURLOPT_URL, "ftp://username:password@3aj.cn:21/path/to/new/file");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//Upload related options
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("/path/to/file"));
// Whether to enable ASCII mode (useful when uploading text files)
curl_setopt($ch, CURLOPT_FTPASCII, 1);
/// 3. Execute and get the returned content
$output = curl_exec($ch);
// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs
if ($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
// 5. Release curl handle
curl_close($ch);
?>
You can use a proxy to make cURL requests:
The code is as follows
Copy code
header("Content-type: text/html; charset=utf-8");<🎜>
<🎜>// 1. Initialization<🎜>
$ch = curl_init();<🎜>
<🎜>// 2. Setting options<🎜>
curl_setopt($ch, CURLOPT_URL, "http://www.bKjia.c0m");<🎜>
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<🎜>
curl_setopt($ch, CURLOPT_PROXY, '11.11.11.11:8080'); // Specify proxy address<🎜>
curl_setopt($ch, CURLOPT_PROXYUSERPWD, 'user:pass'); // Provide username and password if necessary <🎜>
<🎜>/// 3. Execute and get the returned content<🎜>
$output = curl_exec($ch);<🎜>
<🎜>// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs <🎜>
if ($output === FALSE) {<🎜>
echo "cURL Error: " . curl_error($ch);<🎜>
}<🎜>
<🎜>// 5. Release curl handle<🎜>
curl_close($ch);<🎜>
?>
Callback function
You can have cURL call a specified callback function during a URL request. For example, start utilizing data as soon as the content or response is downloading, rather than waiting until it is completely downloaded.
The code is as follows
Copy code
header("Content-type: text/html; charset=utf-8");<🎜>
<🎜>// 1. Initialization<🎜>
$ch = curl_init();<🎜>
<🎜>// 2. Setting options<🎜>
curl_setopt($ch, CURLOPT_URL, "http://www.bKjia.c0m");<🎜>
curl_setopt($ch, CURLOPT_WRITEFUNCTION, "progress_function");<🎜>
<🎜>/// 3. Execute and get the returned content<🎜>
curl_exec($ch);<🎜>
<🎜>// 4. Wrong judgment, please note that this is a Boolean value, not an empty output, so there are 3 equal signs <🎜>
if ($output === FALSE) {<🎜>
echo "cURL Error: " . curl_error($ch);<🎜>
}<🎜>
<🎜>// 5. Release curl handle<🎜>
curl_close($ch);<🎜>
<🎜>//Callback function<🎜>
function progress_function($ch, $str) {<🎜>
echo $str;<🎜>
Return strlen($str);<🎜>
}<🎜>
?>
This callback function must return the length of the string, otherwise this function will not work properly. During the process of receiving the URL response, this function will be called as long as a data packet is received.
After talking for a long time, let’s use cURL, an advanced and practical function, to implement ftp upload
Web server upload limit:
The default upload limit of PHP is 2M. If you want to upload files exceeding 2M, you must modify your PHP configuration or use the following code to create a .htaceess file.
The maximum file upload limit is set here to 16M, and the value of post_max_size is 20M, because we may also need the values of other form items in the POST form while uploading files.
The created .htaccess should be placed in the same directory as your upload script.
Use cURL for file upload
cURL is a tool that uses URL syntax to transfer files and data. It supports many protocols, such as HTTP, FTP, TELNET, etc. It can complete many difficult tasks - such as handling cookies, verification, form submission, file upload, ftp upload, etc.
代码如下
复制代码
Here, we are going to upload a file to the ftp space by using a web form. The ftp space here is password protected.
The code is as follows
Copy code
This form page is relatively simple and only has a file upload function.
Then we need the following php code to receive the uploaded file, use cURL to open a file stream and transfer it to the remote ftp server.
The code is as follows
代码如下
复制代码
if (isset($_POST['Submit'])) {
if (!empty($_FILES['upload']['name'])) {
$ch = curl_init();
$localfile = $_FILES['upload']['tmp_name'];
$fp = fopen($localfile, 'r');
curl_setopt($ch, CURLOPT_URL, 'ftp://username:password@3aj.cn/'.$_FILES['upload']['name']);
curl_setopt($ch, CURLOPT_UPLOAD, 1);
curl_setopt($ch, CURLOPT_INFILE, $fp);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile));
curl_exec($ch);
$error_no = curl_errno($ch);
curl_close($ch);
if ($error_no == 0) {
$error = 'File uploaded succesfully.';
} else {
$error = 'File upload error.';
echo "i come from ";
}
} else {
$error = 'Please select a file.';
}
}
curl_exec($ch);
$error_no = curl_errno($ch);
curl_close($ch);
if ($error_no == 0) {
$error = 'File uploaded successfully.';
} else {
$error = 'File upload error.';
echo "i come from ";
}
} else {
$error = 'Please select a file.';
}
}
When the user selects and uploads a file, the file is first saved on the web server. We use fopen to open the temporary file and initialize a cURL session. In the sent URL, fill in the ftp account and password, and then Then set other necessary parameters of cURL. If the number of errors returned is 0, then the file was uploaded successfully.
Summary
Today we learned the powerful functions and flexible scalability of the cURL library. The original text was compiled from: 3a Tutorial Network
http://www.bkjia.com/PHPjc/628616.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/628616.htmlTechArticleThe cURL function in php has a set of related functions. It is a very good function. We often use it to Imitating various login and collection tasks, let me introduce you to the introduction of CURL function...
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn