사용자가 이메일 주소를 입력하고 제출을 클릭하면 jQuery는 먼저 이메일 형식이 올바른지 확인하고, 이메일 형식이 올바른지 확인하고 sendmail.php가 이메일 확인을 담당하는 백그라운드로 Ajax 요청을 보냅니다. 주소가 존재하고 이메일을 보내면 해당 응답이 첫 페이지로 전송됩니다.
jQuery 코드:
-
- $(function(){
- $("#sub_btn").click(function(){
- var email = $(" #email").val();
- var preg = /^w ([- .]w )*@w ([-.]w )*.w ([-.]w )*/; // 이메일 일치
- if(email=='' || !preg.test(email)){
- $("#chkmsg").html("정확한 이메일을 입력하세요!"); } else{
- $("#sub_btn").attr("disabled","disabled").val('제출 중..').css("cursor","default")
- $. post("sendmail.php",{mail:email},function(msg){
- if(msg=="noreg"){
- $("#chkmsg").html("이 이메일 주소는 아직 등록되지 않았습니다! ");
- $("#sub_btn").removeAttr("disabled").val('submit').css("cursor","pointer");
- }else{
- $ (".demo").html("
" msg "")
- }
- }); 🎜>})
-
-
-
- 코드 복사
-
위에 사용된 jQuery 코드는 프런트 엔드 대화형 작업을 완료하는 데 매우 편리하고 간결합니다. 특정 jQuery 기반이 있는 경우 위 코드는 한눈에 명확하고 많은 설명이 필요하지 않습니다.
물론, 페이지에 jQuery 라이브러리 파일을 로드하는 것을 잊지 마세요.
sendmail.php는 이메일이 시스템 사용자 테이블에 있는지 확인해야 합니다. 그렇다면 사용자 정보를 읽고 md5를 사용하여 사용자 ID, 사용자 이름 및 비밀번호를 암호화하여 확인 코드로 특수 문자열을 생성합니다. 비밀번호를 입력한 다음 URL을 구성하세요.
동시에 URL 링크의 적시성을 제어하기 위해 사용자가 비밀번호 검색 작업을 제출하는 작업 시간이 기록되고 마지막으로 이메일 전송 클래스가 호출되어 사용자의 사서함으로 이메일을 보냅니다.
이 기사에서 제공하는 소스 코드 패키지의 메일 클래스 smtp.class.php를 보냅니다.
예:
-
- include_once("connect.php");//데이터베이스에 연결
-
- $email = 스트립슬래시 (trim ($_POST['mail']))
-
- $sql = "`t_user`에서 ID, 사용자 이름, 비밀번호를 선택하세요. 여기서 `email`='$email'"; mysql_query( $sql);
- $num = mysql_num_rows($query);
- if($num==0){//아직 등록되지 않은 이메일 주소입니다!
- echo 'noreg';
- 종료;
- }else{
- $row = mysql_fetch_array($query)
- $uid = $row[ 'id'];
- $token = md5($uid.$row['username'].$row['password']);//결합 인증 코드
- $url = "http://bbs .it-home.org/demo/resetpass/reset.php?email=".$email."
- &token=".$token;//URL 구성
- $time = date('Y-m-d H:i ');
- $result = sendmail($time,$email,$url);
- if($result==1){//이메일이 성공적으로 전송되었습니다.
- $msg = '시스템에 sent your 이메일이 귀하의 편지함으로 전송되었습니다
귀하의 편지함에 로그인하여 제때에 비밀번호를 재설정하십시오! ';
- //데이터 전송 시간 업데이트
- mysql_query("update `t_user` set `getpasstime`='$getpasstime' where id='$uid '"); msg = $result;
- }
- echo $msg;
- }
-
- //이메일 보내기
- function sendmail($time,$email,$url){
- include_once ("smtp.class.php");
- $smtpserver = ""; //SMTP 서버, 예: smtp.163.com
- $smtpserverport = 25; //SMTP 서버 포트
- $smtpusermail = " "; //SMTP 서버의 사용자 이메일
- $smtpuser = ""; //SMTP 서버의 사용자 계정
- $smtppass = ""; //SMTP 서버의 사용자 비밀번호
- $smtp = new Smtp ( $smtpserver, $smtpserverport, true, $smtpuser, $smtppass);
- //여기서 true 중 하나는 인증이 사용됨을 의미하고, 그렇지 않으면 인증이 사용되지 않음을 의미합니다.
- $emailtype = "HTML"; , 텍스트: 텍스트; HTML
- $smtpemailto = $email;
- $smtpemailfrom = $smtpusermail;
- $emailsubject = "jbxue.com - 비밀번호 검색"
- $emailbody = " ".$email.":
".$time"에 비밀번호 검색 요청을 제출하셨습니다. 비밀번호를 재설정하려면 아래 링크를 클릭하세요.
- (버튼은 24시간 이내에 유효합니다.) < ; br/>".$url."";
- $rs = $smtp->sendmail ( $smtpemailto, $smtpemailfrom, $emailsubject, $emailbody, $emailtype)
-
- return $rs;
-
-
- 코드 복사
-
-
이때 해당 이메일은 jbxue로부터 비밀번호 검색 이메일을 받게 됩니다. 이메일 내용에 URL 링크가 포함되어 있습니다. jbxue.com의 Reset.php 링크를 클릭하여 이메일을 확인하세요.
예:
include_once("connect.php");//데이터베이스에 연결 $token = Stripslashes(trim($_GET[' token' ])); $email = Stripslashes(trim($_GET['email'])) - $sql = "email='$email'에서 *를 선택하세요."; >
- $query = mysql_query($sql);
- $row = mysql_fetch_array($query)
- if($row){
- $mt = md5($row['id']. $row ['사용자 이름'].$row['password'])
- if($mt==$token){
- if(time()-$row['getpasstime']>24* 60* 60){
- $msg = '이 링크는 만료되었습니다! ';
- }else{
- //비밀번호 재설정...
- $msg = '비밀번호를 재설정하고 비밀번호 재설정 양식을 표시하세요.
이것은 단지 데모이므로 건너뛰세요. . ';
- }
- }else{
- $msg = '잘못된 링크'
- }
- }else{
- $msg = '링크가 잘못되었습니다! ';
- }
- echo $msg
-
-
-
- 코드 복사
-
-
reset.php는 먼저 email 및 token 매개변수를 승인한 후 이메일을 기반으로 데이터 테이블 t_user에 이메일이 존재하는지 여부를 쿼리합니다. 존재하는 경우 사용자의 정보를 얻고 동일한 방식으로 토큰 값을 구성합니다. sendmail.php의 토큰 조합을 URL에서 전달된 토큰과 비교합니다. 현재 시간과 이메일이 전송된 시간의 차이가 24시간 이상인 경우 "링크가 만료되었습니다!"라는 메시지가 표시됩니다. 그렇지 않으면 링크가 유효하며 비밀번호 재설정 페이지로 리디렉션된다는 의미입니다. 마지막으로 새 비밀번호를 설정하는 것은 사용자의 몫입니다.
요약: 이 기사에서는 등록된 이메일 확인 및 이메일을 통한 비밀번호 검색을 통해 웹사이트 개발에서 이메일 전송의 응용과 그 중요성을 알고 있습니다. 물론 현재 관련 SMS 인터페이스 도킹도 인기가 있습니다. .
데이터 테이블 t_user 구조:
-
- CREATE TABLE `t_user` (
- `id` int(11) NOT NULL auto_increment,
- `username` varchar(30) NOT NULL ,
- `password` varchar(32) NOT NULL,
- `email` varchar(50) NOT NULL,
- `getpasstime` int(10) NOT NULL,
- 기본 키(`id`)
- ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
코드 복사
|