欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP+jQuery 注冊(cè)模塊的改進(jìn)(二):郵箱激活

 更新時(shí)間:2014年10月14日 15:10:33   作者:小dee  
本文是PHP+jQuery 注冊(cè)模塊的改價(jià)的第二篇,主要是繼續(xù)完善郵箱激活賬號(hào)方面的功能,非常的詳細(xì),有需要的朋友可以參考下
$(function(){    //郵箱地址  function mailaddr(mail){              if(!mail.split("@")[1]){          alert("參數(shù)錯(cuò)誤");      return false;    }    var mail = mail.split("@");        mail = mail[1].toLowerCase();        //與常用郵箱進(jìn)行對(duì)比    if(mail == "qq.com" || mail == "vip.qq.com" || mail == "foxmail.com"){          return 'mail.qq.com';    }else if(mail == '163.com'){      return 'mail.163.com';    }else if(mail == 'vip.163.com'){            return 'vip.163.com';    }else if(mail == '126.com'){      return'mail.126.com';    }else if(mail == 'gmail.com'){      return'mail.google.com';    }else if(mail == 'sohu.com'){      return'mail.sohu.com';    }else if(mail == 'tom.com'){      return'mail.tom.com';    }else if(mail == 'vip.sina.com'){      return'vip.sina.com';    }else if(mail == 'sina.com.cn' || mail == 'sina.com'){      return'mail.sina.com.cn';    }else if(mail == 'tom.com'){      return'mail.tom.com';    }else if(mail == 'yahoo.com.cn' || mail == 'yahoo.cn'){      return'mail.cn.yahoo.com';    }else if(mail == 'tom.com'){      return'mail.tom.com';    }else if(mail == 'yeah.net'){      return'www.yeah.net';    }else if(mail == '21cn.com'){      return'mail.21cn.com';    }else if(mail == 'hotmail.com'){      return'www.hotmail.com';    }else if(mail == 'sogou.com'){      return'mail.sogou.com';    }else if(mail == '188.com'){      return'www.188.com';    }else if(mail == '139.com'){      return'mail.10086.cn';    }else if(mail == '189.cn'){      return'webmail15.189.cn/webmail';    }else if(mail == 'wo.com.cn'){      return'mail.wo.com.cn/smsmail';    }else if(mail == '139.com'){      return'mail.10086.cn';    }else{            return'';    }      }  var uemailaddr = $("#mailaddr").text();    if(mailaddr(uemailaddr) == ""){      $("#maillogin").remove();    //控制樣式    $(".ftit2").css("top","110px");    $(".notice").css("bottom","-120px");    $("#mailaddr").click(function(){          return false;    });  }else{      $("#mailaddr").attr("href","http://"+mailaddr(uemailaddr));    $("#maillogin a").attr("href","http://"+mailaddr(uemailaddr));  }})

2.給激活鏈接設(shè)置失效時(shí)間

關(guān)于設(shè)置失效時(shí)間的目的,我在網(wǎng)上看到有這幾種說(shuō)法,第一是節(jié)省資源,過(guò)期的數(shù)據(jù)會(huì)被清除,這種說(shuō)法我不認(rèn)同,因?yàn)樵谶^(guò)期之后,只是這一條激活連接不能使用,但是注冊(cè)用戶可以重新發(fā)送鏈接,所以用戶數(shù)據(jù)并沒(méi)有被清除;第二種說(shuō)法是安全,即在較短時(shí)間內(nèi)激活,可以避免用戶郵箱被盜引發(fā)的安全問(wèn)題,對(duì)于這一點(diǎn)我也不認(rèn)同,因?yàn)榧词褂脩羿]箱被盜,還是可以重新發(fā)送激活鏈接,激活鏈接的地址仍然是在郵箱里面,所以和被盜不被盜沒(méi)有關(guān)系;我認(rèn)為是,在一個(gè)較長(zhǎng)的時(shí)間內(nèi),如果網(wǎng)站的注冊(cè)機(jī)制或者找回密碼機(jī)制發(fā)生了變化,失效時(shí)間可以在一定程度上避免很早之前的激活鏈接仍按照以前的機(jī)制而帶來(lái)激活錯(cuò)誤或者找回密碼錯(cuò)誤,此時(shí)用戶可以選擇重新生成最新的激活鏈接來(lái)保證注冊(cè)或者找回密碼的正確性,對(duì)網(wǎng)站來(lái)說(shuō)更穩(wěn)定安全。

