|
- <?php
- require './source/class/class_core.php';
- C::app()->init();
- //新建.php文件,放到论坛根目录即可测试
- /*
- 通过 authkey uid 计算出9位数字验证码 (无需存入数据库)
- 参数1:附加文本 (可以是手机号,邮箱地址等)
- 参数2:时间戳 (校验时搜索用,留空为当前时间戳)
- */
- function getcode($text = '',$time = 0){
- global $_G;
- $hash = $_G['setting']['authkey'].chr(0).$_G['uid'].chr(0).$text;
- $hash .= floor(($time ? $time : $_G['timestamp']) / 60);
- $crc = abs(crc32(md5($hash,1))) % 1000000000;
- return sprintf("%09d", $crc);
- }
- /*
- 校验9位验证码是否在有效期内
- 参数1:9位验证码
- 参数2:附加文本 (与生成时的必须一致)
- 参数3:有效期 (搜索范围,默认30分钟)
- 验证通过返回1 否则返回0
- */
- function checkcode($code,$text,$tov = 30){
- global $_G;
- $timestamp = $_G['timestamp'];
- for($i=0;$i<$tov;$i++) {
- if(getcode($text,$timestamp - $i*60) == $code){
- return 1;
- }
- }
- return 0;
- }
- $code = getcode("AAAA");
- echo $code."<br>";
- echo checkcode($code,"AAAA") ? "ok" : "err";
- ?>
复制代码 |
|