新浪API, 利用get_uid获取是uid的数据溢出问题解决方案

 
0 投票
 
 

开发中发现此BUG, 因为新浪的API返回的UID为int(64), 在32位的系统上就会产生数据溢出,

解决方案:

saetv2.ex.class.php
function get($url, $parameters = array()) {

    $response = $this->oAuthRequest($url, 'GET', $parameters);

    // 32bit int bug repair
    if ($url == 'account/get_uid')
    {
        preg_match('/\{\"uid\":(.+?)\}/',$response, $item);
        $data = array('uid'=>"{$item[1]}");
        $response = json_encode($data);
    }

    if ($this->format === 'json' && $this->decode_json) {
        return json_decode($response, true);
    }
    return $response;
}

关键在于:$data = array('uid'=>"{$item[1]}"); 把match出来的正确数字以字符串的形式再json一下。 就OK了。


这是一个BUG, 应该引起新浪的开发人员注意, 他们只是简单一行代码, 可能会浪费掉我们一天的时间。  要命!

 

PHP起点  PHP视频教程  PHP小班培训

转载于:https://www.cnblogs.com/echo-something/archive/2012/11/26/get_uid.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值