欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

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

程序员文章站 2022-05-22 18:19:27
...

欢迎进入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用户登录系统