[מדריך] PHP - הגנה על דף באמצעות HTTP_AUTH
כמו תמיד, נתחיל עם הקוד ואז נפרט :)
רק שהפעם, יש דוגמא לצפיה: צפה בדוגמא
PHP קוד:
<?
function auth_user() {
$realm = "Protected Page";
header('WWW-Authenticate: Basic realm="['.$realm.'] ID:"');
header('HTTP/1.0 401 Unauthorized');
die("Unauthorized access forbidden!");
}
if(isset($_GET['logout'])) {
auth_user();
}
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
auth_user();
}
if($_SERVER['PHP_AUTH_USER'] == "protected" && $_SERVER['PHP_AUTH_PW'] == "page")
{
echo "Im Protected Content<br />";
}
else
{
auth_user();
}
if($_SERVER['PHP_AUTH_USER'] == "logout") {
// message for firefox
die("You have successfully logged out.");
}
if (ereg("MSIE", $_SERVER['HTTP_USER_AGENT'])) {
// Use basic logout
echo "<a href=\"".$_SERVER['PHP_SELF']."?logout=y\">Logout</a>";
} else {
// use other logout for Firefox and other browsers
echo "<a href=\"http://logout:logout@".
$_SERVER['SERVER_NAME']."/".$_SERVER['PHP_SELF']."\">Logout</a>";
}
?>
בואו נתחיל לתת הסברים |קורץ|
PHP קוד:
function auth_user() {
$realm = "Protected Page";
header('WWW-Authenticate: Basic realm="'.$realm.'"');
header('HTTP/1.0 401 Unauthorized');
die("Unauthorized access forbidden!");
}
הפונקציה שתשמש אותנו רבות.
מה שהיא בעצם עושה שלבקש מהדפדפן להקביץ חלון עם בקשה לשם משתמש וסיסמה.
אם המשתמש לוחץ על CANCEL זה מציג לו הודעה בהתאם (ראה die(); ).
PHP קוד:
if(isset($_GET['logout'])) {
auth_user();
}
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
auth_user();
}
אם אפשרות היציאה מופעל, צא, ובקש שם משתמש וסיסמה מחדש.
אם לא הוקש שם משתמש או סיסמה, בקש אותם שוב.
PHP קוד:
if($_SERVER['PHP_AUTH_USER'] == "protected" && $_SERVER['PHP_AUTH_PW'] == "page")
{
echo "Im Protected Content<br />";
}
else
{
auth_user();
}
אם השם משתמש שווה ל- protected והסיסמה שווה ל- page הראה את התוכן המוסתר.
(להלן: Im Protected Content)
אם השם משתמש לא שווים למה שצוין, בקש אותם שוב.
PHP קוד:
if($_SERVER['PHP_AUTH_USER'] == "logout") {
// message for firefox
die("You have successfully logged out.");
}
if (ereg("MSIE", $_SERVER['HTTP_USER_AGENT'])) {
// Use basic logout
echo "<a href=\"".$_SERVER['PHP_SELF']."?logout=y\">Logout</a>";
} else {
// use other logout for Firefox and other browsers
echo "<a href=\"http://logout:logout@".
$_SERVER['SERVER_NAME']."/".$_SERVER['PHP_SELF']."\">Logout</a>";
}
קטע היציאה, מותאם לרוב הדפדפנים.
הקוד בצורה נוחה:
קוד:
<?
function auth_user() {
$realm = "Protected Page";
header('WWW-Authenticate: Basic realm="['.$realm.'] ID:"');
header('HTTP/1.0 401 Unauthorized');
die("Unauthorized access forbidden!");
}
if(isset($_GET['logout'])) {
auth_user();
}
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW'])) {
auth_user();
}
if($_SERVER['PHP_AUTH_USER'] == "protected" && $_SERVER['PHP_AUTH_PW'] == "page")
{
echo "Im Protected Content<br />";
}
else
{
auth_user();
}
if($_SERVER['PHP_AUTH_USER'] == "logout") {
// message for firefox
die("You have successfully logged out.");
}
if (ereg("MSIE", $_SERVER['HTTP_USER_AGENT'])) {
// Use basic logout
echo "<a href=\"".$_SERVER['PHP_SELF']."?logout=y\">Logout</a>";
} else {
// use other logout for Firefox and other browsers
echo "<a href=\"http://logout:logout@".
$_SERVER['SERVER_NAME']."/".$_SERVER['PHP_SELF']."\">Logout</a>";
}
?>
*תודה לבניה על הרעיון.
*כל הזכויות שמורות לקובלנקו איגור.
תהנו!
תגובות, שאלות, הערות יתקבלו בברכה. :)
|