phpmailer 郵件模擬註冊驗正

下載phpmailer類 我本次的實驗用的是版本 5.2.9

下載後解壓提取文件class.smtp.php

class.phpmailer.php

PHPMailerAutoload.php

放在phpmailer目錄裏

1.鏈接數據庫

conn.php 

 $conn=mysql_connect("localhost","root","");
   if(!$conn){
  die('鏈接失敗'.mysql_error());
   }
   
   mysql_select_db("test",$conn) or die("數據庫選擇失敗".mysql_error());


2創建數據庫表

create table user(
uid int primary key auto_increment,
uname char(20) not null default '',
email char(30) not null default '',
pass char(32) not null default '',
status tinyint not null default 0
)engine myisam charset utf8;


create table activecode(
cid int primary key auto_increment,
uname char(20) not null default '',
code char(16) not null default '',
expire int not null default 0
)engine myisam charset utf8;


3.模擬註冊和發送郵件代碼如下

<?php 
   /**
     1.鏈接數據庫
2.insert用戶表
3.隨機產生激活碼並insert activecode 表
4把產生的激活碼發送郵件
 
   */
require('conn.php');
require('../phpmailer/PHPMailerAutoload.php');
$uname="username";
$email="[email protected]";


//2註冊
$sql="insert into user(uname,email) values('$uname','$email')";
mysql_query($sql);


//3生成隨機激活碼
$str="abcdefghijklmnopkrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456";
$code=substr(str_shuffle(substr($str,0,58)),0,8);
$expire=time()+2*24*3600;
$sql="insert into activecode(uname,code,expire)values('$uname','$code',$expire)";
$result=mysql_query($sql);


if(!$result){

die ("註冊不成功");
}


//4發送郵件進行驗證
function sendEmail($to,$title,$contents,$type = '',$accessory =''){
    $mail = new PhpMailer(true);
    $mail->IsSMTP();
    $mail->CharSet ="UTF-8";//編碼
    $mail->Debugoutput = 'html';// 支持HTML格式
    $mail->Host = 'smtp.163.com';//HOST 地址
    $mail->Port = 25;//端口
    $mail->SMTPAuth = true;
    $mail->Username = '[email protected]';//163郵箱用戶名
    $mail->Password = '163郵箱密碼你的密碼';//密碼
    $mail->SetFrom('[email protected]','fuck');//發件人地址, 發件人名稱
    $mail->AddAddress($to);//收信人地址
    //$mail->Subject = "=?utf-8?B?" . base64_encode() . "?=";
    if (!empty($type)) {
     $mail->AddAttachment($type,$accessory); // 添加附件,並指定名稱 
    }
    $mail->Subject = $title;//郵件標題
    $mail->MsgHTML($contents);
    if (!$mail->send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
    }else {
    echo "Message sent!";
}
    }
  sendEmail($email,$uname.'驗證郵件','請您點擊:http://localhost/test2/loginmail/2.php?code='.$code.' 進行激活','','');


?>

4.驗證激活碼 完成註冊 2.php代碼如下

require "conn.php";
   $code=$_GET['code'];
   if(strlen($code)!=8){
  
  die("激活碼長度不夠");
  
   }
   $sql="select * from activecode where code='$code'";
   $rs=mysql_query($sql);
   $row=mysql_fetch_assoc($rs);
   if(empty($row)){
  echo "激活碼有誤";
  
   }
   var_dump($row);
   
   //激活用戶
    $sql="update user set status=1 where uname='$row[uname]'";
    $rs2=mysql_query($sql);
if($rs2){
echo "激活成功";

}


以上是我這個菜鳥的總結 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章