php curl 总结

摘要:php默认没有开启 curl 插件。在 php.ini,查找 ;extension=php_curl.dll;将前面的;去掉

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;
}
?>

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/98454.html

(0)
上一篇 2021年8月21日
下一篇 2021年8月21日

相关推荐

发表回复

登录后才能评论