用安全邮箱和手机找回密码。
/**
* 普通找回密码
*
*/
function index()
{
if(!IS_POST)
{
/* 导入jQuery的表单验证插件 */
$this->import_resource('jquery.plugins/jquery.validate.js');
if (Conf::get('captcha_status.register'))
{
$this->assign('captcha', 1);
}
$this->display("find_password_1.html");
}
else
{
if($_POST['sign']=="step1"){
$addr = $_SERVER['HTTP_REFERER'];
if (empty($_POST['user_name']))
{
$this->show_warning("unsettled_required", 'go_back', $addr);
return ;
}
$user_name = trim($_POST['user_name']);
$model_member =& m('member');
$info = $model_member->get("user_name='{$user_name}' or safeemail='{$user_name}' or safephone='{$user_name}'");
if (empty($info))
{
$this->show_warning('not_exist','go_back', $addr);
return;
}else{
if(!empty($info['safeemail'])){
$this->assign('email',$info['safeemail']);
$info['safeemail']=preg_replace('/^(\w{3})(\w*)@([\w\.]*)\.(\w*)$/', '\1****@\3.\4', $info['safeemail']);
}
if(!empty($info['safephone'])){
$this->assign('phone',$info['safephone']);
$info['safephone']=preg_replace('/^(\d{3})(\d{4})(\d{4})$/', '\1****\3', $info['safephone']);
}
}
$this->assign('userinfo',$info);
$this->import_resource('jquery.plugins/jquery.validate.js');
$this->display("find_password_2.html");
}else if($_POST['sign']=="step2"){
$addr = $_SERVER['HTTP_REFERER'];
if($_SESSION['yanzhengma'] == $_POST['yanzhengma']){
$this->assign('user_id',$_POST['user_id']);
$this->assign('yanzhengma',$_POST['yanzhengma']);
$this->import_resource('jquery.plugins/jquery.validate.js');
$this->display("find_password_3.html");
}else{
$this->show_warning("request_error",'back_index', 'index.php');
}
}
else if($_POST['sign']=="step3"){
if($_SESSION['yanzhengma'] == $_POST['yanzhengma'] || !empty($_POST['user_id']) || !empty($_POST['password'])){
$ms =& ms(); //连接用户系统
$ms->user->edit($_POST['user_id'],'', array('password' => $_POST['password']) ,true); //强制修改
if ($ms->user->has_error())
{
$this->show_warning($ms->user->get_error());
return;
}
$this->show_message("edit_success",'login_in', 'index.php?app=member&act=login','back_index', 'index.php');
}else{
$this->show_warning("request_error",'back_index', 'index.php');
return ;
}
}
}
}
//前台页面,第一步,输入用户名;第二步选择何种方式找回,验证;第三步修改密码
第二步:
<script type="text/javascript">
$(function(){
$('#checktype').change(function(){
if(this.value=="email"){
$('.phonetr').hide();
$('.emailtr').show();
$('.getcode').show();
return;
}
if(this.value=="phone"){
$('.emailtr').hide();
$('.phonetr').show();
$('.getcode').show();
return;
}
if(this.selectedIndex=="0"){
$('.phonetr').hide();
$('.emailtr').hide();
$('.getcode').hide();
}
});
var ecanSend =true;
var etime=180;
$("#egetcode").click(function (){
var btn = $(this);
if (!ecanSend) return;
if($('#checktype').val()=="email" && $('#email').val()!=""){
ecanSend = false;
btn.attr({ "disabled": "disabled" });
var sendaddress = $('#email').val();
var hander = setInterval(function () {
if (etime <= 0) {
ecanSend = true;
clearInterval(hander);
etime=180;
btn.val("重新发送验证码");
btn.removeAttr("disabled");
}
else {
ecanSend = false;
btn.attr({ "disabled": "disabled" });
btn.val(etime + "秒后可重新发送");
etime--;
}
}, 1000);
$.ajax({
type: "get",
url : "index.php?app=member&act=get_code&sign=1&ajax=1",
data: {
sendaddress :function(){
return sendaddress;
}
}/*,
success:function(msg){
if (msg == "1") {
alert("邮件已发送至:" + sendaddress+ " 请注意查收!");
}else if (msg == "2") {
alert("等待再次发送!");
}else if (msg == "0") {
alert("邮件发送失败,请检查邮件地址是否正确!");
}
}*/
});
}else{
alert("请检查重新选择!");
}
});
var pcanSend =true;
var ptime=180;
$("#pgetcode").click(function (){
var btn = $(this);
if (!pcanSend) return;
if($('#checktype').val()=="phone" && $('#phone').val()!=""){
pcanSend = false;
btn.attr({ "disabled": "disabled" });
var sendaddress = $('#phone').val();
var hander = setInterval(function () {
if (ptime <= 0) {
pcanSend = true;
clearInterval(hander);
ptime=180;
btn.val("重新发送验证码");
btn.removeAttr("disabled");
}
else {
pcanSend = false;
btn.attr({ "disabled": "disabled" });
btn.val(ptime + "秒后可重新发送");
ptime--;
}
}, 1000);
$.ajax({
type: "get",
url : "index.php?app=member&act=get_code&sign=2&ajax=1",
data: {
sendaddress :function(){
return sendaddress;
}
}/*,
success:function(msg){
if (msg == "1") {
alert("短信已发送至:" + sendaddress+ " 请注意查收!");
}else if (msg == "2") {
alert("短信等待3分钟才能再次发送!");
}else if (msg == "0") {
alert("短信发送失败,请检查邮件地址是否正确!");
}
}*/
});
}else{
alert("请检查重新选择!");
}
});
$('#find_password_form').validate({
errorPlacement: function(error, element){
var error_td = element.parent('td');
error_td.find('.field_notice').hide();
error_td.append(error);
},
success : function(label){
label.addClass('validate_right').text('OK!');
},
onkeyup: false,
rules : {
yanzhengma : {
required : true,
remote : {
url :'index.php?app=member&act=check_code&ajax=1',
type:'get',
data:{
yanzhengma :function(){
return $('#yanzhengma').val();
}
},
beforeSend:function(){
var _checking = $('#checking_code');
_checking.prev('.field_notice').hide();
_checking.next('label').hide();
$(_checking).show();
},
complete :function(){
$('#checking_code').hide();
}
}
}
},
messages : {
yanzhengma : {
required : '{$lang.yanzhengma_required}',
remote : '{$lang.yanzhengma_taken}'
}
}
});
})
</script>
<form action="" method="POST" id="find_password_form">
<input type="hidden" name="sign" value="step2">
<input type="hidden" name="user_id" value="{$userinfo.user_id}">
<input type="hidden" id="email" value="{$email}">
<input type="hidden" id="phone" value="{$phone}">
<table>
<tr>
<td>{$lang.your_username}:</td><td>{$userinfo.user_name}</td>
</tr>
<tr>
<td>找回方式:</td>
<td>
<select id="checktype" name="checktype">
<option value="0">请选择</option>
<!--{if $userinfo.safeemail}-->
<option value="email">安全邮箱方式找回</option>
<!--{/if}-->
<!--{if $userinfo.safephone}-->
<option value="phone">安全手机方式找回</option>
<!--{/if}-->
</select>
</td>
</tr>
<tr class="emailtr" style="display:none;">
<td>{$lang.your_email}:</td><td>{$userinfo.safeemail}</td>
</tr>
<tr class="phonetr" style="display:none;">
<td>{$lang.your_phone}:</td><td>{$userinfo.safephone}</td>
</tr>
<tr class="emailtr" style="display:none;">
<td></td>
<td><input type="button" id="egetcode" value="{$lang.getcodebtn}" /></td>
</tr>
<tr class="phonetr" style="display:none;">
<td></td>
<td><input type="button" id="pgetcode" value="{$lang.getcodebtn}" /></td>
</tr>
<tr class="getcode" style="display:none;">
<td>{$lang.getcode}:</td>
<td><input type="text" id="yanzhengma" class="text width4" name="yanzhengma"/><label class="field_notice">{$lang.falseyanzhenma}</label><label name="checking_code" id="checking_code" class="checking">{$lang.checking}</label></td>
</tr>
<tr class="distance">
<td></td>
<td><input type="submit" value="{$lang.submit}" name="Submit" class="btn" id="captcha1"></td>
</tr>
</table>
</form>