PHP腳本的8個技巧(5)採用PHP的用戶認證

2021-01-07 太平洋電腦網
正在閱讀:PHP腳本的8個技巧(5)採用PHP的用戶認證PHP腳本的8個技巧(5)採用PHP的用戶認證

2004-02-14 09:33出處:PConline作者:netant責任編輯:pjl

採用PHP的用戶認證  如果你希望在每一個腳本的基礎上實現口令保護功能,那麼你可以聯合使用header()函數和$PHP_AUTH_USER、$PHP_AUTH_PW全局變量來創造一個基本的認證方案。通常的、基於伺服器的認證請求/響應回合很象下面這個樣子: 1.用戶向一臺Web伺服器請求一個文件。如果文件在一個受到保護的區域以內,伺服器就在響應的文件頭內加上401(非法用戶)字符串作為回應。 2.瀏覽器看見該響應之後就彈出用戶名/口令對話框。 3.用戶在對話框中輸入用戶名和口令,然後單擊「確認」按鈕把這些信息送回到伺服器。 4.如果用戶名和口令有效,被保護的文件將對用戶顯示,並且,只要現在經過證實的用戶一直在保護區域以內。以上的認證過程都有效。     一個簡單的PHP腳本可以模仿HTTP認證請求/響應系統,方法就是發送適當的HTTP頭來使得用戶名/口令對話框自動出現在客戶機的屏幕上。PHP把用戶輸入對話框的信息存儲在$PHP_AUTH_USER和$PHP_AUTH_PW變量中。使用這些變量,你就可以把不符合用戶名/口令檢驗的列表存放到某個文本文件、資料庫或者你任何自己指定的地方 注意:$PHP_AUTH_USER、$PHP_AUTH_PW和$PHP_AUTH_TYPE這三個全局變量只有在PHP被當作一個模塊安裝時才是有效的。如果你正在使用PHP的CGI版本,那麼你只能受限於採用基於.htaccess的認證或基於資料庫的認證方式,這樣你就必需設計HTML表單讓用戶輸入用戶名和口令,再讓PHP進行有效性的檢查。 下面的這個例子顯示對2個設定值的檢查,但在理論上和以上的用戶名和口令檢查並無本質的不同。 <? /* Check for values in $PHP_AUTH_USER and $PHP_AUTH_PW */ if ((!isset($PHP_AUTH_USER)) || (!isset($PHP_AUTH_PW))) { /* No values: send headers causing dialog box to appear */ 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))){ /* Values contain some values, so check to see if they're correct */ if (($PHP_AUTH_USER != "validname") || ($PHP_AUTH_PW != "goodpassword")) { /* If either the username entered is incorrect, or the password entered is incorrect, send the headers causing dialog box to appear */ 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")) { /* if both values are correct, print success message */ echo "<P>You're authorized!</p>"; } } ?> 記住,當你正在使用基於文件的保護措施時,這種方式不是絕對能保護目錄的安全毯。這對你們中的大多數人而言是顯而易見的,但是,如果你的大腦在彈出對話框之間和保護給定目錄之間建立一個連接,那麼你必須費點勁來認識這一進程。

302 Found302 Found

The requested resource resides temporarily under a different URI.

Powered by Tengine

相關焦點

  • PHP腳本的8個技巧(2)會話用法
    正在閱讀:PHP腳本的8個技巧(2)會話用法PHP腳本的8個技巧(2)會話用法2004-02-14 09:33出處:奧索網作者:netant有了會話支持,你就可以在用戶訪問網絡站點期間維持用戶特定的變量而無須象現在這樣:設置多個cookie、使用隱蔽表單域或在你可能經常要連結的一個資料庫內存儲信息等。
  • PHP代碼20個實用技巧
    常常會看到:該方法有很多缺點:它首先查找指定的php包含路徑,然後查找當前目錄,因此會檢查過多路徑。如果該腳本被另一目錄的腳本包含,它的基本目錄變成了另一腳本所在的目錄。另一問題,當定時任務運行該腳本,它的上級目錄可能就不是工作目錄了。因此最佳選擇是使用絕對路徑:
  • PHP 5 到 PHP 7 性能評測(含 JIT 版 PHP 8 對比)
    本文涵蓋了幾個基準測試的結果,從 PHP 5 的第一個版本到 PHP 的試驗性 JIT 分支版本,PHP 5 之前的版本性能本文不作介紹。在寫這篇文章的時候,我們很難確定 PHP 8 之前是否會有另一個主要版本,比如 PHP 7.2。但是可以假設在 PHP 8 發布時,它已經包括當前試驗版 JIT 分支的強大功能。
  • 從PHP 5到PHP 7性能全評測(含未發布的JIT版PHP 8對比)
    本文涵蓋了幾個基準測試的結果,從 PHP 5 的第一個版本到 PHP 的試驗性 JIT 分支版本,PHP 5 之前的版本性能本文不作介紹。在寫這篇文章的時候,我們很難確定 PHP 8 之前是否會有另一個主要版本,比如 PHP 7.2。但是可以假設在 PHP 8 發布時,它已經包括當前試驗版 JIT 分支的強大功能。
  • 將PHP作為Shell腳本語言使用
    >現在讓我們看一個例子,以便於更好的了解用PHP作為Shell腳本語言的使用:#!/usr/local/bin/php-q<?phpprint("Hello,world!\n");?>上面這個程序會簡單的輸出「Hello,world!」到顯示器上。
  • ELF PHP 可執行程序運行後加載重型腳本的過程
    ,它就斷開了】在這裡大家可以自行的進行測試,從框架的index.php到最後輸出,打開了N個文件,都是要操作磁碟,讀取的數據當然是要佔用內存,c會申請一堆內存再去處理這些腳本的語法,進行解析。8 下面隨便給你們看下問題所在
  • 8 個必備的PHP功能開發
    [導讀] 做過PHP開發的程式設計師應該清楚,PHP中有很多內置的功能,掌握了它們,可以幫助你在做PHP開發時更加得心應手,本文將分享8個開發必備的
  • php學習之php的預定義常量的使用
    說明:常量一旦定義,裡面的值和常量是不能改變和銷毀的,而且常量名不能重複1.常量的定義:語法:define(常量名,常量值);不能定義複合數據5.xphp版本:const來定義複合的數據,如數組7.0 php版本:define可以定義複合的數據.如:define(ARR,[1,2,3,4,5
  • PHP教程:用PHP程序對網頁表單的處理
    PHP _GET 和 _POST變量是用來獲取表單中的信息的,比如用戶輸入的信息。當用戶將信息填寫完畢並點擊提交按鈕時,表單的數據將被發送至「welcome.php」文件。
  • (基礎篇) PHP需要它—PHP擴展庫
    在Windows下加載擴展庫,是通過修改php.ini文件來完成的。用戶也可以在腳本中通過使用dl()函數來動態加載。PHP擴展庫的DLL文件都具有php_前綴。很多擴展庫都內置於Windows版本的PHP中,要加載這些擴展庫不需要額外的DLL文件和extension配置指令。Windows下的PHP擴展庫列表列出了需要或曾經需要額外DLL文件的擴展庫。
  • php基礎大通關——十分鐘了解php基礎知識點之二
    本節我們繼續通過練習題的方式來熟悉php的基礎知識點。1. echo 和 print 有什麼區別?所以本題選擇第三個答案。2. upload_max_filesize 中最大上傳默認設置是多少? 1 MB 2 MB 3 MB 4 MB解析:upload_max_filesize 中最大上傳默認設置是2M。
  • 如何利用PHP-FPM實現open_basedir繞過
    FASTCGI快速通用網關接口是常駐內存的CGI,實際上是對CGI程序的進程管理,FastCGI接口方式採用C/S結構,可以將HTTP伺服器和腳本解析伺服器分開,同時在腳本解析伺服器上啟動一個或者多個腳本解析守護進程。當HTTP伺服器每次遇到動態程序時,可以將其直接交付給FastCGI進程來執行,然後將得到的結果返回給瀏覽器。
  • php面試題之—PHP核心技術(高級部分)
    >2.寫出smarty模板的特點(新浪網技術部)速度快,編譯型,緩存技術,插件機制,強大的表現邏輯3.打開php.ini中的safe_mode,會影響哪些函數?至少說出6個。(新浪)safe_mode,php安全模式,它提供一個基本安全的共享環境,在一個有多個用戶帳戶存在的php開發的web伺服器上。
  • 為什麼一直唱衰的php語言反而日漸活躍?
    所以其實就是誰都不會去唱衰沒有存在感的語言,拿我們自身來說,去年發布的php版本產品,很多客戶鬧著要有java版本,有java版本就購買,然而到了今年年初疫情來了大家都家裡蹲吧,這個過程我們開始做了java版本,5月份java版本的產品出來了,好了一個個客戶都說就php版本夠用了,開發個java浪費了成本,由於熱度問題java版本一直閒置導致一直沒有去完善的開發
  • CTF中常見的PHP漏洞小結
    str2第二個字符串。如果 str1 小於 str2 返回 < 0;如果 str1 大於 str2 返回 > 0;如果兩者相等,返回 0。當這個函數接受到了不符合的類型,這個函數將發生錯誤,但是在5.3之前的php中,顯示了報錯的警告信息後,將return 0 !!!! 也就是雖然報了錯,但卻判定其相等了。
  • 介紹PHP中的10個實用函數
    這篇文章裡,我們就列舉10個你或許不了解但實用的PHP函數,供大家參考和學習。這個函數可以用來檢查特定文件中的PHP語法是否正確。使用方法:<?php$error_message = "";$filename = "./php_script.php";if(!
  • 在PHP中顯示格式化的用戶輸入
    沒有過濾輸出的危險 如果你僅僅獲得用戶的輸入然後顯示它,你可能會破壞你的輸出頁面,如一些人能惡意地在他們提交的輸入框中嵌入javascript腳本: This is my comment. <script language="javascript: alert('Do something bad here!')"
  • php面試題之一——PHP核心技術(高級部分)
    >2.寫出smarty模板的特點(新浪網技術部)速度快,編譯型,緩存技術,插件機制,強大的表現邏輯3.打開php.ini中的safe_mode,會影響哪些函數?至少說出6個。(新浪)safe_mode,php安全模式,它提供一個基本安全的共享環境,在一個有多個用戶帳戶存在的php開發的web伺服器上。
  • PHP實例程序:用PHP製作登錄頁面程序
    php//這個腳本是用來給用戶輸入口令,並判斷口令是否正確的。//如果正確則轉到歡迎頁面。if ($login){    include("..用戶名錯,或口令錯。請重新輸入。"php echo $PHP_SELF; ?
  • PHP一些常見的漏洞梳理
    >5.實例假如目標網站有news.php文件,文件內容為:<?/etc/passwodwww.test.com/test.php?test=/etc/shadowwww.test.com/test.php?test=/etc/php5/apache2/php.iniwww.test.com/test.php?test=/etc/mysql/my.cnfwww.test.com/test.php?