建立一個簡單互動的網站(三) You have entered this username: $PHP_AUTH_USER You're authorized!
6. 密碼驗證
也許你想在自己的網站放上你的照片集,而且只想給自己知心的朋友看,這時你需要一個密碼驗證的程式。
6.1 基於HTTP驗證
如何用PHP來實現密碼驗證的功能呢?我們可以使用簡短的PHP程式碼,使用函數header()發送HTTP標頭強制驗證,客戶端瀏覽器則會彈出供輸入使用者名稱和密碼的對話框。在PHP中,客戶端使用者輸入的訊息傳送到服務端之後自動儲存在$PHP_AUTH_USER, $PHP_AUTH_PW, 以及 $PHP_AUTH_TYPE這三個全域變數中。利用這些變量,我們就可以根據實現保存在資料檔案或資料庫中的使用者帳號資訊驗證使用者身分。
不過在這裡需要提醒用戶注意的一點是:只有在Apache模組方式運行的時候,PHP腳本才能使用$PHP_AUTH_USER, $PHP_AUTH_PW, 以及 $PHP_AUTH_TYPE這三個變數。如果使用者使用的是CGI模式的PHP則無法實現基於HTTP的驗證功能。
6.2 下面,我們就來詳細介紹如何使用PHP來驗證使用者身分。
在下例中,我們是使用$PHP_AUTH_USER和$PHP_AUTH_PW這兩個變數來驗證進入者是否合法並允許進入。在本例中被允許登入的使用者名稱和密碼對分別為tnc和nature:
if(!isset($PHP_AUTH_USER))
{
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel buttonn";
exit;
} >else
{
if ( !($PHP_AUTH_USER=="tnc" && $PHP_AUTH_PW=="nature") )
{
// 如果是錯誤的使用者名稱/密碼對,強制再驗證
Header("WWW-Authenticate: Basic realm="My Realm"");
Header("HTTP/1.0 401 Unauthorized");
echo "ERROR : $PHP_AUTH_AUER/$is_AUTH_AUER/$P_AUTH_AUER/13_AUTH_ .";
exit;
}
else
{
echo "Welcome tnc!";
}
?>
?>
6.3 根據指定的驗證資訊來確認使用者身分
首先,我們可以使用以下程式碼來判斷使用者是否已經輸入了使用者名稱和密碼,並顯示使用者輸入的資訊。
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="My Private Stuff"')
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
else {
echo "
You have entered this password: $PHP_AUTH_PW
Thetype ytype is: $PHP_AUTH_TYPE
}
?>
說明:
isset()函數用於判斷某個變數是否已被賦值。根據變數值是否存在,傳回true或false。
header()函數用來傳送特定的HTTP標頭。注意,使用header()函數時,請務必在任何產生實際輸出的HTML或PHP程式碼前面呼叫該函數。
雖然上述程式碼相當簡單,沒有根據任何實際值對使用者輸入的使用者名稱和密碼進行有效驗證,但是至少我們了解如何使用PHP在客戶端產生輸入對話框。
下面,我們就來了解如何根據指定的驗證資訊來核實使用者身分。程式碼如下:
if (!isset($PHP_AUTH_USER)) {
header('WWW-Authenticate: Basic realm="My Private Stuff"'My Private Stuff"' );
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
}
}
else if (isset($PHP_AUTH_USER)) {
if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW != "123")) {
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
} else {
echo "
}
}
?>
在這裡,我們首先檢查用戶是否已經輸入了用戶名稱和密碼,如果沒有則彈出相應對話框要求用戶輸入身份資訊。隨後,我們透過判斷使用者輸入的資訊是否符合admin/123此指定使用者帳號來授予使用者存取權限或提示使用者再次輸入正確的資訊。這種方法適用於所有使用者都使用相同登入帳號的網站。
6.4 另一種簡易的密碼驗證
如果你是在windows98下面編寫和運行著你的PHP腳本,或者是你在Linux下面按默認設置,將PHP安裝成一個CGI程式的話,你將無法使用上面的PHP程式來實現驗證功能。為此,無邊提供了另一個簡易的密碼驗證的方法給大家。雖然實用性不大,但是拿來學習還是挺好的。
$password = "123";
// check password
if($pass != $password)
{
echo "
echo "";
}
else
{
echo "
echo "<script>"; <br>echo 'window.location="http://gophp.heha.net/test/index.php3"'; <br># 經密碼驗證後轉入的頁面<br>echo "</script>";
}
?>

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版
中文版,非常好用

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器