PHPMail 发邮件(网站找回密码模块开发)
1.用户验证
验证用户名是否是已注册会员。一般用ajax验证数据库User表。
ajax代码如下:
$(‘[name=cpname]‘).blur(function(){ var re = /^\w{6,12}$/; if(re.test($(this).val())){ //ajax连接数据库验证 $.ajax({ url:‘Cp/check_cpname/cpname/‘+$(‘[name=cpname]‘).val(), type:‘get‘, success:function($msg){ if($msg==0){ check_cpname=true; $(‘[name=cpname]‘).next().html(‘<font color="red">×</font>‘); }else{ check_cpname=false; $(‘[name=cpname]‘).next().html(‘<font color="red">√ </font>‘); } } }); }else{ $(this).next().html(‘<font color="red">×</font>‘); } });
验证码自定义
2.邮箱验证:
如同步骤1,验证用户输入的邮箱是否为注册绑定邮箱。
3.发送邮件:
本步骤使用PHPMailer组件。去网上搜素PHPmailer的组件下载。
将以下两个类库放入项目组件的目录:
Class.mailer.php class.smtp.php(大部分都是smtp协议,如果是pop3协议,则是class.pop3.php)
邮件配置方法:
public function sendmail($to,$subject,$content){ include_once(‘class.phpmailer.php’); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->IsHTML(true); $mail->CharSet ="UTF-8"; $mail->Encoding = "base64"; $mail->AddAddress($to, ""); $mail->Subject = $subject; $mail->Body = $content; $mail->Port = 25; // 以下 5 个变量值必须据实修改 $host = ‘smtp.ym.163.com‘;//网易的企业邮箱 $username = ‘‘;//真实邮件地址 $password = ‘‘;//真实密码 $from = ‘‘;//发件的email $fromname =’’;//发件者名称 //$mail->AddReplyTo("", ""); //$mail->AddAttachment("ok.jpg"); //附件 // 以下设置 - 不要更改! $mail->Host = $host; $mail->Username = $username; $mail->Password = $password; $mail->From = $from; $mail->FromName = $fromname; // 发送并返回相应信息 return $mail->Send(); }
邮件发送方法:
public function doemail(){ $email=trim($_POST[‘email‘]); $to =$email; $subject = ‘找回密码‘; $code=rand(100000,999999);//六位随机数,口令 $_SESSION[‘CODE‘]=$code;//存入session $contents = ‘’; $content.=‘<li style="width:500px; float:left; ">恭喜您!找回密码成功,请在30分钟内点输入口令。</li>‘; $content.=‘<li style="width:1000px; float:left;">找回密码口令码:‘; $content.=‘<span style="color:#F00;">‘; $content.=$code; $content.="</li>"; if($this->sendmail($to,$subject,$content)) { $_SESSION[‘SENDTIME‘]=time(); //记录发送时间
//跳到口令验证页面 }else{ echo ‘邮件发送失败,请重试!‘; //跳回邮箱验证页面 } }
4.口令验证:
public function dosafepwdsuccess() { $code=$_POST[‘code‘]; if($code==‘‘){ echo ‘口令为空’; //跳转原页面 }else{ if(time()-$_SESSION[‘SENDTIME‘] <1800){//验证是否口令过期,这里是30分钟有效时间 if($code==$_SESSION[‘CODE‘]){//验证口令 $_SESSION[‘CODE‘]=rand(100000,999999);//验证过后立马让原口令失效 //跳转到重置密码页面 }else{ echo ‘口令有误或您已经验证过此口令!‘; //跳转原页面 } }else{ echo ‘对不起,口令失效,请重新发送邮件!‘; //跳转邮件发送页 } } }
5.重置密码
这个就没什么可说的了。重置新密码就OK。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。