邮件激活账号(pdo)

来源:互联网 发布:北京信息科技大学网络 编辑:程序博客网 时间:2024/06/04 17:44
<?php
header('content-type:text/html;charset=utf-8');

//引入文件
include_once('./Mail.class.php');

//接值
$act=isset($_GET['act']) ? $_GET['act'] : "";

//实例化pdo
$pdo=new PDO('mysql:host=localhost;dbname=optimize','root','root');

//设置字符集
$pdo->exec('set names utf8');

//判断
if($act=='register'){
  //接值
  $username=isset($_POST['username']) ? $_POST['username'] : "";
  $password=isset($_POST['password']) ? $_POST['password'] : "";
  $question=isset($_POST['question']) ? $_POST['question'] : "";
  $email=isset($_POST['email']) ? $_POST['email'] : "";
  $answer=isset($_POST['answer']) ? $_POST['answer'] : "";
  $validate=uniqid();
  $time=time();

  //sql语句
  $sql="insert into `user` values(null,'$username','$password','$question','$answer','0','$validate','$time')";
 
  //执行
  if($pdo->exec($sql)){
      
      //用户id
      $user_id=$pdo->lastInsertId();

      //定义发送邮件的参数
      $title="账号激活邮件";
      $user="××客服";
      $address=$email;
      $url="http://localhost/Optimize/day18/index.php?act=jihuo&".MD5('username')."=".urlencode($username)."&".MD5('id')."=".urlencode($user_id)."&".MD5('validate')."=".urlencode($validate)."&".MD5('time')."=".$time;
      $content="请于24时内点击以下链接进行账号激活"."<a href='$url'>$url</a>";
     
      if(Mail::send($title,$content,$user,$address)){
        
        echo "恭喜你注册成功!请于24时内进行账号<a href='https://mail.qq.com'>激活</a>";  

      }else{
          echo "请重新注册";
      }


  }else{
       echo "入库失败";
  }



}elseif($act=='jihuo'){
   
   //调用自定义函数
   activate();

}elseif($act=='login'){
 
  echo "hello";

}else{
  include_once('./register.html');
}



/**
   * 激活
   *
   * @author YING
   * @param void
   * @return bool
   */
 
  function activate(){
    
    //接值
    $username=$_GET[MD5('username')];
    $id=$_GET[MD5('id')];
    $validate=$_GET[MD5('validate')];
    $time=$_GET[MD5('time')];

    //实例化pdo
    $pdo=new PDO('mysql:host=localhost;dbname=optimize','root','root');

    //设置字符集
    $pdo->exec('set names utf8');

    //sql语句
    $sql="select * from `user` where `id`='$id'";

    //执行
    $user_info=$pdo->query($sql)->fetch(PDO::FETCH_ASSOC);

    //判断是否已激活
    if($user_info['static']=='1'){
      echo "您的账户已经激活成功,请登录";
      header("refresh:3;url=http://localhost/Optimize/day18/index.php?act=login");
      die;
    }

    //判断是否已过期
    if(time()-$time>24*60){
      echo "您的账户已经激活已过期,请重新注册";
      header("refresh:3;url=http://localhost/Optimize/day18/index.php?act=register");
      die;
    }

    //判断激活码是否正确
    if($user_info['validate']==$validate){
       
       //sql修改状态
       $sql="update `user` set `static`='1' where `id`='$id'";

       //执行
       if($pdo->exec($sql)){
        
        echo "您的账户激活成功,请登录";
        header("refresh:3;url=http://localhost/Optimize/day18/index.php?act=login");
        die;

       }else{
          echo "您的账户激活失败,请重新注册";
          header("refresh:3;url=http://localhost/Optimize/day18/index.php?act=register");
          die;
       }

    }else{
      echo "您的账户已经激活码错误,请重新注册";
      header("refresh:3;url=http://localhost/Optimize/day18/index.php?act=register");
      die;
    }

  }

?>
0 0
原创粉丝点击