(一)、基于HTTP驗證的單用戶身份驗證:
我們利用函數header()發送HTTP標頭強制進行驗證,客戶端瀏覽器則彈出要輸入用戶名和密碼的對話框,這時客戶端的用戶輸入的信息,被傳送到服務端之后保存為$PHP_AUTH_USER, $PHP_AUTH_PW這兩個全局變量中。利用這些變量,就可以進行用戶和密碼的驗證。
下面的程序可以進行簡單的身份驗證
<?
if ($PHP_AUTH_USER!='Jane'||$PHP_AUTH_PW!='123456')
{
Header("WWW-Authenticate: Basic realm=\"爆米花登陸\"");
Header("HTTP/1.0 401 Unauthorized");
echo "身份驗證錯誤!";
exit;
}
?>
(注意:使用HTTP驗證的時候,必須以Apache的模塊方式運行,如果使用的是CGI模式的PHP則無法實現基于HTTP的驗證功能。)
(二)基于http的多用戶驗證
上次給大家介紹了基于http的單用戶驗證,這次利用mysql數據庫
儲存多用戶數據,進行多用戶驗證。
1、首先建立mysql數據庫
mysql>create database user; //建立數據庫user
mysql>use user; //打開數據庫user
mysql>create table user_data( //建立數據表user_data
id int(9) not null aoto_increment, //id為自動增加整數字段
username varchar(10) not null, //用戶姓名
password varcher(10) not noll, //密碼
primary key(id); //設id為主鍵
);
2、身份驗證程序
<?php
$error = "/www/error/error.php";
if ($PHP_AUTH_PW=="") //如密碼為空
{
Header("WWW-Authenticate: Basic realm=\"用戶登陸\"");
Header("HTTP/1.0 401 Unauthorized"); //驗證
include($error); //定向error,php文件
exit;
}
else
{
mysql_connect("localhost", "root", "1234"); //連接數據庫
$result = mysql_db_query("user","select password
from user_data where username='$PHP_AUTH_USER'");
//送查詢字符串到mysql數據庫中
$row = mysql_fetch_array($result); //返回數組資料
$passwd = $row[0];
mysql_close($db_id); //關閉數據庫
if ($PHP_AUTH_PW!=$passwd) //密碼驗證
{
Header("WWW-Authenticate: Basic realm=\"用戶登陸\"");
Header("HTTP/1.0 401 Unauthorized");
include($error);
exit;
}
}
前面講了基于http多用戶驗證,我們采用的mysql數據庫,在密碼驗證方面孤狼大哥建議非常好,密碼驗證的時候,最好在數據庫中進行,所以程序為:select id from user where user='$PHP_AUTH_USER' and password='$PHP_AUTH_USER'.
大家好,前面幾節講了這個基于http單用戶和多用戶的密碼驗證的編寫程序的方法,這種方法對于需要身份驗證的頁面,是最好不過的了。但是,這種驗證不能在cgi模式的php,iis下的php使用。所以,我們就可以利用session在不同頁面之間來保存用戶信息,達到驗證的目的。
session是指一個終端用戶與交互系統進行通信的時間間隔,通常指從注冊進入系統到注銷退出系統之間所經過的時間。session功能是它通過php腳本中定義全局變量的方法,使得這個全局變量在同一session中所有的php腳本都有效。
以下為用戶登陸表單處理程序:
<?
$db=mysql_connect("localhost","root","1234");
//連接數據庫服務器
mysql_select_db("Jane",$db);
//連接數據庫
$result=mysql_query("SELECT * FROM user where name='$name' and password='$pass'",$db);
//送查詢是字符串到數據庫
if ($myrow = mysql_fetch_row($result))
//如果記錄指針為真
{
session_start(); //session初始化
session_register("user");//注冊user變量
$user=$myrow["user"];
echo "驗證成功!";
}
else
{
echo"身份驗證失敗!";
}
?>
將下面的程序加入要保護的頁面開頭:
<?
session_start();
if (!session_is_registered("user"))//檢查session變量是否注冊
{
echo "驗證失敗,屬非法登錄!";
}
else
{
......
}
?>
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/