php的curl实现get和post

jackxiang 2008-11-12 13:57 | |
本程序提供了一个需要权限才能访问的地址:http://gf.kaixin.com/home.do,而登陆接口是:http://login.kaixin.com/Login.do,通过post传递参数,达到访问需要权限才能访问的功能,模拟了浏览器Netscape的标准头,程序代码如下:


<?php

  Error_reporting(E_ALL);
    function vlogin($url,$request)
    {
      $cookie_jar = tempnam('./tmp','cookie');//在当前目录下生成一个随机文件名的临时文件
      $ch = curl_init(); //初始化curl模块
      curl_setopt($ch,CURLOPT_URL,$url);//登录页地址
      curl_setopt($ch, CURLOPT_POST, 1);//post方式提交
      curl_setopt($ch, CURLOPT_POSTFIELDS, $request);//要提交的内容
      //把返回$cookie_jar来的cookie信息保存在$cookie_jar文件中
      curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
      //设定返回的数据是否自动显示
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      //设定是否显示头信息
      curl_setopt($ch, CURLOPT_HEADER, false);
      //设定是否输出页面内容
      curl_setopt($ch, CURLOPT_NOBODY, false);
      curl_exec ($ch);
      curl_close($ch); //get data after login      
      return $cookie_jar;
   }
  
  //登录成功后通过cookies获取页面内容
    function get_content_by_cookie($url,$cookie_jar)
    {
        $ch2 = curl_init();      
        curl_setopt($ch2, CURLOPT_URL, $url);
        curl_setopt($ch2, CURLOPT_HEADER, false);
        curl_setopt($ch2, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch2, CURLOPT_COOKIEFILE, $cookie_jar);
        $orders=curl_exec($ch2);      
        curl_close($ch2);
        return $orders;
    }

function clear_cookie($cookie_tmp_name)
  {
        @unlink($cookie_tmp_name);
    }

  //使用的例子
    //$list_url='要抓取的帖子地址';
    $list_url='http://gf.kaixin.com/home.do';//教父的主键
    //$login_url='登录地址';
    $login_url='http://login.kaixin.com/Login.do';
    $post_data='email=xdy108@126.com&login_type=1000&origURL=http://www.kaixin.com/SysHome.do&password=001002';
    $cookie_file=vlogin($login_url,$post_data);    //模拟登陆
    var_dump($cookie_file);
    $tmp_curl=get_content_by_cookie($list_url,$cookie_file);//这里获得帖子内容
    var_dump($tmp_curl);
  clear_cookie($cookie_file);//删除cookies临时文件  
?>

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/1383/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!


最后编辑: jackxiang 编辑于2008-11-28 18:32
评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]