לעיתים קרובות קורה כי יש צורך לחלק את המבקרים לרצוי ובלתי רצוי, ולתת את האפשרות לראות כמה דפים באתר רק למי שיש להם שם משתמש וסיסמה. כיצד לעשות זאת, למשל, בשפת התסריט בצד השרת PHP?
הוראות
שלב 1
בואו לארגן את הדרך הקלה ביותר להגן על הדפים שלכם מפני מבקרים לא מורשים. נושא המידע בדבר האם המבקר מורשה יהיה הפגישה. הפעלה היא אנלוגיה של עוגיות בדפדפן, עם ההבדל היחיד שהם נוצרים לא במחשב שלנו, אלא בשרת. והם משמשים לאותה מטרה כמו קובצי Cookie - לאחסון מידע שונה עלינו בזמן שאנחנו עוברים מדף לדף באתר אחד. כשאנחנו סוגרים את הדפדפן, השרת הורס את ההפעלה הזו, ובפעם הבאה שאנחנו נכנסים, הוא יוצר אחד חדש. אנו משתמשים במנגנון שרת זה כדי להקליט אם המשתמש כבר מחובר למושב או לא. קריאת מידע זה, כאשר מבקר מבקש דף, סקריפט ה- php יפתח גישה לדפים המוגנים באמצעות סיסמה, או יציע להזין שם משתמש וסיסמה.
שלב 1: צור דף להזנת כניסה וסיסמה. קוד ה- HTML של טופס ההרשאה בצורתו הפשוטה ביותר עשוי להיראות כך:
התחברות:
סיסמה:
כאן (ממש בתחילת הקובץ) נוסיף קוד php שיבדוק את נכונות שם המשתמש והסיסמה שהזין המבקר. בהתחלה נכתוב:
session_start ();
פקודה זו מתחילה הפעלה חדשה אם טרם נוצרה אחת עבור מבקר זה.
אז בואו לבדוק אם למפגש יש משתנה בשם 'userName' - הוא ישמור את השם אם המבקר כבר התחבר. אם יש משתנה כזה, הפנה את המבקר לדף הראשי (index.php) וסיים את ביצוע סקריפט ה- php הזה:
אם ($ _ SESSION ['userName']) {
כותרת ("מיקום: index.php");
יְצִיאָה;
}
שאר הקוד יבוצע רק אם המשתמש טרם הזין את שם המשתמש והסיסמה הנכונים. בואו לציין איזה כניסה וסיסמא צריכים להיחשב נכונים:
$ validName = 'אני שלי!';
$ validPass = 'סיסמה סודית';
ואז נבדוק אם הערכים שנשלחו מהטופס תואמים לערכים הנכונים. מכיוון שציינו את שיטת העברת הנתונים של POST בצורה זו, יש לקרוא אותם מהמשתנה $ _POST העל הגלובלי:
אם ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
כותרת ("מיקום: index.php");
יְצִיאָה;
}
כאן הקוד שבסוגריים מתולתלים {} יבוצע עם הערכים הנכונים של שם המשתמש והסיסמה. בשורה $ _SESSION ['userName'] = $ validName; ma אנו כותבים במפגש משתנה בשם 'userName' המכיל את הכניסה של המשתמש המורשה כעת. זה יהיה הסימן שהגישה פתוחה בפניו בכל מקום כל עוד הפגישה הנוכחית שלו תקפה.
ובמקרה שמוזנים טופס שגוי, הוסף את ההודעה המתאימה:
אחר מהדהד"
הכניסה או הסיסמה שגויים!
;
כל הקוד שצריך לשמור בקובץ בשם login.php ייראה כך:
<? php
session_start ();
אם ($ _ SESSION ['userName']) {
כותרת ("מיקום: index.php");
יְצִיאָה;
}
$ validName = 'אני שלי!';
$ validPass = 'סיסמה סודית';
אם ($ _ POST ['userName'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['userName'] = $ validName;
כותרת ("מיקום: index.php");
יְצִיאָה;
}
אחר מהדהד"
הכניסה או הסיסמה שגויים!
;
?>
התחברות:
סיסמה:
שלב 2
שלב 2: צור חסימת הרשאה - קובץ נפרד שיחובר לכל עמוד שזקוק להגנת סיסמא. קובץ זה יכיל קוד php בלבד, ולכן הסיומת שלו תהיה "php", וניתן לו שם לפי המסורת עבור קבצים כאלה - "auth", כלומר "auth.php". וגם כאן, מיד לאחר תג הפתיחה <? Php, צריכה להיות הוראה להתחיל מושב:
session_start ();
אנו יכולים לקרוא את כל המשתנים המאוחסנים בהפעלה ממערך העל-גלובלי $ _SESSION. עלינו לבדוק את הערך של המשתנה "userName" - אם המבקר עדיין לא התחבר, הוא לא יהיה במערך, וננתב אותו לדף להזנת שם המשתמש והסיסמה שלו:
אם (! $ _ SESSION ['מורשה']) {
כותרת ("מיקום: login.php");
יְצִיאָה;
}
כל הקוד שצריך לשמור בקובץ auth.php ייראה כך:
<? php
session_start ();
אם (! $ _ SESSION ['מנהל']) {
כותרת ("מיקום: enter.php");
יְצִיאָה;
}
?>
שלב 3
שלב 3: לאחר שנשמור קבצים אלה בשרת, הוא יישאר בכל דפי ה- php שיש צורך להגן עליהם מפני משתמשים לא מורשים כדי לחבר את חסימת ההרשאה. כלומר, ממש בתחילת כל קובץ php, יהיה עליכם להכניס את הקוד הזה:
<? php
דרוש "auth.php";
?>
וכדי לשנות את סיסמת הגישה, יהיה עליך לשנות את ערכי המשתנים הללו בקובץ login.php:
$ validName = 'אני שלי!';
$ validPass = 'סיסמה סודית';
$ validName - התחברות, $ validPass - סיסמה.