思路:

需要在數(shù)據(jù)庫(kù)中增加兩個(gè)字段,分別是表示用戶的注冊(cè)日期:regdate( int ),和激活鏈接是否有效的lockurl( tinyint )。

當(dāng)用戶注冊(cè)成功時(shí),把當(dāng)前日期插入到表中的regdate字段;當(dāng)用戶超過(guò)有效期沒(méi)有點(diǎn)擊激活鏈接,再次點(diǎn)擊激活鏈接時(shí)就把數(shù)據(jù)庫(kù)中的lock字段修改成1,當(dāng)lock為1時(shí),該鏈接失效,直到用戶重新生成注冊(cè)鏈接時(shí)更換activekey后,把lock值設(shè)為0,同時(shí)更新注冊(cè)時(shí)間,用戶才可以點(diǎn)擊新的鏈接發(fā)送郵件進(jìn)行激活。

修改和新增的的文件有:

register_chk.php,注冊(cè)成功時(shí)把當(dāng)前的時(shí)間戳插入表中;

activation.php中在update user表的active字段之前,先判斷是否超過(guò)有效期,如果超過(guò),則active字段不變,同時(shí)lockurl字段設(shè)為1,此時(shí)給出提示:請(qǐng)重新激活并且跳轉(zhuǎn)至reactivation.php頁(yè)面;

reactivation.php接受參數(shù),如果參數(shù)正確,則顯示是重新收取激活鏈接還是返回注冊(cè)頁(yè),如果參數(shù)錯(cuò)誤則直接返回注冊(cè)頁(yè);

當(dāng)選擇重新收取激活鏈接,則跳轉(zhuǎn)至remail.php,如果參數(shù)正確,則更新注冊(cè)時(shí)間和activekey,然后重新發(fā)送郵件,郵件中的地址依然指向activation.php。如果參數(shù)錯(cuò)誤,則跳轉(zhuǎn)回注冊(cè)頁(yè)。

其他修改之處:

1.把郵件代碼寫成郵件類

郵件注冊(cè)類mail.class.php:

