php默认没有开启 curl 插件。
在 php.ini,查找 ;extension=php_curl.dll;将前面的;去掉
重启 apache 即可使用。
一:curl post
1、index.php
<?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
<?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 方法:
<?php 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 '<pre><b>错误:</b><br />'.curl_error($curl); } //关闭curl curl_close($curl); return $tmpInfo; } ?>
已有0条评论