destoon php 后台邮箱(手机) 验证码验证(可用于注册)
2018-03-13 12:59
525 查看
验证码发送到邮件 或 手机
① .web前 ajax function Dcode(i) {
$.post('login.php', {'action':'send'}, function(data) {
if(data == 'ok') {
if(!i) Dtoast('Send successful');
Dtimer();
} else if(data == 'max') {
Dtoast('Number of sending too much, please wait for site audit');
Go('index.php?reload={$DT_TIME}');
} else {
Dtoast('Send failure, please try again');
}
});
}php:case 'send':
//发送验证码
(isset($_SESSION['m_name']) && check_name($_SESSION['m_name'])) or exit('ko');
$username = $_SESSION['m_name'];
if($verify_type == 'mobile') {
$t = $db->get_one("SELECT mobile,groupid FROM {$DT_PRE}member WHERE username='$username'");
$t or exit('ko');
$t['groupid'] == 4 or exit('ko');
is_mobile($t['mobile']) or exit('ko');
$mobile = $t['mobile'];
isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
if($_SESSION['mobile_time'] && $DT_TIME - $_SESSION['mobile_time'] < 180) exit('ko');
if($_SESSION['mobile_send'] > 4) exit('max');
if(max_sms($mobile)) exit('max');
$mobilecode = random(6, '0123456789');
$_SESSION['mobile'] = $mobile;
$_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode.'|RM');
$_SESSION['mobile_time'] = $DT_TIME;
$_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
$content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
send_sms($mobile, $content);
exit('ok');
} else if($verify_type == 'email') {
$t = $db->get_one("SELECT email,groupid FROM {$DT_PRE}member WHERE username='$username'");
$t or exit('ko');
$t['groupid'] == 4 or exit('ko');
is_email($t['email']) or exit('ko');
$email = $t['email'];
isset($_SESSION['email_send']) or $_SESSION['email_send'] = 0;
isset($_SESSION['email_time']) or $_SESSION['email_time'] = 0;
if($_SESSION['email_time'] && $DT_TIME - $_SESSION['email_time'] < 60) exit('ko'.($DT_TIME - $_SESSION['email_time']));
if($_SESSION['email_send'] > 9) exit('max');
$emailcode = random(6, '0123456789');
$_SESSION['email'] = $email;
$_SESSION['email_code'] = md5($email.'|'.$emailcode.'|RE');
$_SESSION['email_time'] = $DT_TIME;
$_SESSION['email_send'] = $_SESSION['email_send'] + 1;
$title = $L['register_msg_emailcode'];
$content = ob_template('emailcode', 'mail');
send_mail($email, $title, stripslashes($content));
exit('ok');
}
exit('ko');
break;
②. 网站前台验证操作
类似界面如下:
web前端:function Dverify() {
var val,len;
val = $('#code').val();
if(!$('#code').val().match(/^[a-z0-9]{6}$/)) {
Dtoast('Please fill in the verification code you received');
return false;
}
$.post('login.php', {'action':'verify','code':$('#code').val()}, function(data) {
if(data == 'ok') {
Dtoast('Registration Successful');
setTimeout(function() {
Go('my.php?reload={$DT_TIME}');
}, 1000);
} else {
Dtoast('Authentication Failed');
}
});
return;
}php 后台处理: //验证操作
case 'verify':
(isset($_SESSION['m_name']) && check_name($_SESSION['m_name'])) or exit('ko1');
$username = $_SESSION['m_name'];
isset($code) or $code = '';
preg_match("/^[0-9]{6}$/", $code) or exit('ko2');
$t = $db->get_one("SELECT email,mobile,groupid,regid FROM {$DT_PRE}member WHERE username='$username'");
$t or exit('ko3');
// exit(print_r($_SESSION['email_code']));//004917063e6bcceb397a437c193cabc71
// exit(print_r(md5($t['email'].'|'.$code.'|RE')));//004917063e6bcceb397a437c193cabc71
$t['groupid'] == 4 or exit('ko4');
if($verify_type == 'mobile') {
$_SESSION['mobile_code'] == md5($t['mobile'].'|'.$code.'|RM') or exit('ko5');
} else if($verify_type == 'email') {
$_SESSION['email_code'] == md5($t['email'].'|'.$code.'|RE') or exit('ko6');
}
$db->query("UPDATE {$DT_PRE}member SET groupid='$t[regid]',".($verify_type == 'mobile' ? 'vmobile' : 'vemail')."=1 WHERE username='$username'");
$db->query("UPDATE {$DT_PRE}company SET groupid='$t[regid]' WHERE username='$username'");
require DT_ROOT.'/module/member/member.class.php';
$do = new member;
$user = $do->login($username, '', 0, true);
if($user) {
$post = $user;
$post['password'] = $_SESSION['m_pass'];
if($MOD['welcome_sms'] && is_mobile($post['mobile'])) {
$message = lang('sms->wel_reg', array($post['truename'], $DT['sitename'], $post['username'], $post['password']));
$message = strip_sms($message);
send_sms($post['mobile'], $message);
}
if($MOD['welcome_message'] || $MOD['welcome_email']) {
$title = $L['register_msg_welcome'];
$content = ob_template('welcome', 'mail');
if($MOD['welcome_message']) send_message($username, $title, $content);
if($MOD['welcome_email'] && $DT['mail_type'] != 'close') send_mail($post['email'], $title, $content);
}
session_destroy();
}
exit('ok');
break;
① .web前 ajax function Dcode(i) {
$.post('login.php', {'action':'send'}, function(data) {
if(data == 'ok') {
if(!i) Dtoast('Send successful');
Dtimer();
} else if(data == 'max') {
Dtoast('Number of sending too much, please wait for site audit');
Go('index.php?reload={$DT_TIME}');
} else {
Dtoast('Send failure, please try again');
}
});
}php:case 'send':
//发送验证码
(isset($_SESSION['m_name']) && check_name($_SESSION['m_name'])) or exit('ko');
$username = $_SESSION['m_name'];
if($verify_type == 'mobile') {
$t = $db->get_one("SELECT mobile,groupid FROM {$DT_PRE}member WHERE username='$username'");
$t or exit('ko');
$t['groupid'] == 4 or exit('ko');
is_mobile($t['mobile']) or exit('ko');
$mobile = $t['mobile'];
isset($_SESSION['mobile_send']) or $_SESSION['mobile_send'] = 0;
isset($_SESSION['mobile_time']) or $_SESSION['mobile_time'] = 0;
if($_SESSION['mobile_time'] && $DT_TIME - $_SESSION['mobile_time'] < 180) exit('ko');
if($_SESSION['mobile_send'] > 4) exit('max');
if(max_sms($mobile)) exit('max');
$mobilecode = random(6, '0123456789');
$_SESSION['mobile'] = $mobile;
$_SESSION['mobile_code'] = md5($mobile.'|'.$mobilecode.'|RM');
$_SESSION['mobile_time'] = $DT_TIME;
$_SESSION['mobile_send'] = $_SESSION['mobile_send'] + 1;
$content = lang('sms->sms_code', array($mobilecode, $MOD['auth_days']*10)).$DT['sms_sign'];
send_sms($mobile, $content);
exit('ok');
} else if($verify_type == 'email') {
$t = $db->get_one("SELECT email,groupid FROM {$DT_PRE}member WHERE username='$username'");
$t or exit('ko');
$t['groupid'] == 4 or exit('ko');
is_email($t['email']) or exit('ko');
$email = $t['email'];
isset($_SESSION['email_send']) or $_SESSION['email_send'] = 0;
isset($_SESSION['email_time']) or $_SESSION['email_time'] = 0;
if($_SESSION['email_time'] && $DT_TIME - $_SESSION['email_time'] < 60) exit('ko'.($DT_TIME - $_SESSION['email_time']));
if($_SESSION['email_send'] > 9) exit('max');
$emailcode = random(6, '0123456789');
$_SESSION['email'] = $email;
$_SESSION['email_code'] = md5($email.'|'.$emailcode.'|RE');
$_SESSION['email_time'] = $DT_TIME;
$_SESSION['email_send'] = $_SESSION['email_send'] + 1;
$title = $L['register_msg_emailcode'];
$content = ob_template('emailcode', 'mail');
send_mail($email, $title, stripslashes($content));
exit('ok');
}
exit('ko');
break;
②. 网站前台验证操作
类似界面如下:
web前端:function Dverify() {
var val,len;
val = $('#code').val();
if(!$('#code').val().match(/^[a-z0-9]{6}$/)) {
Dtoast('Please fill in the verification code you received');
return false;
}
$.post('login.php', {'action':'verify','code':$('#code').val()}, function(data) {
if(data == 'ok') {
Dtoast('Registration Successful');
setTimeout(function() {
Go('my.php?reload={$DT_TIME}');
}, 1000);
} else {
Dtoast('Authentication Failed');
}
});
return;
}php 后台处理: //验证操作
case 'verify':
(isset($_SESSION['m_name']) && check_name($_SESSION['m_name'])) or exit('ko1');
$username = $_SESSION['m_name'];
isset($code) or $code = '';
preg_match("/^[0-9]{6}$/", $code) or exit('ko2');
$t = $db->get_one("SELECT email,mobile,groupid,regid FROM {$DT_PRE}member WHERE username='$username'");
$t or exit('ko3');
// exit(print_r($_SESSION['email_code']));//004917063e6bcceb397a437c193cabc71
// exit(print_r(md5($t['email'].'|'.$code.'|RE')));//004917063e6bcceb397a437c193cabc71
$t['groupid'] == 4 or exit('ko4');
if($verify_type == 'mobile') {
$_SESSION['mobile_code'] == md5($t['mobile'].'|'.$code.'|RM') or exit('ko5');
} else if($verify_type == 'email') {
$_SESSION['email_code'] == md5($t['email'].'|'.$code.'|RE') or exit('ko6');
}
$db->query("UPDATE {$DT_PRE}member SET groupid='$t[regid]',".($verify_type == 'mobile' ? 'vmobile' : 'vemail')."=1 WHERE username='$username'");
$db->query("UPDATE {$DT_PRE}company SET groupid='$t[regid]' WHERE username='$username'");
require DT_ROOT.'/module/member/member.class.php';
$do = new member;
$user = $do->login($username, '', 0, true);
if($user) {
$post = $user;
$post['password'] = $_SESSION['m_pass'];
if($MOD['welcome_sms'] && is_mobile($post['mobile'])) {
$message = lang('sms->wel_reg', array($post['truename'], $DT['sitename'], $post['username'], $post['password']));
$message = strip_sms($message);
send_sms($post['mobile'], $message);
}
if($MOD['welcome_message'] || $MOD['welcome_email']) {
$title = $L['register_msg_welcome'];
$content = ob_template('welcome', 'mail');
if($MOD['welcome_message']) send_message($username, $title, $content);
if($MOD['welcome_email'] && $DT['mail_type'] != 'close') send_mail($post['email'], $title, $content);
}
session_destroy();
}
exit('ok');
break;
相关文章推荐
- jQuery 找回密码三步验证邮箱正则表达式 验证手机 获取验证码倒计时 php版
- PHP 实现 注册等的邮箱验证 (二)—— 使用 PHPMailer 发送邮件
- PHP用户注册邮箱验证激活账号
- 注册 Gmail,验证手机号码的时候提示“此号码不能用于验证”,怎么解决?
- PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
- PHP激活用户注册验证邮箱
- jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
- PHP用户注册邮箱并验证激活帐号
- asp.net后台正则表达式验证手机号码邮箱
- asp.net后台正则表达式验证手机号码邮箱
- ECMALL注册(邮箱或手机验证)
- php注册时候邮箱验证的原理
- jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码
- 手机号码注册带正则验证和发验证码倒计时
- tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片
- 一个简单的注册登录页面(包括阿里大于的手机验证)html+JS+AJAX+PHP
- 手机短信验证码注册-短信平台验证码开发6
- jQuery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码(未测试)
- jquery 实现 点击按钮后倒计时效果,多用于实现发送手机验证码、邮箱验证码