Heim >Backend-Entwicklung >PHP-Tutorial >PHP curl实现get、post和cookie提交实例讲解_PHP教程

PHP curl实现get、post和cookie提交实例讲解_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:42:411002Durchsuche

类似于dreamhost这类主机服务商,是显示fopen的使用的。使用php的curl可以实现支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持SSL证书、HTTP POST、HTTP PUT 、FTP 上传,kerberos、基于HTT格式的上传、代理、cookie、用户+口令证明、文件传送恢复、http代理通道就最常用的来说,是基于http的 get和post方法。

一、http的get实现
php代码
$ch = curl_init("http://www.domain.com/api/index.php?test=1") ;   
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回   
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回   
echo $output = curl_exec($ch) ;   
 
 /* 写入文件 */  
$fh = fopen("out.html", w) ;   
fwrite($fh, $output) ;   
fclose($fh) ;   

$ch = curl_init("http://www.domain.com/api/index.php?test=1") ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
echo $output = curl_exec($ch) ;

/* 写入文件 */
$fh = fopen("out.html", w) ;
fwrite($fh, $output) ;
fclose($fh) ;
?>

$url = http://www.domain.com/api/ ;
$fields = array(
               lname=>justcoding ,
               fname=>phplover ,
               title=>myapi,
               age=>27 ,
               email=>1353777303@gmail.com ,
               phone=>1353777303
              );
//$post_data = implode(&,$fields);
//open connection
$ch = curl_init() ;
//set the url, number of POST vars, POST data
curl_setopt($ch, CURLOPT_URL,$url) ;
curl_setopt($ch, CURLOPT_POST,count($fields)) ; // 启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields); // 在HTTP中的"POST"操作。如果要传送一个文件,需要一个@开头的文件名

ob_start();
curl_exec($ch);
$result = ob_get_contents() ;
ob_end_clean();

echo $result;
//close connection
curl_close($ch) ;
?>
 
Php代码
if($_GET[test])   
{   
    print_r($_GET);   
}   
 
if($_POST)   
{   
    print_r($_POST);   
}   
?>
if($_GET[test])
{
     print_r($_GET);
}
if($_POST)
{
    print_r($_POST);
}
?>

二、http的post实现
Php代码
$url = http://www.domain.com/api/ ;   
$fields = array(   
                lname=>justcoding ,   
                fname=>phplover ,   
                title=>myapi,   
                age=>27 ,   
                email=>1353777303@gmail.com ,   
                phone=>1353777303  
               );   
//$post_data = implode(&,$fields);   
//open connection   
$ch = curl_init() ;   
//set the url, number of POST vars, POST data   
curl_setopt($ch, CURLOPT_URL,$url) ;   
curl_setopt($ch, CURLOPT_POST,count($fields)) ; // 启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样。   
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields); // 在HTTP中的"POST"操作。如果要传送一个文件,需要一个@开头的文件名   
ob_start();   
curl_exec($ch);   
$result = ob_get_contents() ;   
ob_end_clean();   
echo $result;   
//close connection   
curl_close($ch) ;  
?>

三. php的curl传送cookie
两种方式:
一种是自动:
Php代码
curl_setopt($curlHandle, CURLOPT_COOKIEJAR, cookie.txt ); //保存   
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, cookie.txt ); //读取  
curl_setopt($curlHandle, CURLOPT_COOKIEJAR, cookie.txt ); //保存
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, cookie.txt ); //读取
?>
这样COOKIE会自动跟上去.
不过要分两次,一是先访问产生cookie,接着连结才能用cookie

例子:Php代码
function get_curlcuconent2($filename,$referer)   
{   
        $cookie_jar = tempnam(./tmp,JSESSIONID);   
        $ch = curl_init();   
        curl_setopt($ch, CURLOPT_URL, $filename);   
        curl_setopt($ch, CURLOPT_HEADER, false);   
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
        
        //设置文件读取并提交的cookie路径   
        curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);   
        $filecontent=curl_exec($ch);   
        curl_close($ch);   
        
        $ch = curl_init();   
        $hostname ="www.domain.com";   
        //$referer="http://www.domain.com/";   
        curl_setopt($ch, CURLOPT_URL, $filename);   
        curl_setopt($ch, CURLOPT_REFERER, $referer); // 看这里,你也可以说你从google来   
        curl_setopt($ch, CURLOPT_USERAGENT, "www.domain.com");   
        
        //$request = "JSESSIONID=abc6szw15ozvZ_PU9b-8r"; //设置POST参数   
        //curl_setopt($ch, CURLOPT_POSTFIELDS, $request);      
        // 上面这句,当然你可以说你是baidu,改掉这里的值就ok了,可以实现小偷的功能,$_SERVER[HTTP_USER_AGENT]   
        //你也可以自己做个 spider 了,那么就伪装这里的 CURLOPT_USERAGENT 吧   
        //如果你要把这个程序放到linux上用php -q执行那也要写出具体的$_SERVER[HTTP_USER_AGENT],伪造的也可以   
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/486046.htmlTechArticle类似于dreamhost这类主机服务商,是显示fopen的使用的。使用php的curl可以实现支持FTP、FTPS、HTTP HTPPS SCP SFTP TFTP TELNET DICT FILE和LDAP。curl 支持S...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn