ניהול הגנת הדף
כאן אנו מגיעים ללבה של התוכנית. תפקידו של הסקריפט בקובץ protect.php, הוא למנוע את תכולת הדף מלהגיע למשתמשים שלא אמורים לראות את תוכן הדף. בסקריפט זה אנו נשתמש בפונקציה CheckUserPassword() כדי לאמת שמות משתמשים וססמאות, ונשתמש ב-sessions כדי לשמור נתונים לגבי שמות משתמשים וססמאות שאומתו.
את הסקריפט הזה מכלילים בראש הקובץ שרוצים להגן, ויחד עם זאת יש להגדיר את מספר הזיהוי של קבוצת המשתמשים (לפני ההכללה) כמשתנה גלובלי בשם $protect_user_group .
file name: protect.php (main program section)
<? session_cache_limiter("nocache");/* | קובע את ה-cache עבור ה-session הנוכחי ועבור הרצת הסקריפט הנוכחית ל-no_cache, שמונע את שמירת הדף ב-cache של הדפדפן. זאת אומרת שהדף נטען מחדש בכל כניסה אליו. | */ |
session_start(); if (!isset($protect_user_group))/* | אם מספר הזיהוי של קבוצת המשתמשים לא מוגדר, אנו מאתחלים אותו עם ברירת המחדל 0. | */ |
$protect_user_group= 0; if (!isset($_SESSION["auth_user_id".$protect_user_group]) && !isset($_SESSION["auth_password_id".$protect_user_group]))/* | אם המשתנים auth_user_idXX ו-auth_password_idXX לא שמורים ב-session, אז סימן שהמשתמש אינו מורשה עדיין לצפות בדף. (XX מסמן את מספר הזיהוי של קבוצת המשתמשים). | */ |
{ $us=$_POST["auth_user_"];/* | המשתנה $us מכיל את שם המשתמש שנשלח מטופס הכניסה. אם הטופס לא נשלח, אז ערכו הוא null . | */ |
$ps=CheckUserPassword($_POST["auth_user_"],$_POST["auth_password_"]);/* | המשתנה $ps מכיל את הססמא המוצפנת במקרה של אימות ססמא נכונה, או
FALSE במקרה של ססמא שגויה. אם הטופס לא נשלח, אז ערכו יהיה null . | */ |
if ($ps===false)/* | אם שם המשתמש והססמא לא נכונים... | */ |
//if user-password is not send or incorrect { echo "<DIV align=\"center\" dir=\"rtl\">\n\n"; echo "<H2><FONT color=\"#CC0000\">דף מוגן !!!</FONT></H2><B>אינך מורשה לצפות בדף זה ללא היתר.</B><BR><BR>\n\n"; /* Displaying the User-Password Form: */ ?>
<FORM action="<?= $_SERVER[ "PHP_SELF"]; ?>" method="POST">
<TABLE width=200 cellpadding=5 cellspacing=0 border=0 bgcolor="#BBBBBB">
<TR>
<TD width=100>משתמש:</TD>
<TD width=100><INPUT type="TEXT" name="auth_user_" value="<?= $us; ?>" style="width:95px;"></TD>
</TR>
<TR>
<TD width=100>ססמא:</TD>
<TD width=100><INPUT type="PASSWORD" name="auth_password_" style="width:95px;"></TD>
</TR>
<TR>
<TD colspan=2 align="center"><INPUT type="SUBMIT" name="auth_button_enter" value=" הכנס "></TD>
</TR>
</TABLE>
</FORM>
<? if (isset($_POST["auth_button_enter"]))/* | אם טופס הכניסה נשלח, ולא היה אימות ססמא, אז מדפיסים הודעה בדבר ססמא שגויה. | */ |
echo "<B><FONT color=\"#FF0000\">שם המשתמש והססמא שגויים!</FONT></B><BR><BR>\n"; echo "</DIV>\n\n"; exit();/* | חשוב מאוד: עוצר את הסקריפט, ובכך מונע את שליחת תוכן הדף למשתמש. | */ |
} else/* | אם שם המשתמשם והססמא שנשלחו הם נכונים... | */ |
//if the user-password that was entered is correct { $_SESSION["auth_user_id".$protect_user_group]=$us;/* | שומר את שם המשתמש ב-session, במשתנה auth_user_idXX . (XX מסמן את מספר הזיהוי של קבוצת המשתמשים). | */ |
$_SESSION["auth_password_id".$protect_user_group]=$ps;/* | שומר את הססמא המוצפנת ב-session, במשתנה auth_password_idXX . (XX מסמן את מספר הזיהוי של קבוצת המשתמשים). | */ |
header("Location: ".$_SERVER["PHP_SELF"]);/* | מעלים שוב את אותו הדף, כדי למנוע מהמידע שנשלח מהטופס להישלח שוב כאשר מרעננים את הדף. | */ |
} } elseif (CheckUserPassword($_SESSION["auth_user_id".$protect_user_group],$_SESSION["auth_password_id".$protect_user_group],false)===false)/* | אם המשתנים הנכונים שמורים ב-session, אז בודקים את שם המשתמש והססמא מתוך ה-session, ובמקרה של ססמא שגויה, מדפיסים הודעה בדבר דף מוגן. | */ |
{ /* If we got to here, then there are user and password saved in the session, but they do not match. *//* | אם הגענו לכאן, אז יש שם משתמש וססמא ששמורים ב-session, אך אין להם אימות בבסיס הנתונים. (בדר"כ לא תוכל להגיע לחלק זה). | */ |
echo "<DIV align=\"center\" dir=\"rtl\"><H2><FONT color=\"#CC0000\">אינך מורשה להכנס לדף זה !!!</FONT></H2></DIV>\n"; exit();/* | חשוב מאוד: עוצר את הסקריפט, ובכך מונע את שליחת תוכן הדף למשתמש. | */ |
} elseif ($_GET["logout"]=="true")/* | אם אנו רוצים לצאת מן הדף המוגן... | */ |
{ session_unregister("auth_user_id".$protect_user_group);/* | מוחק את המשתנה auth_user_idXX מה-session. | */ |
session_unregister("auth_password_id".$protect_user_group);/* | מוחק את המשתנה auth_password_idXX מה-session. | */ |
header("Location: ".$_SERVER["PHP_SELF"]);/* | מעלים את אותו הדף שוב, כדי להציג את טופס הכניסה. | */ |
} /* If you got to here, then you are authorized! *//* | אם הגעת עד לכאן, אז סימן שאתה מורשה לצפות בדף המוגן... | */ |
?>
איזה משתמשים אלו? | 09-12-03 21:02 חי | #1141 |
| אילו משתמשים אלו? אם אין לי מערכת משתמשים באתר איך אני משתמש בדבר הזה? ואיך אני עושה יוזרים לאתר שלי? |
|
משתמשים | 31-10-03 17:00 אלי חן (מנהל) | #1198 |
| זו לא מערכת משתמשים לאתר... זה פשוט סקריפט להגנה על דף או דפים מסויימים באמצעות שם משתמש וסיסמא. |
|
שלום | 08-12-06 22:01 אלון המלך | #2711 |
| איך אני מגדיר את השם משתמש והסיסמה שיכנסו??
אשמח אם תענו לי על זה בהקדם כי זה חשוב |
|
אז היא מתאמת לכל... | 06-12-07 04:01 עידן חכים | #2770 |
| אז היא מותאמת למערכת הרשמה אחרת?
או שאני צריך לבנות דומה לזאת? |
|
ניקוי sessions | 08-12-10 01:00 אולג קגן | #2888 |
| דעה שלי אישית עדיף לשתמש ב ()session_unset
ל ניקוי כל sessions |
|
|
|
|
|
הוספה למועדפים:
|