首页 > php教程 > php手册 > 正文

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

WBOY
发布: 2016-06-06 19:55:27
原创
1767 人浏览过

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 再来看另一段有趣的代码,用户怎样才能安全地改变他们的email地址呢?他们可以在任何时候改变email地址,但是要进行确认。 <?php function user_change_email ($password1,$new_email,$user_name) {

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

     再来看另一段有趣的代码,用户怎样才能安全地改变他们的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)

   $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)

   $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);

   return true;

   }

   } else {

   $feedback .= ' HASH INVALID - UPDATE FAILED ';

   return false;

   }

   }

    function user_send_confirm_email($email,$hash) {

   /*

   这个函数在首次注册或者改变email地址时使用

    */

   $message = "Thank You For Registering at Company.com".

   "nSimply follow this link to confirm your registration: ".
      
       "nnhttp://www.company.com/account/confirm.php?hash=$hash&email=". urlencode($email). "nnOnce you confirm, you can use the services on PHPBuilder.";

        mail ($email,'Registration Confirmation',$message,'From: noreply@company.com');

      }

    ?>

  [1] [2] 

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门推荐
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!