给手机发验证码 综合使用 (忘记密码处理 php发验证码 重置用户密码)
- <title>找回密码 - 2015年xxx报名系统</title>
- <meta name="description" content="2015年xxx报名系统">
- <meta name="keywords" content="2015年xxx报名系统">
- <link href="<?=base_url() ?>bootstrap/./pp/pp.css" rel="stylesheet" type="text/css">
- <!--[if IE 7]>
- <link rel="stylesheet" href="<?=base_url() ?>bootstrap/http://res.ppzuche.com/static/opt/css/font-awesome-ie7.min.css?v=4476c184">
- <![endif]-->
- <!-- loading patch drivers! @adam -->
- <link rel="apple-touch-icon-precomposed" href="<?=base_url() ?>bootstrap/#static/img/apple-touch-icon-car.png">
- <script type="text/javascript">
- var InterValObj; //timer变量,控制时间
- var count = 5; //间隔函数,1秒执行
- var curCount;//当前剩余秒数
- function validatemobile(mobile)
- {
- if(mobile.length==0)
- {
- alert('请输入手机号码!');
- document.form1.mobile.focus();
- return false;
- }
- if(mobile.length!=11)
- {
- alert('请输入有效的手机号码!');
- document.form1.mobile.focus();
- return false;
- }
- var myreg = /^(((13[0-9]{1})|159|153)+\d{8})$/;
- if(!myreg.test(mobile))
- {
- alert('请输入有效的手机号码!');
- document.form1.mobile.focus();
- return false;
- }
- }
- function sendMessage() {
- curCount = count;
- //设置button效果,开始计时
- $("#btnSendCode").attr("disabled", "true");
- $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
- InterValObj = window.setInterval(SetRemainTime, 1000); //启动计时器,1秒执行一次
- //向后台发送处理数据
- var mobile = document.getElementById("mobile").value;
- validatemobile(mobile);//验证手机号码正确性
- $.ajax({
- type: "POST", //用POST方式传输
- url: '<?=base_url() ?>../member/send_code', //目标地址.
- dataType: "json", //数据格式:JSON
- //data: "dealType=" + dealType +"&uid=" + uid + "&code=" + code,
- data: "&a="+mobile,
- success: function(json){
- if(json.msgid==1){//成功的处理
- alert(json.html);
- }
- else if(json.msgid==2){//失败的处理
- alert(json.html);
- }
- else{
- alert(json.html);
- }
- }
- });
- }
- //timer处理函数
- function SetRemainTime() {
- if (curCount == 0) {
- window.clearInterval(InterValObj);//停止计时器
- $("#btnSendCode").removeAttr("disabled");//启用按钮
- $("#btnSendCode").val("重新发送验证码");
- }
- else {
- curCount--;
- $("#btnSendCode").val("请在" + curCount + "秒内输入验证码");
- }
- }
- </script>
- </head>
- <body>
- <!-- New Menu Starts -->
- <div id="page">
- <div class="container mainPage" style="margin:20px 0px 0px -10px;height:590px;">
- <div class="row text-center se_login_plogin"><h1 style="margin-left:0px">东西南北中羽毛球大赛北京站报名</h1></div>
- <!--加框
- <div class="row-fluid sortable ui-sortable" style=" width:100%; margin-left:auto; margin-right:auto;">
- <div style="margin-left:300px" class="box span5">
- <div class="box-header well">
- <h2 style="margin-top:-10px;"><i class="icon-th"></i> 注册</h2>
- </div>
- <div class="box-content" style="margin-left:60px;">
- <td><a class="btn btn-primary" href="<?=base_url() ?>register" style="width:200px"> 注册 </a> </td>
- </div>
- </div>
- </div>
- -->
- <div class="row-fluid sortable ui-sortable" style=" width:100%; margin-left:auto; margin-right:auto;">
- <div style="margin-left:240px;margin-top:60px;" class="box span6">
- <div class="box-header well">
- <h2 style="margin-top:-10px;"><i class="icon-th"></i> 找回密码</h2>
- </div>
- <div class="box-content">
- <table border="0" cellspacing="4" cellpadding="4" align="left">
- <form id="signupForm" class="regleader" action="<?=base_url() ?>member/validatinfo" method="post" >
- <tr>
- <td width="180" height="40" align="right">手机号码</td>
- <td > <input type="text" style="width:180px" name="mobile" class="inputxt" value="" id="mobile" required/></td>
- <td>
- <input id="btnSendCode" type="button" value="发送验证码" onclick="sendMessage()" />
- </td>
- </tr>
- <tr>
- <td height="40" align="right">验证码</td>
- <td><input type="text" value="" name="code" class="inputxt" required="" style="width:100px"/></td>
- </tr>
- <tr>
- <td ></td>
- <td ><button type="submit" class="btn btn-primary" id="login" style="width:200px" > 下一步 </button>
- </td>
- </tr>
- <tr>
- <td height="10" colspan="2"></td>
- </tr>
- <tr><td height="10" colspan="3"></td></tr>
- <tr><td colspan="3" align="center"><a href="<?=base_url() ?>bootstrap/intro.asp"> >>> 点击这里,反馈问题及提出建议和想法 >>></a></td></tr>
- </table>
- </form>
- <div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- public function send_code(){
- $mobile=$_POST['a'];
- $message = substr(uniqid(),8,5);
- $send = 0;
- //--2014年12月15日---
- //email=hrb&Password=00007&MsgContent=您在XXX网站注册的手机验证码为:
- //yvp4vq,此验证码同时也是您的初始登录密码,请在登录后及时修改。[XXX]
- //&mobileNumber=18000076670&SendTime=&SubNumber=
- $sql = "insert into message (contect,sendtime,mobile) values
- ('".$message."','".date('Y-m-d H:i:s')."','".$mobile."')";
- //var_dump($sql);
- $query = $this->db->simple_query($sql);
- if($query){
- $insID = $this->db->insert_id();
- date_default_timezone_set('Asia/Chongqing');
- $data=array('email'=>'XXX',//短信接口用户名
- 'Password'=>'XXX',//短信接口密码
- 'MsgContent'=>$message,//'hrb'.date('Y-m-d H:i:s'),
- 'mobileNumber'=>$mobile,
- 'SendTime'=>date('Y-m-d H:i:s'),
- 'SubNumber'=>'',);
- //echo date('y-m-d h:i:s',time());
- $data=http_build_query($data);
- $opts=array(
- 'http'=>array(
- 'method'=>'POST',
- 'header'=>"Content-type:application/x-www-form-urlencoded\r\n".
- "Content-Length:".strlen($data)."\r\n",
- 'content'=>$data
- ),
- );
- $context=stream_context_create($opts);
- $html = file_get_contents('http://www.smssend.com.cn/api/send.asp',false,$context);
- //echo $html;
- $result = strpos($html,'<string xmlns="http://tempuri.org/">0');
- //var_dump($result);
- if($result){
- $sql = "update message set status = 1 where id = ".$insID;
- $query = $this->db->simple_query($sql);
- //echo "短信发送成功!";
- //return TRUE;
- $send = 1;
- }else{
- //return FALSE;
- //echo "短信发送失败!";
- $send = 0;
- }
- }
- //$get=$_POST['a'];
- //给指定的手机号发短信功能
- //echo '<script>alert("报名成功!");</script>';
- //一般返回json格式的。可以返回数组处理,上面的text也是可以
- //$ismobile = 验证手机函数();
- // $ismobile = 1;
- // if($ismobile){
- //验证过是手机号码,发送短信 下面进行逻辑处理,写个发送短信的函数,返回发送状态
- //这边默认成功
- // $send = 1;
- if($send){
- $msgid = 1;//表示发送成功
- $html = '验证码已发送!';//'返回提示,也可以不用这个直接返回一个msgid即可';//做提示
- }
- else{
- $msgid = 2;//表示发送失败
- $html = '提示失败原因';
- }
- // }
- // else{
- // $msgid = 0;//表示失败
- // $html = '手机号码错误';
- // }
- echo json_encode(array('msgid'=>$msgid,'html'=>$html));
- // echo '<script>alert("报名成功!");location.href="www.baidu.com";</script>';
- // echo $code;
- /*
- $this->load->view('head');
- $this->load->view('forget_passwd');
- $this->load->view('foot');
- */
- }
- public function validatinfo(){
- //查询提出过来的手机号是否存在
- $mobile = $this->input->post('mobile');
- $exist = $this->user_model->selectmobile($mobile);
- $code = $this->input->post('code');
- $checkcode = $this->user_model->selectcontect($mobile,$code);
- if(!$exist){
- echo '<script>alert("该手机号码未注册过,请检查是否正确!");location.href="'.base_url().'member/forget_passwd";</script>';
- }elseif($code != $checkcode['0']['contect']){
- echo '<script>alert("验证码不正确,请检查!");location.href="'.base_url().'member/forget_passwd";</script>';
- }
- else{
- // $this->load->view('head');
- // $this->load->view('forget_passwd');
- // $this->load->view('foot');
- $_SESSION['mobile'] = $mobile;
- $this->load->view('head');
- $this->load->view('repassword');
- $this->load->view('foot');
- }
- }
- public function resetpassword(){
- $password =md5($this->input->post('password'));
- $mobile = $_SESSION['mobile'];
- $resetpass = $this->user_model->resetpass($mobile,$password);
- if($resetpass){
- $_SESSION['mobile'] = '';
- echo '<script>alert("重置密码成功!");location.href="'.base_url().'";</script>';
- }else{
- $this->load->view('head');
- $this->load->view('forget_passwd');
- $this->load->view('foot');
- }
- }
- //检查验证码是否过时(10分钟)
- $sms_statistics = M('sms_statistics');
- $sms_time = $sms_statistics->order('time DESC')->where("mobile= "."'$phone'")->getField('time');
- $sms_time=strtotime($sms_time);
- $current_time=time();
- //var_dump((($current_time-$sms_time)/3600*60));
- if((($current_time-$sms_time)/3600*60)>10){
- $result=array('err_no' =>1011,'err_msg'=>"identify_code is overtime"); //验证码超时
- echo json_encode($result); exit;
- }
- $sms_statistics = M('sms_statistics');
- $count = $sms_statistics->where("mobile= "."'$mobile'"." and to_days(time) = to_days(now())")->count();//to_days(time)中 time为数据库中字段的时间
- if($count>=5){
- $result=array('err_no' =>1011,'err_msg'=>"sms has sended more than 5 times"); //不是手机号
- echo json_encode($result); exit;
- }
给手机发验证码 综合使用 (忘记密码处理 php发验证码 重置用户密码)的更多相关文章
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->用户管理模块新增“重置用户密码”功能
不管是什么系统登录用户都有忘记密码的时候,忘记密码就进入不了系统.系统应该可以提供重置用户密码的功能.在我们框架中重置用户密码功能一般用用户管理员来完成.当然如果做得复杂点还可以由用户自己来重置(如: ...
- Maven-007-Nexus 用户添加,用户角色分配,用户修改密码,管理员重置用户密码
配置好 maven nexus 私服后,默认的用户可通过查看[Users]查看当前私服中所存在的用户,如下图所示:
- zencart移站后批量替换数据库中网址、电子邮箱、重置用户密码
-- SEO标签中网址替换 update categories_description set categories_description=replace(categories_descriptio ...
- WebLogic 11g重置用户密码
weblogic安装后,很久不用,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码. 版本:WebLogic Server 11g 说明:%DOMAIN_HOME%:指WebLogic ...
- 解决(空密码的root)提示修改phpmyadmin用户密码
打开 phpmyadmin数据表,点击权限 如果没有,请参考:http://jingyan.baidu.com/article/636f38bb293a9bd6b846100d.html 创建 在 ...
- oracle 如何重置用户密码
- Oracle不知道用户密码情况下,如何在不更改密码的前提下解锁用户或者延期密码有效期
1.问题描述: 生产环境,zabbix告警业务用户密码即将过期,但是如何不知道业务用户密码的情况下来解决该问题? 2.实验一: 1)创建新的用户test,并授予test resource角色和conn ...
- Vmware虚拟机用户密码忘记了怎么办?
Vmware虚拟机用户密码忘记了怎么办? 虚拟机Linux上用户密码忘记了怎么办? 今天准备再学习一下linux操作系统,由于之前已经安装过vaware和linux(redhat),所以这次认为不 ...
- Gitlab忘记root用户密码解决办法
一.Gitlab忘记root用户密码,重置用户密码和查看用户ID号方法 1.Gitlab查看用户id号的方法1)方法1:通过api接口查询接口查询地址:http://gitlab的url/api/v ...
随机推荐
- 《HBase in Action》 第三章节的学习总结 ---- 如何编写和运行基于HBase的MapReduce程序
HBase之所以与Hadoop是最好的伙伴,我理解就因为两点:1.HADOOP的HDFS,为HBase提供了分布式的存储方式:2.HADOOP的MR为HBase提供的分布式的计算方法.u 其中第一点, ...
- IIS 实现一个主机部署多个网站 共享80端口
如果一个主机只是建立一个80端口的网站就有点浪费了,通过本文你就可以实现,在一个主机上建立多个80端口的站点,并通过不同的域名进行访问. 打开iis软件:控制面板-->管理工具-->Int ...
- saltstack之定时管理
1.设置定时任务 /srv/salt/cron/ntpdate.sls /usr/sbin/ntpdate 10.31.10.3; /sbin/hwclock -w: cron.present: - ...
- vue构建完整项目-以及实现
简介 由于开发vue项目的时候,需要重新搭建项目的架子,比较麻烦,其实之前做过的项目好多都可以直接拿过来用,比如接下来的这个项目,就可以满足平常的vue单页面开发. 该项目包括了: 全局配置axios ...
- 获取unity prefab的预览图像
官方的api可以直接获取预览图像,如下所示: Tex=AssetPreview.GetAssetPreview(Object m)as Texture; 但是如果prefab是组合体的话(即一个pre ...
- xcrun: error: unable to find utility "instruments", not a developer tool or in PATH
xcrun: error: unable to find utility "instruments", not a developer tool or in PATH 用web ...
- 微信小程序的官方文档
虽然不知道微信小程序今后的发展情况,不过做为一名it人员的我还是去了解它. 这是他的文档路径,里面有详细的使用和申请内测号的全部流程,这里就不再过多解释了. 看后那个开发小程序的文档记得分析你感觉微信 ...
- struts2一个实例中遇到的问题
今天实现了一个登录功能的Struts2小程序. 期间遇到了许多问题,记忆犹新的是 (1)新版本的tomcat9和eclipse Neon Release (4.6.0) 发生了冲突,启动服务器的时候老 ...
- 【BZOJ2806】[Ctsc2012]Cheat 广义后缀自动机+二分+单调队列优化DP
[BZOJ2806][Ctsc2012]Cheat Description Input 第一行两个整数N,M表示待检查的作文数量,和小强的标准作文库的行数接下来M行的01串,表示标准作文库接下来N行的 ...
- HDFS上传机制