...后面保留的位数

* @param string $mode

* @return mixed

*/function _str_repeat($str=null, $start = 4, $end = 4, $mode = '*'){

if(!empty($str)){

$length = mb_strlen($str,'utf8')-$start-$end;

$repeat = str_repeat($mode, $length);

// 按个数...

//---------------------------

//除去数组中的空值和签名模式

function filter($parameter)

{

$para = array();

while (list ($key, $val) = each ($parameter))

{

if($key == "sign" || $key == "sign_type" || $val == "")

{

continue;

}

else

{

$para[$key] = $parameter[$key];

}

}

return $para;

}

/**

* 生成请求代码

* @param String $callback 回调地址

*/

function request($callback = )

{

//必要参数,不要随便更改!!

$params = array();

$params["oauth_version"] = "1.0";

$params["oauth_signature_method"] = "HMAC-SHA1";

$params["oauth_timestamp"] = time();

$params["oauth_nonce"] = mt_rand();

$params["oauth_consumer_key"] = $this->appid;

$sign = $this->sign($params, "GET"."&".rawurlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token")."&", $this->appkey . &);

$url = "format($params)."&"."oauth_signature=".rawurlencode($sign>http://openapi.qzone.qq.com/oauth/qzoneoauth_request_token?".$this->format($params)."&"."oauth_signature=".rawurlencode($sign);

$request = file_get_contents($url);//print_r($url);print_r($request);die;

$result = array();

parse_str($request, $result);

if (!isset($result[oauth_token]))

{

//错误返回输出

die();

}

$_SESSION["qq_token"] = $result["oauth_token"];

$_SESSION["qq_secret"] = $result["oauth_token_secret"];

//302跳转到授权页面

$redirect .= "appid."&oauth_token=".$result["oauth_token"]."&oauth_callback=".rawurlencode($callback);//die($redirect>http://openapi.qzone.qq.com/oauth/qzoneoauth_authorize?oauth_consumer_key=".$this->appid."&oauth_token=".$result["oauth_token"]."&oauth_callback=".rawurlencode($callback);//die($redirect);

header("Location:$redirect");

}

/**

* 响应操作

*/

function respond()

{

$params = array();

$params["oauth_version"] = "1.0";

$params["oauth_signature_method"] = "HMAC-SHA1";

$params["oauth_timestamp"] = time();

$params["oauth_nonce"] = mt_rand();

$params["oauth_consumer_key"] = $this->appid;

$params["oauth_token"] = $_SESSION["qq_token"];

$params["oauth_vericode"] = $_REQUEST["oauth_vericode"];

//echo "sig:$sig/n";

//echo "str:$str/n";

$sign = $this->sign($params, "GET"."&".rawurlencode("http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token")."&", $this->appkey. & . $_SESSION["qq_secret"]);

$url = "format($params)."&"."oauth_signature=".rawurlencode($sign>http://openapi.qzone.qq.com/oauth/qzoneoauth_access_token?".$this->format($params)."&"."oauth_signature=".rawurlencode($sign);

$request = file_get_contents($url);

$result = array();

parse_str($request, $result);

if (isset($result["error_code"]))

{

return false;

}

//验证签名

$key = $this->appkey;

$str = $_REQUEST["openid"] . trim($_REQUEST["timestamp"]);

if ($_REQUEST["oauth_signature"] != $this->sign(array(), $str, $key))

{

return false;

}

$_SESSION["qq_token"] = $result["oauth_token"];

$_SESSION["qq_secret"] = $result["oauth_token_secret"];

$_SESSION["qq_openid"] = $result["openid"];

return true;

}

//链接字符串

function format($parameter)

{

$parameter = $this->filter($parameter);

ksort($parameter);

reset($parameter);

$params = ;

foreach ($parameter AS $key => $val)

{

$params .= "$key=$val&";

}

$params = substr($params, 0, -1);

return $params;

}

function sign($parameter, $source, $key)

{

$params = $source . rawurlencode($this->format($parameter));

//$key = $this->appkey . & . $secret;

$sign = "";

if (function_exists(hash_hmac))

{

$sign = base64_encode(hash_hmac("sha1", $params, $key, true));

}

else

{

$blocksize = 64;

$hashfunc = sha1;

if (strlen($key) > $blocksize)

{

$key = pack(H*, $hashfunc($key));

}

$key = str_pad($key,$blocksize,chr(0x00));

$ipad = str_repeat(chr(0x36),$blocksize);

$opad = str_repeat(chr(0x5c),$blocksize);

$hmac = pack(

H*,$hashfunc(

($key^$opad).pack(

H*,$hashfunc(

($key^$ipad).$params

)

)

)

);

$sign = base64_encode($hmac);

}

return $sign;

}

/**

* 远程获取数据

* $url 指定URL完整路径地址

* @param $input_charset 编码格式。默认值:空值

* @param $time_out 超时时间。默认值:60

* return 远程输出的数据

*/

function getHttpRequest($url, $access_token, $access_token_secret, $openid)

{

$sigstr = "GET"."&".rawurlencode("$url")."&";

//必要参数, 不要随便更改!!

$params = $_GET;

$params["oauth_version"] = "1.0";

$params["oauth_signature_method"] = "HMAC-SHA1";

$params["oauth_timestamp"] = time();

$params["oauth_nonce"] = mt_rand();

$params["oauth_consumer_key"] = $this->appid;

$params["oauth_token"] = $access_token;

$params["openid"] = $openid;

unset($params["oauth_signature"]);

$sign = $this->sign($params, "GET"."&".rawurlencode("$url")."&", $this->appkey . & . $_SESSION["qq_secret"]);

$url = $url."?".$this->format($params)."&"."oauth_signature=".rawurlencode($sign);

$result = file_get_contents($url);

return json_decode(str_replace(array("/n", "/t"), , $result), true);

}

}

//---------------------------

?>

使用方法

请求代码

//下面是数据库操作业务

}

//---------------------------

?>

http://www.bkjia.com/PHPjc/478739.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/478739.htmlTechArticle//--------------------------- ?php class qzone { var $appid = "***********";//换成您的 var $appkey = "**********";//换成您的 //除去数组中的空值和签名模式 funct...

...后面保留的位数

* @param string $mode

* @return mixed

*/function _str_repeat($str=null, $start = 4, $end = 4, $mode = '*'){

if(!empty($str))

php str_repeat()函数用于通过重复给定字符串固定次数来创建新字符串,语法是str_repeat(string,repeat)。它接受一个字符串和一个整数作为参数,并返回一个新字符串,该字符串是通过将作为参数传递的字符串重复由作为该函数的参数...

PHP中有一个函数:String str_repeat($str, num);挺好用的....以下通过js和php模拟实现。 1:PHP版本 复制代码 代码如下: /*PHP版实现*/ function repeat($str, $num){ return implode( $str, array_

...=========================================================

$buffer = str_repeat("A", 9999);com_invoke($buffer, 1);?>

com_propput()

...毁变量占用的内存!我们先看一个例子:

...al_encoding($code);$len = mb_strlen($str);return mb_substr($str, 0, 1) . str_repeat('*', $len - 2) . mb_substr($str, $len - 1, 1);}echo hide_repa

...我们先看一个例子:

...kynWCWK+OBAA7'),array('images/tree_I.gif','R0lGODlhEwAUALMAAHt7e/8A'.str_repeat('/',57).'yH5BAEAAAEALAAAAAATABQAAAQfMMhJq7Xg6s1n7mD4haQ2lqiXrtLJku4

再谈PHP中的str_repeat函数实现 前段时间讨论了在PHP中生成某多个某字符或字符串的字符串的问题,呵呵。这句话听起来太别扭了。举个例子就是,生成10个a的字符串就是aaaaaaaaaa。当然这里的a可以是ab或任何其他字符串。

PHP中有一个函数:String str_repeat($str, num);挺好用的....以下通过js和php模拟实现。 1:PHP版本 复制代码 代码如下: /*PHP版实现*/ function repeat($str, $num){ return implode(...

POWERED BY ©点凡CMS-PHP技术站 ALL RIGHTS RESERVED  本网站部分内容来源于互联网,如有侵犯版权请来信告知,我们将立即处理(363623854#qq.com)

qzone.class.php,PHP QQ登录接口应用_PHP教程 - str_repeat相关推荐

  1. QQ登录接口申请流程(全面)

    QQ登录第三方接口申请流程 前言介绍 相关流程 最后结语 前言介绍 Web项目的用户登录,怎么申请QQ登录接口?流程如下! 相关流程 进入QQ互联官网 登录QQ,完善开发者信息 我是分割线 我是分割线 ...

  2. 安卓应用调用QQ登录接口

    安卓应用调用QQ登录接口 注册成为开发者并提交APP审核 先在QQ互联网站注册成为开发者,进行邮箱验证 此时你填写完信息后只是保存到腾讯服务器了,而没有提交审核,你个人信息状态显示未提交审核,提交审核 ...

  3. PHP QQ 登录接口应用

    //--------------------------- <?php  class qzone { var $appid = "***********";//换成您的 va ...

  4. java qq登录接口_java server qq第三方登录接口

    qqUtil类 public class QQUtils { /** * 利用获取到的accessToken,openid 去获取用户在Qzone的昵称等信息 * @param request * @ ...

  5. php mysql 手机归属地_PHP手机号码归属地查询代码(API接口/mysql)_PHP教程

    文章来介绍一下关于手机号码归属地实现方法,我们可以利用api接口与mysql+php来实例有需要的同学看看. 首先我们介绍使用自己的数据库查询多个手机号码,那还是建议你拥有一个自己的的手机号码数据库. ...

  6. php实现抽奖接口实例,PHP转盘抽奖接口实例_PHP教程

    PHP转盘抽奖接口实例 这篇文章主要介绍了PHP转盘抽奖接口的实现方法,实例分析了随机抽奖接口的实现原理与对应数据库操作的技巧,需要的朋友可以参考下 本文实例讲述了PHP转盘抽奖接口的实现方法.分享给 ...

  7. 小黄鸡微信接口 php,php版小黄鸡simsimi聊天机器人接口分享_PHP教程

    复制代码 代码如下: function simsimi($keyword) { $keyword = urlencode(urlencode($keyword)); //---– 获取COOKIE - ...

  8. php小黄鸡,php版小黄鸡simsimi聊天机器人接口分享_PHP教程

    复制代码 代码如下: function simsimi($keyword) { $keyword = urlencode(urlencode($keyword)); //---– 获取COOKIE - ...

  9. [bhpyg] QQ互联接口 ,第三方帐号登录

    1.介绍 现在很多网站都集成了第三方帐号登录的功能,比如QQ登录.微信登录.微博登录. 使用第三方帐号登录目的,简化用户注册的流程,实现快速的注册登录. 第三方登录基本流程:①跳转到第三方认证页面 ② ...

最新文章

  1. 作用c语言算圆的周长,C语言入门级代码 输入圆的半径求出圆的周长及面积
  2. UOJ#37. 【清华集训2014】主旋律
  3. python通过url下载文件不可读_python-selenium实现的简易下载器,并常见错误解决
  4. win7远程桌面连接不上,解决办法
  5. C++实现单链表的反序
  6. uboot kernel 博客
  7. Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13
  8. 释放 HTML5 audio 的力量
  9. 周鸿祎内部讲话:大公司要创新,就必须做小
  10. wamp修改默认80端口
  11. 非平衡电桥电阻计算_直流双臂电桥使用方法,统统告诉你
  12. RESTFeel: 一个企业级的API管理测试平台。RESTFeel帮助你设计、开发、测试您的API...
  13. 如何判断电脑已感染“磁碟机”病毒?
  14. 多读书多看报,少吃零食多睡觉—2014总结,2015规划
  15. paypal订阅流程及api请求
  16. java模拟器下载_JAVA模拟器(指小游)
  17. 战双帕弥什登入显示服务器错误,战双帕弥什无法登陆怎么办 进不了游戏解决方法...
  18. VC++调节笔记本屏幕亮度(附源码)
  19. java根据前序和中序建树_(Java实现)二叉树---根据前序、中序、后序数组还原二叉树...
  20. 常见处理器MCU、MPU、DSP、FPGA等嵌入式处理器概念

热门文章

  1. 在手机里输入八卦及64卦符号(老年教程)
  2. Audio之音频帧周期(四十三)
  3. Android MediaRecorder调用AudioRecord流程
  4. ALSA驱动、设备函数调用关系
  5. 集成Android免费语音合成功能(在线、离线、离在线融合),有这一篇文章就够了(离线)
  6. 一键杀死最近打开APP
  7. Android handleMessage和sendMessage 简单示例
  8. Android7 mediacodec SEI
  9. 解决Tensorflow2.0出现:AttributeError: module 'tensorflow' has no attribute 'get_default_graph'的问题
  10. 人越是没钱,越要戒掉这4点毛病,否则穷苦一辈子!