php实现登录短信验证
时间:2022-05-03
本文章向大家介绍php实现登录短信验证,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
今天benny要跟大家说这个其实很简单,就是借用某一个平台的短信api接口实现短信验证,说简单呢,那是因为他的官网:http://www.ucpaas.com上有开发文档,它可以教会一个小白很快的运用它的接口,并开发自己的应用。这个官网还算人性化的,因为你一注册,就给了你10块钱的测试费用来尝试使用它的api,你要知道一条短信0.055元,10块钱给你拿来学习测试已经够多啦!
首先,你进入官网,注册,然后你就点击开发文档:
这里有详细的介绍你怎么用它的东西,我就不在这里bb啦,看完后我们就直接下载一个php的demo文件来试试!!
下载后,你就可以看到一个封装的类Ucpaas.class.php和一个index.php的文件:
上面的注释有详细的解释,要用到的参数啥的,你注册了账号后也就自然有了,多看几遍,有点基础的人几分钟内就可以看得懂的啦!
接着,你就开始阅读官网下面目录的内容:
这里有详细的介绍,我就只是做一个引导吧,具体的大家去阅读哦。
最后,我把这个短信验证功能在我的项目上实现了,你可以看下我的代码截图:
<?php
//载入ucpass类
require('library/Db.class.php');
require_once('library/Ucpaas.class.php');
//初始化必填
$options['accountsid']='******';(这个不能给大家看哦)
$options['token']='******';(这个不能给大家看哦)
//初始化 $options必填
$ucpass = new Ucpaas($options);
//开发者账号信息查询默认为json或xml
header("Content-Type:text/html;charset=utf-8");
//短信验证码(模板短信),默认以65个汉字(同65个英文)为一条(可容纳字数受您应用名称占用字符影响),超过长度短信平台将会自动分割为多条发送。分割后的多条短信将按照具体占用条数计费。
// 验证码短信:同一个手机号1分钟内不能超过2条,24小时内不能超过8条
$appId = "****";(这个不能给大家看哦)
$to=$_POST['to'];
$templateId = "244286";
$string='';
for ($i=0; $i <4 ; $i++) {
$string.=rand(0,9);
}
$param=$string;
$db = new DB();
$sql ="select * from mr_user where username = :username";
$user = $db->row($sql,array('username' =>$to));
//用户名存在
$id=$user['id'];
if ($user){
$password=md5($param);
$update_sql = "update mr_user set password ='$password' where id='$id'";
$result_id = $db->query($update_sql);
if ($result_id){
$data=$ucpass->templateSMS($appId,$to,$templateId,$param);
$re='';
$arr = json_decode($data,true);
foreach ($arr as $key => $value) {
if ($key=='resp') {
foreach ($value as $key2 => $value2) {
if ($key2=='respCode') {
$re=$value2;
}
}
}
}
if ($re=='000000') {
echo 1;//短信已发送!
}elseif ($re=='105147') {
echo 3;//短信发送太频繁
}else{
echo 2;//号码输入有误
}
exit(0);
}
else{
echo 0;//短信发送出错!
}
}else {
$data=$ucpass->templateSMS($appId,$to,$templateId,$param);
$re='';
$arr = json_decode($data,true);
foreach ($arr as $key => $value) {
if ($key=='resp') {
foreach ($value as $key2 => $value2) {
if ($key2=='respCode') {
$re=$value2;
}
}
}
}
if ($re=='000000') {
$addtime = time();
$insert_sql = "insert into mr_user(username,password,addtime) value(:username,:password,$addtime)";
$result_id = $db->query($insert_sql,array('username' =>$to,'password'=>md5($param)));
if ($result_id){
echo 1;//短信已发送!
}else{
echo 0;//短信发送出错!
}
}elseif($re='105147'){
echo 3;//短信发送太频繁
}else{
echo 2;//号码输入有误
}
}
- 别对我说谎!你的小九九我都知道
- Spring集成RabbitMQ-使用RabbitMQ更方便
- Nodejs学习笔记(三)--- 模块
- 使用JClouds在Java中获取和发布云服务器
- Silverlight单元测试框架
- Enterprise Library深入解析与灵活应用(2): 通过SqlDependency实现Cache和Database的同步
- 让你感觉不真实的13个伟大科学成就和发现
- 分析Silverlight跨域调用
- Spring集成RabbiMQ-Spring AMQP新特性
- Nodejs学习笔记(二)--- 事件模块
- 巧用FireFox来调试Silverlight
- Nodejs学习笔记(一)--- 简介及安装Node.js开发环境
- WCF后续之旅(7):通过WCF Extension实现和Enterprise Library Unity Container的集成
- 区块链技术(一):Truffle开发入门
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC