您当时的方位:主页 > 言语编程 > PHP

根据PHP的用户认证

2014-08-18  www.codeforacause.net
  在PHP中,假如期望在每一段脚本上都进行口令维护,可以结合运用header()句子、$PHP_AUTH_USER和$PHP_AUTH_PW来树立根本的认证计划,一般情况下,根据服务器的发问和呼应次序如下:

  1.用户从服务器上恳求一个文件,假如这个文件在服务器上是被维护的,则在呼应的头部向用户回来一个401(示用户应授权)字符串;



  2.浏览器收到这个呼应后,弹出要求用户输入用户名/口令的对话框;



  3.用户在对话框中输入一个用户名和口令,点击OK按钮将信息回来服务器供认证运用;



  4.假如用户名和口令有用,被维护的文件将向用户敞开,只需用户还在运用文件,认证会一向有用。

    一段简略的PHP脚本文件经过向用户发送一个恰当的可以引起主动显现用户名/口令对话框的HTTP头部就可以仿照HTTP的发问/呼应体系,PHP把用户在用户名/口令对话框中输入的信息存储在$PHP_AUTH_USER和$PHP_AUTH_PW中,运用这二个变量,就可以与存储在文本文件、数据库等文件中的用户名/口令进行比较。

  这个比如中,笔者采用了两个常量值进行认证,其实不管用户名和口令是常量仍是变量,其原理都是相同的。

  〈?



  /? 查看$PHP_AUTH_USER和$PHP_AUTH_PW中的值?/



  if ((!isset($PHP_AUTH_USER))    (!isset($PHP_AUTH_PW))) {



  /? 假如没有值,则发送一个可以引发对话框呈现的头部?/



   header('WWW-Authenticate: Basic realm="My Private Stuff"');



  header('HTTP/1.0 401 Unauthorized');



  echo 'Authorization Required.';



  exit;



  } else if ((isset($PHP_AUTH_USER)) &&&& (isset($PHP_AUTH_PW))){



  /? 变量中有值,查看它们是否正确?/



  if (($PHP_AUTH_USER != "validname")    ($PHP_AUTH_PW != "goodpassword")) {



  /? 假如输入的用户名和口令中有一个不正确,则发送一个可以引发对话框呈现的头部 ?/



   header('WWW-Authenticate: Basic realm="My Private Stuff"');



  header('HTTP/1.0 401 Unauthorized');



  echo 'Authorization Required.';



  exit;



    } else if (($PHP_AUTH_USER == "validname")    ($PHP_AUTH_PW == "goodpassword")) {



  /? 假如二个值都正确,显现成功的信息 ?/



  echo "〈P〉You're authorized!〈/p〉";



  }



  }



  ?〉

  需求留意的是,假如你运用的是根据文件的维护机制,它并不能确保目录中一切文件的安全。它或许维护大部分的文件,假如你以为它可以维护给定目录中的一切文件,你的这种知道就需求变变了。