PHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。
PHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)。, libcurl当前支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可以使用PHP的ftp扩展), HTTP基本表单上传,代理,cookies,和用户认证。
为了使用CURL函数你需要安装CURL包。PHP 需要你使用CURL 7.0.2-beta或更高版。如果CURL的版本低于7.0.2-beta,PHP将不工作。
要使用PHP的CURL支持,你必须用带有--with-curl[=DIR]参数重新编译PHP(DIR是包含库和头文件的目录)。
这些函数是在PHP 4.0.2中新增得。
一旦你编译了带有CURL支持的PHP,你可以使用curl函数。基本思路是:你使用curl_init()函数初始化CURL会话,而后你可以设置你的所有选项,通过curl_exec()函数执行,最后你可以作用curl_close()函数来结束你的会话。以下是一个例子:是把PHP的主页取回放到一个文件中
Curl_1
1<?php
2$ch = curl_init ("http://www.php.net/");
3$fp = fopen ("php_homepage.txt", "w");
4
5curl_setopt ($ch, CURLOPT_FILE, $fp);
6curl_setopt ($ch, CURLOPT_HEADER, 0);
7
8curl_exec ($ch);
9curl_close ($ch);
10fclose ($fp);
11?>
使用如题所述方法进行文件post操作:
Curl
1$URL="www.mysite.com/test.php";
2$ch = curl_init();
3curl_setopt($ch, CURLOPT_URL,"https://$URL");
4curl_setopt($ch, CURLOPT_POST, 1);
5curl_setopt($ch, CURLOPT_POSTFIELDS, "Data1=blah&Data2=blah");
6curl_exec ($ch);
7curl_close ($ch);
用普通文件方法post
File_Post_Code
1<?php
2function posttohost($url, $data) {
3$url = parse_url($url);
4if (!$url) return "couldn't parse url";
5if (!isset($url['port'])) { $url['port'] = ""; }
6if (!isset($url['query'])) { $url['query'] = ""; }
7
8$encoded = "";
9
10while (list($k,$v) = each($data)) {
11$encoded .= ($encoded ? "&" : "");
12$encoded .= rawurlencode($k)."=".rawurlencode($v);
13}
14
15$fp = fsockopen($url['host'], $url['port'] ? $url['port'] : 80);
16if (!$fp) return "Failed to open socket to $url[host]";
17
18fputs($fp, sprintf("POST %s%s%s HTTP/1.0\n", $url['path'], $url['query'] ? "?" : "", $url['query']));
19fputs($fp, "Host: $url[host]\n");
20fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
21fputs($fp, "Content-length: " . strlen($encoded) . "\n");
22fputs($fp, "Connection: close\n\n");
23
24fputs($fp, "$encoded\n");
25
26$line = fgets($fp,1024);
27if (!eregi("^HTTP/1\.. 200", $line)) return;
28
29$results = ""; $inheader = 1;
30while(!feof($fp)) {
31$line = fgets($fp,1024);
32if ($inheader && ($line == "\n" || $line == "\r\n")) {
33$inheader = 0;
34}
35elseif (!$inheader) {
36$results .= $line;
37}
38}
39fclose($fp);
40
41return $results;
42}
43?>