网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > 一个完整、安全的PHP用户登录系统  

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

2007-11-14  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

     再来看另一段有趣的代码,用户怎样才能安全地改变他们的email地址呢?他们可以在任何时候改变email地址,但是要进行确认。

网管联盟bitsCN_com

   <?php

网管联盟bitsCN_com

   function user_change_email ($password1,$new_email,$user_name) { 网管下载dl.bitscn.com

   global $feedback,$hidden_hash_var;

网管u家u.bitsCN.com

   if (validate_email($new_email)) { 网管联盟bitsCN@com

   $hash=md5($new_email.$hidden_hash_var);

网管u家u.bitscn@com

   file://改变数据库中确认用的无序码值,但不改变email 网管联盟bitsCN_com

    file://发出一个带有新认证码的确认email 中国网管联盟bitsCN.com

   $user_name=strtolower($user_name); 网管网www_bitscn_com

   $password1=strtolower($password1);

网管下载dl.bitscn.com

   $sql=\"UPDATE user SET confirm_hash='$hash' WHERE user_name='$user_name' AND password='\". md5($password1) .\"'\";

网管网www.bitscn.com

   $result=db_query($sql);

中国网管联盟bitsCN.com

   if (!$result || db_affected_rows($result) < 1) {

网管u家u.bitscn@com

   $feedback .= ' ERROR - Incorrect User Name Or Password ';

中国网管论坛bbs.bitsCN.com

   return false;

网管下载dl.bitscn.com

   } else {

中国网管论坛bbs.bitsCN.com

   $feedback .= ' Confirmation Sent ';

网管u家u.bitscn@com

   user_send_confirm_email($new_email,$hash); 中国网管联盟bitsCN.com

   return true; 中国网管联盟bitsCN.com

   }

网管联盟bitsCN@com

   } else { 网管u家u.bitsCN.com

   $feedback .= ' New Email Address Appears Invalid ';

网管u家u.bitsCN.com

   return false;

网管下载dl.bitscn.com

   }

中国网管论坛bbs.bitsCN.com

   }

网管论坛bbs_bitsCN_com

   function user_confirm($hash,$email) {

中国网管论坛bbs.bitsCN.com

   /*

网管网www.bitscn.com

   用户点击认证email的相关连接时,连到一个确认的页面,该页面会调用这个函数, 网管u家u.bitsCN.com

   */

网管论坛bbs_bitsCN_com

   global $feedback,$hidden_hash_var;

中国网管论坛bbs.bitsCN.com

   file://verify that they didn't tamper with the email address

中国网管联盟bitsCN.com

   $new_hash=md5($email.$hidden_hash_var); 网管下载dl.bitscn.com

   if ($new_hash && ($new_hash==$hash)) {
   
    file://在数据库中找出这个记录 网管联盟bitsCN@com

   $sql=\"SELECT * FROM user WHERE confirm_hash='$hash'\"; 中国网管论坛bbs.bitsCN.com

   $result=db_query($sql);

网管u家u.bitsCN.com

   if (!$result || db_numrows($result) < 1) { 网管联盟bitsCN@com

   $feedback .= ' ERROR - Hash Not Found '; 网管网www.bitscn.com

   return false;

网管联盟bitsCN_com

   } else { 网管论坛bbs_bitsCN_com

   file://确认email,并且设置帐号为已经激活 网管论坛bbs_bitsCN_com

   $feedback .= ' User Account Updated - You Are Now Logged In '; 网管u家u.bitscn@com

   user_set_tokens(db_result($result,0,'user_name')); 网管下载dl.bitscn.com

   $sql=\"UPDATE user SET email='$email',is_confirmed='1' WHERE confirm_hash='$hash'\";

中国网管联盟bitsCN.com

   $result=db_query($sql); 网管u家u.bitscn@com

   return true;

中国网管联盟bitsCN.com

   }

网管bitscn_com

   } else {

网管论坛bbs_bitsCN_com

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

网管联盟bitsCN_com

   return false;

中国网管论坛bbs.bitsCN.com

   } 网管网www.bitscn.com

   } 网管联盟bitsCN_com

    function user_send_confirm_email($email,$hash) { 网管下载dl.bitscn.com

   /* 网管u家u.bitsCN.com

   这个函数在首次注册或者改变email地址时使用 网管联盟bitsCN@com

    */ 中国网管论坛bbs.bitsCN.com

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

网管u家u.bitsCN.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.\";

网管下载dl.bitscn.com

        mail ($email,'Registration Confirmation',$message,'From: noreply@company.com'); 网管联盟bitsCN@com

      }

网管联盟bitsCN@com

    ?>
网管联盟bitsCN@com

网管联盟bitsCN@com


TAGs   登录   系统   用户   完整   安全   一个       email   无序   user_name      
 上一篇:没有了   下一篇:没有了
一个完整、安全的PHP用户登录系统 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: