php默认没有开启 curl 插件。
在 php.ini,查找 ;extension=php_curl.dll;将前面的;去掉
重启 apache 即可使用。
一:curl post
1、index.php
$param = array(
'name' => '我们',
'cat' => '38'
);
$data = curlPost($param);
var_dump($data);
function curlPost($param) {
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
$url = 'http://www.yangsir.com/ceshi.php';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
if ($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
// 4. 释放curl句柄
curl_close($ch);
return $output;
}
2、ceshi.php
mysql_connect('localhost', 'root', '') or die('1');
mysql_select_db('ceshi') or die('2');
mysql_query("set names utf8");
$name = $_POST['name'];
$cat = $_POST['cat'];
$sql = "insert into temp values(null, '$name', '$cat')";
mysql_query($sql);
$id = mysql_insert_id();
echo $id;
?>
二、curl get
1、index.php
$data = curlGet();
var_dump($data);
function curlGet() {
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
$url = 'http://www.yangsir.com/ceshi.php?name='.urlencode('我们').'&cat=23';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 3. 执行并获取HTML文档内容
$output = curl_exec($ch);
if ($output === FALSE) {
echo "cURL Error: " . curl_error($ch);
}
// 4. 释放curl句柄
curl_close($ch);
return $output;
}
2、ceshi.php
同用上面的ceshi.php,只是将里面的$_POST改成$_GET即可。
然后摘抄一个总结的 curl 方法:
function vcurl($url, $referer = '', $post = '', $cookie = '', $cookiejar = '') {
$tmpInfo = '';
//初始化
$curl = curl_init();
//设置选项,包括URL
curl_setopt($curl, CURLOPT_URL, $url);
//在HTTP请求中包含一个”user-agent”头的字符串。
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
if($referer) {
//设置header中"Referer: " 部分的值。
curl_setopt($curl, CURLOPT_REFERER, $referer);
} else {
//自动设置header中的referer信息;
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
}
if($post) {
//启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样;
curl_setopt($curl, CURLOPT_POST, 1);
//在HTTP中的“POST”操作。如果要传送一个文件,需要一个@开头的文件名(我在这里post的时候直接传数组,看到很多人传字符串,不解!)
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
}
if($cookie) {
//设定HTTP请求中“Set-Cookie:”部分的内容。
curl_setopt($curl, CURLOPT_COOKIE, $cookie);
}
if($cookiejar) {
$cookiepath = getcwd().'./'.$cookiejar;
//连接关闭以后,存放cookie信息的文件名称
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookiepath);
//包含cookie信息的文件名称,这个cookie文件可以是Netscape格式或者HTTP风格的header信息。(取cookie)
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookiepath);
}
//设置curl允许执行的最长秒数
curl_setopt($curl, CURLOPT_TIMEOUT, 100);
//启用时会将头文件的信息作为数据流输出;
curl_setopt($curl, CURLOPT_HEADER, 0);
//将curl_exec获取的信息以文件流的形式返回,而不是直接输出;
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//执行并获取HTML文档内容
$tmpInfo = curl_exec($curl);
//输出错误
if (curl_errno($curl)) {
echo '
错误:
'.curl_error($curl);
}
//关闭curl
curl_close($curl);
return $tmpInfo;
}
?>