הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - הגנה על דף באמצעות HTTP_AUTH (https://hosts.co.il/forums/showthread.php?t=19245)

null 07-04-06 07:39

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


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

תהנו!

תגובות, שאלות, הערות יתקבלו בברכה. :)

SyPhEx 07-04-06 09:05

אתה יכול לבוא אליי למסנג'ר
אני צריך לשאול אותך בקשר למדריך הזה שרשמת..

אחלה מדריך :) תודה

yNaxon 07-04-06 09:10

אחלה מדריך :P

Shay 07-04-06 10:28

אחלה מדריך איגור-בהצלחה!
ישר כוח!

null 07-04-06 10:30

תודה ;P
למישהו יש שאלות? תגובות?

mlnn 07-04-06 11:19

מדריך מעולה, תודה :)

Try2Guess 07-04-06 18:51

פשש, חידשת שלי =]

amirs_5 07-04-06 19:34

תודה אחי, חידשת לי ....

null 07-04-06 19:38

בבקשה לשניכם.
תבחרו את השיטה שאתם רוצים.
אפשר לעשות עוד שטויות באבטחת מידע. :)

* אלעד אתה קורא את זה שלח ה"פ [ eLad ]

חבר|94 07-04-06 22:59

לא הבנתי איפו אני מגדיר שזה יוביל לדף שאני רוצה?

null 08-04-06 09:15

ציטוט:

נכתב במקור על ידי HaFree-serv
לא הבנתי איפו אני מגדיר שזה יוביל לדף שאני רוצה?

אתה לא מפנה את זה לדף, הדף כבר נמצא בתוך העמוד הזה.
ברגע שהשם משתמש והסיסמה נכונים, אתה רואה את הדף השמור.
ראה: "This is Protected Content"
תחליף את זה בקוד של העמוד, יענו תעתיק את הקוד במקום המשפט הזה.
אני מקווה שהבנת. :D

נ.ב.
עוד מעט תעלה גירסא מקוצרת של הסקריפט ע"י Deagly

Cool_DuDu 08-04-06 09:39

אפשר לייבא את השם משתמש והסיסמא ממסד?
ואיך לדוגמה אני עושה כשאני רוצה בכל הדפים הוא יבדוק עם התחברת? דרך הSESSION?

Eli-Hai 08-04-06 09:50

מדריך מעולה, ח"ח.

null 08-04-06 11:41

ציטוט:

נכתב במקור על ידי Cool_DuDu
אפשר לייבא את השם משתמש והסיסמא ממסד?
ואיך לדוגמה אני עושה כשאני רוצה בכל הדפים הוא יבדוק עם התחברת? דרך הSESSION?

אתה עושה עם סשיין ולפני שזה מתחיל לתת את הבקשה לשם משתמש וסיסמה בדוק אם קיים סשיין.
לגבי המסד, כמובן!

ציטוט:

נכתב במקור על ידי Mr. Popi
מדריך מעולה, ח"ח.

תודה

הגירסא המקוצרת של הסקריפט
PHP קוד:

<?php
function auth() {
   
header('WWW-Authenticate: Basic realm="My Protected Page"');
   
header('HTTP/1.0 401 Unauthorized');
   echo 
'Oops, you are not allowed to see that page :D';
   exit;
}
if (isset(
$_GET['logout'])) {
auth();
}
if (
$_SERVER['PHP_AUTH_USER'] == "admin" && $_SERVER['PHP_AUTH_PW'] == "1234") {
    echo 
"My Content FREE !!!";
}
else {
  
auth();
  }
?>

אם מישהו בקוד הזה משהו, תשאלו.

* תודה ל Deagly על הגירסא המקוצרת


כל הזמנים הם GMT +2. הזמן כעת הוא 10:41.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