View Single Post
ישן 07-04-06, 07:39   # 1
null
кто ты?
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,177

null לא מחובר  

[מדריך] 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>";
}
?>

*תודה לבניה על הרעיון.
*כל הזכויות שמורות לקובלנקו איגור.

תהנו!

תגובות, שאלות, הערות יתקבלו בברכה.
  Reply With Quote