您的位置:首页 > 编程语言 > PHP开发

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