<?php function postmail($auth,$port,$envelope,$password,$smtp,$postuemail,$subject,$mailbody){  //$smtp smtp郵件服務(wù)器地址  //$postuemail 用戶注冊(cè)郵件  //$subject 郵件主題  //$mailbody 郵件內(nèi)容   $config = array(        'auth'=>$auth,//發(fā)件人    'port' =>$port,//端口    'username'=>$envelope,//發(fā)件郵箱    'password'=>$password //發(fā)件郵箱密碼    );    //實(shí)例化驗(yàn)證的對(duì)象,使用gmail smtp服務(wù)器  $transport = new Zend_Mail_Transport_Smtp($smtp,$config);  $mail = new Zend_Mail('utf-8');    $mail->addTo($postuemail,'獲取用戶注冊(cè)激活鏈接');  $mail->setFrom($envelope,$auth);  $mail->setSubject($subject);  $mail->setBodyHtml($mailbody);  $mail->send($transport);}

2.用戶名注冊(cè)時(shí)區(qū)分大小寫,修改checkname.php

//用戶名區(qū)分大小寫$sql = "select uname from user where binary uname='".$uname."'";

流程圖:

需要注意的是,GET傳遞的參數(shù)也要進(jìn)行轉(zhuǎn)義處理。

Js倒計(jì)時(shí)跳轉(zhuǎn)代碼 showTime.js:

var textBox = document.getElementById("textBox");var second = document.getElementById("second");var t = 4;function showTime(href){  t-=1;  second.innerHTML = t;  if(t==0){      textBox.innerHTML = "正在跳轉(zhuǎn)...";    self.location = href;  }  setTimeout("showTime(href)",1000);}

注冊(cè)并發(fā)送郵件代碼 register_chk.php:

<?php   header("charst=utf-8");  include_once 'conn/conn.php';  include_once 'Zend/Mail/Transport/Smtp.php';  include_once 'Zend/Mail.php';  include_once 'mail.class.php';    //激活key,生成的隨機(jī)數(shù)  $key = md5(rand());    //先寫入數(shù)據(jù)庫(kù),再發(fā)郵件  //寫入數(shù)據(jù)庫(kù)  //判斷是否開(kāi)啟magic_quotes_gpc  if(get_magic_quotes_gpc()){      $postuname = $_POST['uname'];    $postupwd = $_POST['upwd'];    $postuemail = $_POST['uemail'];  }else{        $postuname = addslashes($_POST['uname']);    $postupwd = addslashes($_POST['upwd']);    $postuemail = addslashes($_POST['uemail']);  }  function check_input($value){      // 如果不是數(shù)字則加引號(hào)    if (!is_numeric($value)){          $value = mysql_real_escape_string($value);    }    return $value;  }    $postuname = check_input($postuname);  $postupwd = check_input($postupwd);  $postuemail = check_input($postuemail);  $sql = "insert into user(uname,upwd,uemail,activekey,regdate)values('".trim($postuname)."','".md5(trim($postupwd))."','".trim($postuemail)."','".$key."','".time()."')";  $num = $conne->uidRst($sql);  if($num == 1){        //插入成功時(shí)發(fā)送郵件    //用戶激活鏈接    $url = 'http://'.$_SERVER['HTTP_HOST'].'/activation.php';    //urlencode函數(shù)轉(zhuǎn)換url中的中文編碼    //帶反斜杠    $url.= '?name='.urlencode(trim($postuname)).'&k='.$key;//file_put_contents("D:/mylog.log",$url." *********\r\n",FILE_APPEND);    //定義登錄使用的郵箱    $envelope = 'dee1566@126.com';    $password = '換成郵箱的密碼';    $port = 25;    $auth = 'login';    $smtp = 'smtp.126.com';        //激活郵件的主題和正文    $subject = '激活您的帳號(hào)';    $mailbody = '注冊(cè)成功,<a href="'.$url.'" target="_blank">請(qǐng)點(diǎn)擊此處激活帳號(hào)</a>';        postmail($auth,$port,$envelope,$password,$smtp,$postuemail,$subject,$mailbody);    echo "<script>self.location=\"maillogin.php?m=".$postuemail."\";</script>";  }else{      //提示激活失敗并跳轉(zhuǎn)    echo "<div id=\"textBox\">激活失敗,請(qǐng)重新注冊(cè),<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至重新激活頁(yè)...</div>";    echo "<script src=\"templets/js/showTime.js\"></script>";          echo "<script>var href='register.php';showTime(href);</script>";  }?>

激活。activation.php:

<?php session_start();header('Content-type:text/html;charset=utf-8');include_once 'conn/conn.php';$nowTime = time();$table = "user";if(!empty($_GET['name']) && !is_null($_GET['name']) && !empty($_GET['k']) && !is_null($_GET['k'])){            if(get_magic_quotes_gpc()){      $getname = stripslashes(urldecode($_GET['name']));    $k = stripslashes(urldecode($_GET['k']));  }else{      $getname = urldecode($_GET['name']);    $k = urldecode($_GET['k']);  }  //urldecode反轉(zhuǎn)url中的中文編碼  $sql = "select * from ".$table." where uname='".$getname."' and activekey='".$k."'";file_put_contents("D:/mylog.log",$sql."  ---\r\n",FILE_APPEND);  $num = $conne->getRowsNum($sql);  if($num>0){        $rs = $conne->getRowsRst($sql);      //注冊(cè)時(shí)間    $rsRegdate = $rs['regdate'];        //有效期2分鐘    if($nowTime > $rsRegdate+120){          //超過(guò)有效期      $upnum = $conne->uidRst("update ".$table." set lockurl = 1 where uname = '".$getname."' and activekey = '".$k."'");      if($upnum>0){        //提示激活失敗并跳轉(zhuǎn)        echo "<div id=\"textBox\">超過(guò)激活有效期,激活失敗,<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至重新激活頁(yè)...</div>";        echo "<script src=\"templets/js/showTime.js\"></script>";        echo "<script>var href='reactivation.php?n=".urlencode($getname)."&k=".$k."';showTime(href);</script>";      }else{              //提示激活失敗并跳轉(zhuǎn)        echo "<div id=\"textBox\">激活失敗,請(qǐng)重新注冊(cè),<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至重新激活頁(yè)...</div>";        echo "<script src=\"templets/js/showTime.js\"></script>";              echo "<script>var href='register.php';showTime(href);</script>";      }    }else{          $upnum = $conne->uidRst("update ".$table." set active = 1 where uname = '".$getname."' and activekey = '".$k."'");      if($upnum>0){              $_SESSION['name'] = urldecode($getname);        echo "<script>alert('您已成功激活');window.location.href='main.php';</script>";      }else{              echo "<script>alert('您已經(jīng)激活過(guò)了');window.location.href='main.php';</script>";      }    }        }else{        //提示激活失敗并跳轉(zhuǎn)    echo "激活鏈接已失效,請(qǐng)重新發(fā)送激活鏈接或重新注冊(cè)";    echo "<script>window.setTimeout(\"self.location='register.php'\",3000);</script>";  }}?>

用戶選擇重新激活或返回注冊(cè)頁(yè) reactivation.php:

<?phpheader("charst=utf-8");if(isset($_GET['n']) && $_GET['n']!="" && isset($_GET['k']) && $_GET['k']!=""){  //過(guò)濾處理  if(get_magic_quotes_gpc()){      $n = stripslashes(urldecode($_GET['n']));    $k = stripslashes(urldecode($_GET['k']));  }else{    $n = $_GET['n'];    $k = $_GET['k'];  }  echo "<a href='remail.php?n=".urlencode($n)."&k=".urlencode($k)."'>重新收取激活郵件</a>";  echo "<a href='register.php'>返回注冊(cè)頁(yè)</a>";}else{  echo "<div id=\"textBox\">參數(shù)錯(cuò)誤,請(qǐng)重新注冊(cè),<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";  echo "<script src=\"templets/js/showTime.js\"></script>";        echo "<script>var href='register.php';showTime(href);</script>";}?>

重新發(fā)送郵件 remail.php:

<?phpheader("charst=utf-8");include_once 'conn/conn.php';include_once 'Zend/Mail/Transport/Smtp.php';include_once 'Zend/Mail.php';include_once 'mail.class.php';if(isset($_GET['n']) && $_GET['n']!="" && isset($_GET['k']) && $_GET['k']!=""){  //過(guò)濾處理  if(get_magic_quotes_gpc()){      $n = stripslashes(urldecode($_GET['n']));    $k = stripslashes(urldecode($_GET['k']));  }else{    $n = $_GET['n'];    $k = $_GET['k'];  }    $table = "user";  //先查詢記錄  $sql = "select * from ".$table." where uname='".$n."' and activekey='".$k."'";  $rs = $conne->getRowsRst($sql);    $rsuemail = $rs['uemail'];  $num = $conne->getRowsNum($sql);  if($num == 1){      $key = md5(rand());    //更新注冊(cè)時(shí)間    $nowTime = time();    //update activekey和lockurl    $upnum = $conne->uidRst("update ".$table." set activekey = '".$key."' , lockurl=0,regdate = '".$nowTime."' where uname = '".$n."' and activekey = '".$k."'");    if($upnum == 1){          //插入成功時(shí)發(fā)送郵件      //用戶激活鏈接      $url = 'http://'.$_SERVER['HTTP_HOST'].'/activation.php';      //urlencode函數(shù)轉(zhuǎn)換url中的中文編碼      //帶反斜杠      $url.= '?name='.urlencode((trim($n))).'&k='.$key;      //定義登錄使用的郵箱      $envelope = 'dee1566@126.com';      $password = '換成自己的郵箱密碼';      $port = 25;      $auth = 'login';      $smtp = 'smtp.126.com';            //激活郵件的主題和正文      $subject = '激活您的帳號(hào)';      $mailbody = '注冊(cè)成功,<a href="'.$url.'" target="_blank">請(qǐng)點(diǎn)擊此處激活帳號(hào)</a>';      postmail($auth,$port,$envelope,$password,$smtp,$rsuemail,$subject,$mailbody);      echo "<script>self.location=\"maillogin.php?m=".$rsuemail."\";</script>";          }else{          //提示激活失敗并跳轉(zhuǎn)      echo "<div id=\"textBox\">激活失敗,<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";      echo "<script src=\"templets/js/showTime.js\"></script>";            echo "<script>var href='register.php';showTime(href);</script>";    }      }else{      //提示激活失敗并跳轉(zhuǎn)    echo "<div id=\"textBox\">12激活失敗,<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";    echo "<script src=\"templets/js/showTime.js\"></script>";          echo "<script>var href='register.php';showTime(href);</script>";  }}else{  echo "<div id=\"textBox\">參數(shù)錯(cuò)誤,請(qǐng)重新注冊(cè),<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";  echo "<script src=\"templets/js/showTime.js\"></script>";        echo "<script>var href='register.php';showTime(href);</script>";}?>

3.maillogin.php頁(yè)面重新發(fā)送激活鏈接

思路: 注冊(cè)頁(yè)register_chk.php和重新發(fā)送郵件的remail.php頁(yè)面在發(fā)送郵件以后跳至maillogin.php時(shí),除了把email通過(guò)GET傳遞過(guò)去,再加上name和key,在maillogin.php頁(yè)面把接受到的后兩個(gè)參數(shù)接受到hidden的input里,通過(guò)jQuery的post方法請(qǐng)求remailajax.php重新發(fā)送郵件。發(fā)送成功以后通過(guò)jQuery設(shè)置定時(shí)器顯示文字通知用戶,4秒后自動(dòng)消失。

如圖:

代碼:

register_chk.php:

<?php   header("charst=utf-8");  include_once 'conn/conn.php';  include_once 'Zend/Mail/Transport/Smtp.php';  include_once 'Zend/Mail.php';  include_once 'mail.class.php';    //激活key,生成的隨機(jī)數(shù)  $key = md5(rand());    //先寫入數(shù)據(jù)庫(kù),再發(fā)郵件  //寫入數(shù)據(jù)庫(kù)  //判斷是否開(kāi)啟magic_quotes_gpc  if(get_magic_quotes_gpc()){      $postuname = trim($_POST['uname']);    $postupwd = trim($_POST['upwd']);    $postuemail = trim($_POST['uemail']);  }else{        $postuname = addslashes(trim($_POST['uname']));    $postupwd = addslashes(trim($_POST['upwd']));    $postuemail = addslashes(trim($_POST['uemail']));  }  function check_input($value){      // 如果不是數(shù)字則加引號(hào)    if (!is_numeric($value)){          $value = mysql_real_escape_string($value);    }    return $value;  }    $postuname = check_input($postuname);  $postupwd = check_input($postupwd);  $postuemail = check_input($postuemail);  $sql = "insert into user(uname,upwd,uemail,activekey,regdate)values('".$postuname."','".md5($postupwd)."','".$postuemail."','".$key."','".time()."')";  $num = $conne->uidRst($sql);  if($num == 1){        //插入成功時(shí)發(fā)送郵件    //用戶激活鏈接    $url = 'http://'.$_SERVER['HTTP_HOST'].'/activation.php';    //urlencode函數(shù)轉(zhuǎn)換url中的中文編碼    //帶反斜杠    $url.= '?name='.urlencode($postuname).'&k='.$key;    //定義登錄使用的郵箱    $envelope = 'dee1566@126.com';    $password = '郵箱密碼';    $port = 25;    $auth = 'login';    $smtp = 'smtp.126.com';        //激活郵件的主題和正文    $subject = '激活您的帳號(hào)';    $mailbody = '注冊(cè)成功,<a href="'.$url.'" target="_blank">請(qǐng)點(diǎn)擊此處激活帳號(hào)</a>';        postmail($auth,$port,$envelope,$password,$smtp,$postuemail,$subject,$mailbody);    echo "<script>self.location=\"maillogin.php?m=".$postuemail."&n=".urlencode($postuname)."&k=".$key."\";</script>";  }else{      //提示激活失敗并跳轉(zhuǎn)    echo "<div id=\"textBox\">激活失敗,請(qǐng)重新注冊(cè),<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至重新激活頁(yè)...</div>";    echo "<script src=\"templets/js/showTime.js\"></script>";          echo "<script>var href='register.php';showTime(href);</script>";  }?>

remail.php:

<?phpheader("charst=utf-8");include_once 'conn/conn.php';include_once 'Zend/Mail/Transport/Smtp.php';include_once 'Zend/Mail.php';include_once 'mail.class.php';if(isset($_GET['n']) && $_GET['n']!="" && isset($_GET['k']) && $_GET['k']!=""){  //過(guò)濾處理  if(get_magic_quotes_gpc()){      $n = stripslashes(urldecode($_GET['n']));    $k = stripslashes(urldecode($_GET['k']));  }else{    $n = $_GET['n'];    $k = $_GET['k'];  }file_put_contents("D:/mylog.log",$n."  xxx\r\n",FILE_APPEND);    $table = "user";  //先查詢記錄  //addslashes($n) 因?yàn)槭褂昧薽ysql_real_escape_string,所以存儲(chǔ)在數(shù)據(jù)庫(kù)中的是帶轉(zhuǎn)義的字符串  $sql = "select * from ".$table." where uname='".$n."' and activekey='".$k."'";  $rs = $conne->getRowsRst($sql);    $rsuemail = $rs['uemail'];file_put_contents("D:/mylog.log",$sql." xxx\r\n",FILE_APPEND);  $num = $conne->getRowsNum($sql);  if($num == 1){      $key = md5(rand());    //更新注冊(cè)時(shí)間    $nowTime = time();    //update activekey和lockurl    $upnum = $conne->uidRst("update ".$table." set activekey = '".$key."' , lockurl=0,regdate = '".$nowTime."' where uname = '".$n."' and activekey = '".$k."'");    if($upnum == 1){          //插入成功時(shí)發(fā)送郵件      //用戶激活鏈接      $url = 'http://'.$_SERVER['HTTP_HOST'].'/activation.php';      //urlencode函數(shù)轉(zhuǎn)換url中的中文編碼      //帶反斜杠      $url.= '?name='.urlencode((trim($n))).'&k='.$key;      //定義登錄使用的郵箱      $envelope = 'dee1566@126.com';      $password = '郵箱密碼';      $port = 25;      $auth = 'login';      $smtp = 'smtp.126.com';            //激活郵件的主題和正文      $subject = '激活您的帳號(hào)';      $mailbody = '注冊(cè)成功,<a href="'.$url.'" target="_blank">請(qǐng)點(diǎn)擊此處激活帳號(hào)</a>';      postmail($auth,$port,$envelope,$password,$smtp,$rsuemail,$subject,$mailbody);      echo "<script>self.location=\"maillogin.php?m=".$rsuemail."&n=".urlencode($n)."&k=".$key."\";</script>";    }else{          //提示激活失敗并跳轉(zhuǎn)      echo "<div id=\"textBox\">22激活失敗,<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";      echo "<script src=\"templets/js/showTime.js\"></script>";            echo "<script>var href='register.php';showTime(href);</script>";    }      }else{      //提示激活失敗并跳轉(zhuǎn)    echo "<div id=\"textBox\">12激活失敗,<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";    echo "<script src=\"templets/js/showTime.js\"></script>";          echo "<script>var href='register.php';showTime(href);</script>";  }}else{  echo "<div id=\"textBox\">參數(shù)錯(cuò)誤,請(qǐng)重新注冊(cè),<span id=\"second\"></span> 秒鐘后跳轉(zhuǎn)至注冊(cè)頁(yè)...</div>";  echo "<script src=\"templets/js/showTime.js\"></script>";        echo "<script>var href='register.php';showTime(href);</script>";}?>

maillogin.php:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>注冊(cè)頁(yè)面</title><link href="templets/css/common.css" rel="stylesheet" type="text/css"><style>#container{   background-color:#fff;  width:990px;  height:547px;  margin-top:50px;  margin-bottom:20px;  overflow:hidden;}#mailChk{ width:530px; margin:100px auto auto auto; position:relative;}.mailfonts{ margin-left:20px;}.mailpic{ float:left;}.mailfonts{ float:left;}.hfonts{ font-size:22px; }.ftit{     position:relative;   top:-70px;   left:-180px;   border-bottom:1px solid #eee;  width:870px;  padding-bottom:10px;  font-size: 20px;  font-weight: normal;  font-family: "Microsoft YaHei",\5fae\8f6f\96c5\9ed1,arial,\5b8b\4f53;  color: #323232;}.ftit2{  height:1px;  top:50px;   left:-180px; }.sfonts{ line-height:48px; color:#666;}.orange{ color:#ee8c18;}#maillogin{  display: block;  width: 390px;  height: 50px;  line-height: 50px;  border: 0;  overflow: hidden;  text-align: center;  background: #69b3f2;  font-family: "Microsoft YaHei",\5fae\8f6f\96c5\9ed1,arial,\5b8b\4f53;  font-size: 26px;  -webkit-border-radius: 2px;  -moz-border-radius: 2px;  border-radius: 2px;  margin:100px auto 0 85px;  cursor:pointer;}#maillogin:hover{ background: #7cbdf5;}#maillogin,#maillogin:hover{ color:#fff;}#maillogin a{ color:#fff;}.notice{     position:relative;  bottom:-70px;  left:-180px;}#notice{  width:300px;  height:200px;  position:fixed;  top:50%;  left:50%;  margin:-100px 0 0 -150px;  background:#eee;  text-align:center;  line-height:180px;  display:none;}.notit{ font-size:14px; color:#949494; font-weight:bold; font-family:arial;}.noul{ color:#949494; margin-left:-40px;}</style><script src="templets/js/jquery-1.8.3.min.js"></script><script src="templets/js/maillogin.js"></script></head><body><!--頂部長(zhǎng)條--><div id="header-nav">  <div id="header-nav-fonts">    <span class="top-tie-big"><a href="#">Dee's BLOG</a></span>     <span class="top-tie"> | </span>    <span class="top-tie-big">注冊(cè)</span>    <span class="top-tie-small">已有帳號(hào)?馬上<a href="#">登錄</a></span>    <div class="cls"></div>  </div></div><!-- 內(nèi)容區(qū) --><div id="container">  <div id="mailChk">    <?php         if(isset($_GET['m']) && $_GET['m']!=""){              $m = $_GET['m'];      }else{              echo "<div class=\"hfonts ftit\">操作有誤,<a href=\"templets/register.html\">請(qǐng)重新注冊(cè)</div>";        exit();      }      //接收用戶名和key      if(!empty($_GET['n']) && !is_null($_GET['n']) && !empty($_GET['k']) && !is_null($_GET['k'])){                  if(get_magic_quotes_gpc()){            $n = stripslashes(urldecode($_GET['n']));          $k = stripslashes(urldecode($_GET['k']));        }else{            $n = urldecode($_GET['n']);          $k = urldecode($_GET['k']);        }      }      require_once 'mail.class.php';    ?>    <div class="hfonts ftit">郵箱驗(yàn)證</div>    <img class="mailpic" src="templets/images/mail.jpg">    <div class="mailfonts">      <div class="hfonts">驗(yàn)證郵件已發(fā)出,請(qǐng)48小時(shí)內(nèi)登陸郵箱驗(yàn)證</div>      <div class="sfonts">登錄郵箱 <a id="mailaddr" class="orange"><?php echo $m;?></a> ,并按郵件提示操作即可</div>      <input id="n" type="hidden" value="<?php echo $n;?>"/>      <input id="k" type="hidden" value="<?php echo $k;?>"/>    </div>    <button type="button" id="maillogin"><a href="">立即登錄郵箱驗(yàn)證</a></button>    <div class="ftit ftit2"></div>    <div class="cls"></div>    <div class="notice">      <h3 class="notit">還沒(méi)有收到驗(yàn)證郵件呢?</h3>      <ul class="noul">        <li>1.嘗試到廣告郵件、垃圾郵件目錄里找找看</li>        <li>2.<a id="re" class="blue" href="#">再次發(fā)送驗(yàn)證郵件</a></li>        <li>3.如果重發(fā)注冊(cè)驗(yàn)證郵件仍然沒(méi)有收到,請(qǐng)更換<a class="blue" href="register.php">另一個(gè)郵件地址</a></li>      </ul>    </div>  </div>  </div></body><script>  $(function(){    $("#re").click(function(){          $.post("remailajax.php",{                    //要傳遞的數(shù)據(jù)       n : $("#n").val(),       k : $("#k").val(),       m : $("#mailaddr").text()      },function(data,textStatus){        if(data == 0){                success();        }else{                alert("重新發(fā)送郵件失敗");        }      });      return false;    });        $notice = $("<div id=\"notice\">郵件已經(jīng)發(fā)送,請(qǐng)到郵箱中查看...</div>");    function success(){            $notice.insertAfter($("#mailChk"));      $notice.show(300);    }              function hide(){          if($notice){              $notice.hide(300);      }    }    //顯示4秒    setInterval(hide,4000);  });</script></html>

emailajax.php:

<?phpheader("charset=utf-8");include_once 'Zend/Mail/Transport/Smtp.php';include_once 'Zend/Mail.php';require_once 'mail.class.php';if(isset($_POST['n']) && $_POST['n']!="" && isset($_POST['k']) && $_POST['k']!="" && isset($_POST['m']) && $_POST['m']!=""){  if(get_magic_quotes_gpc()){      $n = stripslashes(urldecode($_POST['n']));    $k = stripslashes(urldecode($_POST['k']));    $m = stripslashes(urldecode($_POST['m']));  }else{    $n = $_POST['n'];    $k = $_POST['k'];    $m = $_POST['m'];  }    $url = 'http://'.$_SERVER['HTTP_HOST'].'/activation.php';  //urlencode函數(shù)轉(zhuǎn)換url中的中文編碼  //帶反斜杠  $url.= '?name='.urlencode($n).'&k='.$k;  //定義登錄使用的郵箱  $envelope = 'dee1566@126.com';  $password = '郵箱密碼';  $port = 25;  $auth = 'login';  $smtp = 'smtp.126.com';    //激活郵件的主題和正文  $subject = '激活您的帳號(hào)';  $mailbody = '注冊(cè)成功,<a href="'.$url.'" target="_blank">請(qǐng)點(diǎn)擊此處激活帳號(hào)</a>';  postmail($auth,$port,$envelope,$password,$smtp,$m,$subject,$mailbody);  echo 0;}

4.更換郵箱即重新注冊(cè)。

maillogin.php代碼片段:

<li>3.如果重發(fā)注冊(cè)驗(yàn)證郵件仍然沒(méi)有收到,請(qǐng)更換<a class="blue" href="register.php">另一個(gè)郵件地址</a></li>

5.此時(shí)目錄結(jié)構(gòu)和數(shù)據(jù)庫(kù)

ROOT:
├─conn
│ ├─conn.php

├─templets
│ ├─css
│ │ ├─common.css
│ │ ├─register.css
│ │
│ ├─images
│ │
│ └─js
│ ├─jquery-1.8.3.min.js
│ ├─register.js
│ ├─emailup.js
│ ├─showTime.js
│ ├─maillogin.js

├─chkname.php
├─chkemail.php
├─valcode.php
├─register_chk.php
├─activation.php
├─mail.class.php -- 郵件類
├─maillogin.php --發(fā)送完郵件的返回頁(yè),可以登錄郵箱和再次發(fā)送郵件
├─reactivation.php --用戶選擇是重新發(fā)送激活郵件還是返回注冊(cè)頁(yè)
├─remail.php --超時(shí)重新發(fā)送郵件
├─remailajax.php --點(diǎn)擊再次發(fā)送郵件
├─remail.php --重新發(fā)送郵件
├─showval.php --生產(chǎn)驗(yàn)證碼
├─arial.ttf

└─Zend

數(shù)據(jù)庫(kù):

CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `uname` varchar(14) character set utf8 collate utf8_bin NOT NULL default '', `upwd` varchar(32) NOT NULL default '', `uemail` varchar(50) NOT NULL default '', `active` tinyint(4) default '0', `count` tinyint(4) default '0', `activekey` varchar(32) NOT NULL default '' COMMENT '注冊(cè)時(shí)生成的key,用于激活驗(yàn)證', `regdate` int(11) default NULL COMMENT '注冊(cè)時(shí)間', `lockurl` tinyint(4) default '0' COMMENT '超過(guò)激活時(shí)間m沒(méi)有激活,就把該值置為1', PRIMARY KEY (`id`), UNIQUE KEY `uemail` (`uemail`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

相關(guān)文章

最新評(píng)論