<?php
 /*
 * 74cms 会员注册
 * ============================================================================
 * 版权所有: 骑士网络，并保留所有权利。
 * 网站地址: http://www.74cms.com；
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
*/
define('IN_QISHI', true);
require_once(dirname(__FILE__).'/../include/common.inc.php');
require_once(QISHI_ROOT_PATH.'include/mysql.class.php');
require_once(QISHI_ROOT_PATH.'include/fun_user.php');
$db = new mysql($dbhost,$dbuser,$dbpass,$dbname);
unset($dbhost,$dbuser,$dbpass,$dbname);
$smarty->cache = false;
$act = !empty($_REQUEST['act']) ? trim($_REQUEST['act']) : 'enter';
if ($act=='enter')
{
	$smarty->assign('title','找回密码 - '.$_CFG['site_name']);
	$smarty->display('user/getpass.htm');
}
//找回密码第1步 选择找回方式
elseif ($act=='get_pass_type')
{	
	$utype=$_POST['utype']?intval($_POST['utype']):showmsg('请选择用户类型！',1);
	$email=$_POST['email']?trim($_POST['email']):showmsg('请输入邮箱/用户名！',1);
	$vcode=$_POST['vcode']?trim($_POST['vcode']):showmsg('请输入验证码！',1);
	if(strcasecmp($_SESSION['imageCaptcha_content'],$vcode)!=0)
	{
		showmsg('验证码错误！',1);
	}
	if($utype==1 && !preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/",$email))
	{
		$userinfo=get_user_inusername($email,$utype);
	}
	else
	{
		$userinfo=get_user_inemail($email,$utype);
	}
	if (empty($userinfo))
	{
		showmsg('用户名或注册邮箱填写错误',1);
	}
	else
	{
		$smarty->assign('title','找回密码 - 选择找回方式 -'.$_CFG['site_name']);
		$smarty->assign('userinfo',$userinfo);
		$smarty->display('user/get_pass_type.htm');
	}
}
// 找回密码 发送验证
elseif($act=="send_url")
{
	$get_type=$_POST['get_type']?intval($_POST['get_type']):showmsg('请选择找回密码方式！',1);
	$uid=intval($_POST['uid']);
	$utype=intval($_POST['utype']);
	$userinfo=get_user_inid($uid);
	if($get_type==1)
	{
		$mailconfig=get_cache('mailconfig');
		$time=time();
		$url="<a href='".$_CFG['site_domain'].$_CFG['site_dir']."user/user_getpass.php?act=set_pass&uid={$userinfo[uid]}&passhs={$userinfo[pwd_hash]}&sendtime={$time}&get_pass_type=1'>重置密码链接</a>";
		$str="您申请了".$_CFG['site_name']."“忘记密码”功能，为了安全起见，我们不再直接发送您的原密码，请点击以下链接重新设置您的密码<br>".$url."若有问题，请致电".$_CFG['bootom_tel']."，或联系在线客服，我们的客服人员将会为您提帮助";
		if (smtp_mail($userinfo['email'],"".$_CFG['site_name']."用户密码找回！",$str))
		{
			header('location:?act=get_pass_verify&get_type=1&uid='.$userinfo["uid"]);
		}
		else
		{
			showmsg('邮件发送失败，请联系网站管理员',0);
		}
	}
	elseif($get_type==2)
	{	
		header('location:?act=get_pass_verify&get_type=2&uid='.$userinfo["uid"]);
	}
}
// 发送手机验证码
elseif($act=="send_sms")
{
	$mobile=trim($_POST['mobile']);
	if (empty($mobile) || !preg_match("/^(13|15|18)\d{9}$/",$mobile))
	{
	exit("手机号错误");
	}
	else
	{
		$rand=mt_rand(100000, 999999);	
		$r=send_sms($mobile,"感谢您使用{$_CFG['site_name']}手机找回密码,验证码为:{$rand},此验证码有效时间10分钟");
		if ($r=="success")
		{
		$_SESSION['mobile_rand']=$rand;
		$_SESSION['send_time']=time();
		exit("success");
		}
		else
		{
		exit("SMS配置出错，请联系网站管理员");
		}
	}
}
// 找回密码 第2步 安全验证
elseif($act=="get_pass_verify")
{
	$get_type=intval($_GET['get_type']);
	$smarty->assign('get_type',$get_type);
	$uid=intval($_GET['uid']);
	$userinfo=get_user_inid($uid);
	$smarty->assign('userinfo',$userinfo);
	$smarty->assign('title','找回密码 - 安全验证 -'.$_CFG['site_name']);
	$smarty->display('user/get_pass_verify.htm');
}
// 第三步重置密码
elseif($act=="set_pass")
{
	global $db;
	$get_type=$_REQUEST['get_pass_type']?intval($_REQUEST['get_pass_type']):showmsg("出错了！",1);
	if($get_type==1)
	{
		$time=time();
		$sendtime=$_GET['sendtime']+24*3600;
		$uid=intval($_GET['uid']);
		$passhs=trim($_GET['passhs']);
		if($time>$sendtime)
		{
			$link['text']='重新发送';
			$link['text']='重新发送';
			showmsg("您的链接已过期,请重新发送链接！",1);
		}
	}
	elseif($get_type==2)
	{	
		$sms_code=trim($_POST['sms_code']);
		if (empty($sms_code) || empty($_SESSION['mobile_rand']) || $sms_code<>$_SESSION['mobile_rand'])
		{
			showmsg("验证码错误！",1);
		}
		$time=time()-3600;
		if($_SESSION['send_time']<$time)
		{
			showmsg("验证码过期！",1);
		}
		$uid=intval($_REQUEST['uid']);
		$passhs=trim($_REQUEST['passhs']);
	}
	$userinfo=$db->getone("select * from ".table("members")." where uid=$uid and pwd_hash='{$passhs}'");
	$smarty->assign('userinfo',$userinfo);
	$smarty->assign('title','找回密码 - 密码重置 - '.$_CFG['site_name']);
	$smarty->display('user/get_pass_set.htm');
}
elseif($act=="set_pass_save")
{
	global $db;
	$password=$_POST['password']?trim($_POST['password']):showmsg("请输入新密码！",1);
	$rpassword=$_POST['rpassword']?trim($_POST['rpassword']):showmsg("请输入确认密码！",1);
	if($password!=$rpassword)showmsg("两次密码不一致！",1);
	$uid=intval($_POST['uid']);
	$pwd_hash=trim($_POST['passhs']);
	$password_hash=md5(md5($password).$pwd_hash.$QS_pwdhash);
	$link[0]['text'] = "立即登录";
	$link[0]['href'] = url_rewrite('QS_index');
	$links[0]['text'] = "重新找回";
	$links[0]['href'] = "?act=enter";
	$db->query("update ".table("members")." set password='{$password_hash}' where uid={$uid} and pwd_hash='{$pwd_hash}'")?showmsg("修改密码成功！",1,$link):showmsg("修改失败！",1,$links);
}
unset($smarty);
?>