龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

PHP+jQuery 注册模块开发详解(8)

时间:2014-10-15 11:00来源:网络整理 作者:网络 点击:
分享到:
register.html相应代码: span class="fuwu" input type="checkbox" name="agree" id="agree" checked="checked" label for="agree"我同意 a href="#"" 服务条款 "/a 和 a href="#"" 网络游戏用户隐

register.html相应代码:

<span class="fuwu">
    <input type="checkbox" name="agree" id="agree" checked="checked">
    <label for="agree">我同意 <a href="#">" 服务条款 "</a> 和 <a href="#">" 网络游戏用户隐私权保护和个人信息利用政策 "</a>
    </label>
</span>

register.js相应代码:

if($("#agree").prop("checked") == true){
  
    fuwuval = true;
  }

$("#agree").click(function(){
  
    if($("#agree").prop("checked") == true){

      fuwuval = true;
      $("#sub").css("background","#69b3f2");
    }else{
    
      $("#sub").css({"background":"#f2f2f2","cursor":"default"});
    }  
});

效果图:

①勾选之后

②未勾选

提交按钮:检测是否所有栏目都填写正确,否则所有填写错误的栏目将给出错误提示。全部填写正确后提交并且发送验证邮件到注册邮箱中,邮件的验证地址在3日后失效

首先在register.js开始部分定义几个参数:nameval,emailval,pwdval,rpwdval,yzmval,fuwuval,全部设为0;当相应栏目符合规定之后,把相应的参数设为true。当所有的参数都为true之后,提交至registerChk.php,否则return false。

register.html相应代码:

<button type="button" id="sub">立即注册</button>

register.js相应代码:

参数设置:

var nameval,emailval,pwdval,rpwdval,yzmval,fuwuval = 0;

提交事件:

function formsub(){
  
    if(nameval != true || emailval!=true || pwdval!=true || rpwdval!=true || yzmval!=true || fuwuval!=true){
    
      //当邮箱有下拉菜单时点击提交按钮时不会自动收回菜单,因为下面的return false,所以在return false之前判断下拉菜单是否弹出
      if(nameval != true && $("#unamechk").val()!=""){
      
        var errorMsg = '请输入用户名';
        error($("#namechk"),errorMsg);
      }

      if($(".autoul").show()){
      
        $(".autoul").hide();
      }

      //以下是不会自动获得焦点的栏目如果为空时,点击注册按钮给出错误提示
      if($("#uemail").val() == ""){
      
        var errorMsg = '邮箱不能为空';
        error($("#uemailchk"),errorMsg);    
      }

      if($("#upwd").val() == ""){
      
        var errorMsg = '密码不能为空';
        error($("#upwdchk"),errorMsg);    
      }

      if($("#rupwd").val() == ""){
      
        var errorMsg = '请再次输入你的密码';
        error($("#rupwdchk"),errorMsg);    
      }

      if($("#yzm").val() == ""){
      
        var errorMsg = '验证码不能为空';
        error($("#yzmchk"),errorMsg);    
      }

    }else{
    
      $("#register-form").submit();
    }
  }

  $("#sub").click(function(){
    
    formsub();
});

显示效果:

有栏目为空时点击提交按钮

注册以及发送邮件

使用了Zend Framework( 1.11.11 )中的zend_email组件。Zend Framework的下载地址是:https://packages.zendframework.com/releases/ZendFramework-1.11.11/ZendFramework-1.11.11.zip。在Zend Framework根目录下library路径下,剪切Zend文件至服务器下,在注册页面中引入Zend/Mail/Transport/Smtp.php和Zend/Mail.php两个文件。

当点击提交按钮时,表单将数据提交至register_chk.php,然后页面在当前页跳转至register_back.html,通知用户注册结果并且进邮箱激活。

验证邮箱的地址参数使用用户名和一个随机生成的key。

register_chk.php:

<?php 

  include_once 'conn/conn.php';
  include_once 'Zend/Mail/Transport/Smtp.php';
  include_once 'Zend/Mail.php';
  
  //激活key,生成的随机数
  $key = md5(rand());
  
  //先写入数据库,再发邮件
  //写入数据库
  //判断是否开启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){
  
    // 如果不是数字则加引号
    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)values('".trim($postuname)."','".md5(trim($postupwd))."','".trim($postuemail)."','".$key."')";

  $num = $conne->uidRst($sql);
  if($num == 1){
    
    //插入成功时发送邮件
    //用户激活链接
    $url = 'http://'.$_SERVER['HTTP_HOST'].'/php/myLogin/activation.php';
    //urlencode函数转换url中的中文编码
    //带反斜杠
    $url.= '?name='.urlencode(trim($postuname)).'&k='.$key;
    //定义登录使用的邮箱
    $envelope = 'dee1566@126.com';
    
    //激活邮件的主题和正文
    $subject = '激活您的帐号';
    $mailbody = '注册成功,<a href="'.$url.'" target="_blank">请点击此处激活帐号</a>';
    
    //发送邮件
    //SMTP验证参数
    $config = array(
        
        'auth'=>'login',
        'port' => 25,
        'username'=>'dee1566@126.com',
        'password'=>'你的密码'
        );
    
    //实例化验证的对象,使用gmail smtp服务器
    $transport = new Zend_Mail_Transport_Smtp('smtp.126.com',$config);
    $mail = new Zend_Mail('utf-8');
    
    $mail->addTo($_POST['uemail'],'获取用户注册激活链接');
    $mail->setFrom($envelope,'发件人');
    $mail->setSubject($subject);
    $mail->setBodyHtml($mailbody);
    $mail->send($transport);

    echo "<script>self.location=\"templets/register_back.html\";</script>";

  }else{
  
    echo "<script>self.location=\"templets/register_back.html?error=1\";</script>";
  }
?>

邮箱中收取的邮件截图:

然后点击邮箱中的链接进行激活,把数据库中的active设置为1。

精彩图集

赞助商链接