0

0

php实现检验手机号码与IMEI的短信验证码

墨辰丷

墨辰丷

发布时间:2018-06-11 10:37:56

|

3694人浏览过

|

来源于php中文网

原创

本文给大家分享的是可以检验手机号码与imei的短信验证码发送的php类,十分的实用,这里推荐给大家,有需要的小伙伴可以参考下。

php实现的IMEI限制的短信验证码发送类

isMobile($mobile)) {
      $this->error = array('code' => -1, 'msg' => '这个手机号很奇葩哦,请正确输入后重试');
      return false;
    }
 
    $redis = Api_Common::redis();
    $vcKey = 'VC_'.$mobile;
    $limitKey = 'VC_LIMIT_'.$mobile;
 
    // 验证码重发限制
    $data = json_decode($redis->get($vcKey), true);
    if($data && time() < $data['resend_expire']) {
      $this->error = array('code' => -1, 'msg' => '短信已在1分钟内发出,请耐心等待');
      return false;
    }
 
    // 手机号及IMEI限制
    $sendCnt = $redis->zScore($limitKey, $imei);
    if($sendCnt && $sendCnt >= self::ONE_DAY_FREQ) {
      $this->error = array('code' => -1, 'msg' => '没收到短信?请稍等或检查短信是否被屏蔽');
      return false;
    }
    $imeiCnt = $redis->zCard($limitKey);
    if($imeiCnt >= self::ONE_DAY_IMEI_COUNT && !$sendCnt) {
      $this->error = array('code' => -1, 'msg' => '已超过验证码发送设备限制');
      return false;
    }
 
    // 获取验证码
    if(!$data) {
      $vc = strval(rand(100000, 999999));
      $data = array('vc' => $vc, 'resend_expire' => 0);
      $redis->set($vcKey, json_encode($data));
      $redis->expire($vcKey, self::EXPIRE_SEC); // 设置验证码过期时间
    }
    $vc = $data['vc'];
 
    $content = '安全验证码:'.$vc;
    $result = $this->send($mobile, $content);
    if($result) {
      // 重设重发时限
      $data['resend_expire'] = time() + self::RESEND_SEC;
      $ttl = $redis->ttl($vcKey);
      $redis->set($vcKey, json_encode($data));
      $redis->expire($vcKey, $ttl);
 
      // 设置手机号与IMEI限制
      $redis->zIncrBy($limitKey, 1, $imei);
      $redis->expireAt($limitKey, strtotime(date('Y-m-d',strtotime('+1 day'))));
    }
    return $result;
  }
 
  /**
   * 向指定手机号发送短信
   * @param $mobile
   * @param $content
   * @return bool
   */
  public function send($mobile, $content){
    // TODO 调用具体服务商API
    return true;
  }
 
  /**
   * 判断是否为合法手机号
   * @param $mobile
   * @return bool
   */
  private function isMobile($mobile) {
    if(preg_match('/^1\d{10}$/', $mobile))
      return true;
    return false;
  }
 
  /**
   * 验证短信验证码
   * @param $mobile
   * @param $vc
   * @return bool
   */
  public function checkVerifyCode($mobile, $vc) {
    $vcKey = 'VC_'.$mobile;
    $vcData = json_decode(Api_Common::redis()->get($vcKey), true);
    if($vcData && $vcData['vc'] === $vc) {
      return true;
    }
    return false;
  }
 
  /**
   * 清除验证码
   * @param $mobile
   */
  public function cleanVerifyCode($mobile) {
    $redis = Api_Common::redis();
    $vcKey = 'VC_'.$mobile;
    $limitKey = 'VC_LIMIT_'.$mobile;
    $redis->del($vcKey);
    $redis->del($limitKey);
  }
}

另付其他网友实现的短信验证码代码

$uid,         //用户账号
    'pwd'=>strtolower(md5($pwd)),  //MD5位32密码
    'mobile'=>$mobile,        //号码
    'content'=>$content,     //内容
    'time'=>$time,    //定时发送
    'mid'=>$mid           //子扩展号
    );
  $re= postSMS($http,$data);     //POST方式提交
  if( trim($re) == '100' )
  {
    return "发送成功!";
  }
  else
  {
    return "发送失败! 状态:".$re;
  }
}
 
function postSMS($url,$data='')
{
  $row = parse_url($url);
  $host = $row['host'];
  $port = $row['port'] ? $row['port']:80;
  $file = $row['path'];
  while (list($k,$v) = each($data)) 
  {
    $post .= rawurlencode($k)."=".rawurlencode($v)."&"; //转URL标准码
  }
  $post = substr( $post , 0 , -1 );
  $len = strlen($post);
  $fp = @fsockopen( $host ,$port, $errno, $errstr, 10);
  if (!$fp) {
    return "$errstr ($errno)\n";
  } else {
    $receive = '';
    $out = "POST $file HTTP/1.1\r\n";
    $out .= "Host: $host\r\n";
    $out .= "Content-type: application/x-www-form-urlencoded\r\n";
    $out .= "Connection: Close\r\n";
    $out .= "Content-Length: $len\r\n\r\n";
    $out .= $post;   
    fwrite($fp, $out);
    while (!feof($fp)) {
      $receive .= fgets($fp, 128);
    }
    fclose($fp);
    $receive = explode("\r\n\r\n",$receive);
    unset($receive[0]);
    return implode("",$receive);
  }
}
?>

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐:

立即学习PHP免费学习笔记(深入)”;

wifi优化大师app v1.0.1 安卓版
wifi优化大师app v1.0.1 安卓版

Wifi优化大师最新版是一款免费的手机应用程序,专为优化 Wi-Fi 体验而设计。它提供以下功能: 增强信号:提高 Wi-Fi 信号强度,防止网络中断。 加速 Wi-Fi:提升上网速度,带来更流畅的体验。 Wi-Fi 安检:检测同时在线设备,防止蹭网。 硬件加速:优化硬件传输性能,提升连接效率。 网速测试:实时监控网络速度,轻松获取网络状态。 Wifi优化大师还支持一键连接、密码记录和上网安全测试,为用户提供全面的 Wi-Fi 管理体验。

下载

php针对字符串函数操作的方法

php针对目录操作的方法

PHP使用Snoopy类实现页面抓取的方法

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2846

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1699

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1556

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

1058

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1505

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1256

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1629

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1309

2023.11.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 9.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 10.4万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号