• 技术文章 >php教程 >PHP源码

    利用php curl实现程序登录新浪微博代码

    2016-06-08 17:24:53原创527
    本文章介绍了关于利用php curl实现程序登录新浪微博代码,有需要这个功能的朋友可以参考一下利用程序来登录网站哦。
    代码如下 复制代码

    /**
    * CURL请求
    * @param String $url 请求地址
    * @param Array $data 请求数据
    */
    function curlRequest($url,$data='',$cookieFile=''){
    $ch = curl_init();
    $option = array(
    CURLOPT_URL => $url,
    CURLOPT_HEADER =>0,
    CURLOPT_RETURNTRANSFER => 1,
    );
    if($cookieFile){
    $option[CURLOPT_COOKIEJAR] = $cookieFile;
    $option[CURLOPT_COOKIEFILE] = $cookieFile;
    //$option[CURLOPT_COOKIESESSION] = true;
    //$option[CURLOPT_COOKIE] = 'prov=42;city=1';
    }
    if($data){
    $option[CURLOPT_POST] = 1;
    $option[CURLOPT_POSTFIELDS] = $data;
    }
    curl_setopt_array($ch,$option);
    $response = curl_exec($ch);
    if(curl_errno($ch) > 0){
    throw_exception("CURL ERROR:$url ".curl_error($ch));
    }
    curl_close($ch);
    return $response;
    }
    function login($username,$password){
    if($username && $password){
    $preLoginData = curlRequest('http://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su='.base64_encode($username).'&client=ssologin.js(v1.3.16)','',self::COOKIE_FILE);
    preg_match('/sinaSSOController.preloginCallBack((.*))/',$preLoginData,$preArr);
    $jsonArr = json_decode($preArr[1],true);
    if(is_array($jsonArr)){
    $postArr = array(
    'entry' => 'weibo',
    'gateway' => 1,
    'from' => '',
    'savestate' => 7,
    'useticket' => 1,
    'ssosimplelogin' => 1,
    'su' => base64_encode(urlencode($username)),
    'service' => 'miniblog',
    'servertime' => $jsonArr['servertime'],
    'nonce' => $jsonArr['nonce'],
    'pwencode' => 'wsse',
    'sp' => sha1(sha1(sha1($password)).$jsonArr['servertime'].$jsonArr['nonce']),
    'encoding' => 'UTF-8',
    'url' => 'http://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack',
    'returntype' => 'META'
    );
    $loginData = curlRequest('http://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.3.16)',$postArr,self::COOKIE_FILE);
    if($loginData){
    $matchs = array();
    preg_match('/replace('(.*?)')/',$loginData,$matchs);
    $loginResult = curlRequest($matchs[1],'',self::COOKIE_FILE);
    $loginResultArr = array();
    preg_match('/feedBackUrlCallBack((.*?))/',$loginResult,$loginResultArr);
    //$userInfo = json_decode($loginResultArr[1],true);
    //Log::info(var_export($loginResultArr[1]));
    }else{
    throw_exception('Login sina fail.');
    }
    }else{
    throw_exception($preLoginData);
    }
    }else{
    throw_exception('Param error.');
    }
    }
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:CURLOPT option gt curl jsonArr
    上一篇:PHP常用用的六个处理正则表达式函数 下一篇:php导出生成excel表格几种方法介绍
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 收藏PHP常用自定义函数• php微信支付接口开发程序(流程已通)• Php自用分页函数程序代码• php对多维数组的某个键值排序方法• 检测移动设备的php代码(手机访问)
    1/1

    PHP中文网