教程集 www.jiaochengji.com
教程集 >  脚本编程  >  php  >  正文 PHP开发一个完整、安全的用户登录系统

PHP开发一个完整、安全的用户登录系统

发布时间:2016-10-29   编辑:jiaochengji.com
教程集为您提供PHP开发一个完整、安全的用户登录系统等资源,欢迎您收藏本站,我们将为您提供最新的PHP开发一个完整、安全的用户登录系统资源

在使用PHP编程的时候,我有一个习惯,不太喜欢使用现成的库文件,例如PHPLib或者其它类似的库,在这个系统中,我也打算自己写一个库文件,它需要处理认证、确认email,更新帐号(密码,email)等事情。

<?php
     function user_change_email ($password1,$new_email,$user_name) {
      global $feedback,$hidden_hash_var;
      if (validate_email($new_email)) {
        $hash=md5($new_email.$hidden_hash_var);
        file://改变数据库中确认用的无序码值,但不改变email
       file://发出一个带有新认证码的确认email
        $user_name=strtolower($user_name);
        $password1=strtolower($password1);
        $sql="UPDATE user SET confirm_hash=''$hash'' WHERE user_name=''$user_name'' AND password=''". md5($password1) ."''";
        $result=db_query($sql);
        if (!$result || db_affected_rows($result) < 1) {
         $feedback .= '' ERROR - Incorrect User Name Or Password '';
         return false;
         } else {
          $feedback .= '' Confirmation Sent '';
          user_send_confirm_email($new_email,$hash);
          return true;
          }
        } else {
          $feedback .= '' New Email Address Appears Invalid '';
          return false;
         }
        }
     function user_confirm($hash,$email) {
       /*
        用户点击认证email的相关连接时,连到一个确认的页面,该页面会调用这个函数,
       */
      global $feedback,$hidden_hash_var;
       file://verify that they didn''t tamper with the email address
       $new_hash=md5($email.$hidden_hash_var);
       if ($new_hash && ($new_hash==$hash)) {
         file://在数据库中找出这个记录
         $sql="SELECT * FROM user WHERE confirm_hash=''$hash''";
         $result=db_query($sql);
         if (!$result || db_numrows($result) < 1) {
           $feedback .= '' ERROR - Hash Not Found '';
           return false;
         } else {
           file://确认email,并且设置帐号为已经激活
           $feedback .= '' User Account Updated - You Are Now Logged In '';
           user_set_tokens(db_result($result,0,''user_name''));
           $sql="UPDATE user SET email=''$email'',is_confirmed=''1'' WHERE confirm_hash=''$hash''";
           $result=db_query($sql);
     

[关闭]
~ ~