国产黄色免费网站,人人干人人干人人干,免费大黄网站在线看,国产情侣一区二区三区,99精品国产福利免费一区二区,国产亚洲成归v人片在线观看,伊人88

2023信創(chuàng)獨(dú)角獸企業(yè)100強(qiáng)
全世界各行各業(yè)聯(lián)合起來(lái),internet一定要實(shí)現(xiàn)!

基于PHP的用戶認(rèn)證

2004-02-11 eNet&Ciweek

  在PHP中,如果希望在每一段腳本上都進(jìn)行口令保護(hù),可以結(jié)合使用header()語(yǔ)句、$PHP_AUTH_USER和$PHP_AUTH_PW來(lái)建立基本的認(rèn)證方案,一般情況下,基于服務(wù)器的提問(wèn)和響應(yīng)順序如下:

  1.用戶從服務(wù)器上請(qǐng)求一個(gè)文件,如果這個(gè)文件在服務(wù)器上是被保護(hù)的,則在響應(yīng)的頭部向用戶返回一個(gè)401(示用戶應(yīng)授權(quán))字符串;

  2.瀏覽器收到這個(gè)響應(yīng)后,彈出要求用戶輸入用戶名/口令的對(duì)話框;

  3.用戶在對(duì)話框中輸入一個(gè)用戶名和口令,點(diǎn)擊OK按鈕將信息返回服務(wù)器供認(rèn)證使用;

  4.如果用戶名和口令有效,被保護(hù)的文件將向用戶開(kāi)放,只要用戶還在使用文件,認(rèn)證會(huì)一直有效。

    一段簡(jiǎn)單的PHP腳本文件通過(guò)向用戶發(fā)送一個(gè)適當(dāng)?shù)哪軌蛞鹱詣?dòng)顯示用戶名/口令對(duì)話框的HTTP頭部就可以模仿HTTP的提問(wèn)/響應(yīng)系統(tǒng),PHP把用戶在用戶名/口令對(duì)話框中輸入的信息存儲(chǔ)在$PHP_AUTH_USER和$PHP_AUTH_PW中,使用這二個(gè)變量,就可以與存儲(chǔ)在文本文件、數(shù)據(jù)庫(kù)等文件中的用戶名/口令進(jìn)行比較。

  這個(gè)例子中,筆者采用了兩個(gè)常量值進(jìn)行認(rèn)證,其實(shí)無(wú)論用戶名和口令是常量還是變量,其原理都是相同的。  

  〈?

  / 檢查$PHP_AUTH_USER和$PHP_AUTH_PW中的值/

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

  / 如果沒(méi)有值,則發(fā)送一個(gè)能夠引發(fā)對(duì)話框出現(xiàn)的頭部/

   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")) {

  / 如果輸入的用戶名和口令中有一個(gè)不正確,則發(fā)送一個(gè)能夠引發(fā)對(duì)話框出現(xiàn)的頭部 /

   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")) {

  / 如果二個(gè)值都正確,顯示成功的信息 /

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

  }

  }

  ?〉

  需要注意的是,如果你使用的是基于文件的保護(hù)機(jī)制,它并不能保證目錄中所有文件的安全。它可能保護(hù)大部分的文件,如果你認(rèn)為它能夠保護(hù)給定目錄中的所有文件,你的這種認(rèn)識(shí)就需要變變了。

相關(guān)頻道: eNews

您對(duì)本文或本站有任何意見(jiàn),請(qǐng)?jiān)谙路教峤?,謝謝!

投稿信箱:tougao@enet16.com