php / אימות ומעקב אחר משתמשים עם php / אימות מול מאגר מידע
אימות מול מאגר מידע
הדוגמא האחרונה מראה איך להשוות שמות משתמשים וסיסמאות מול
רשימה בתוך מאגר מידע. הדוגמא הזאת עושה שימוש בפונקציות חיבור
מ- MySQL של , PHP אבל הרגישו חופשיים להחליף את פונקציות החיבור
למאגר המידע הקבועות מראש, כך שהעסק יעבוד גם בסביבה שלכם.
נניח שלטבלה שלכם קוראים "users" (משתמשים) ושהיא נראית בערך כך:
real_name |
username |
password |
Joe Smith |
joe |
ai890d |
Jane Smith |
jane |
29hj0jk |
Mary Smith |
mary |
fsSS92 |
Bob Smith |
bob |
2NNg8ed |
Dilbert |
dilbert |
a76zFs |
כדי למצוא צמד של שם משתמש וסיסמא, תוכלו להשתמש בביטוי ה-SQL הבא:
SELECT *
FROM users
WHERE username='$PHP_AUTH_USER' and
password='$PHP_AUTH_PW'
בעברית, משמעות הביטוי היא: "החזר תוצאה במקרה שהערך המוכנס
ל - PHP_AUTH_USER$ והערך המוכנס ל- PHP_AUTH_PW$ תואמים
לשדות שם המשתמש והסיסמא בטבלת המשתמשים שלי".
אז אתם רוצים לקבל איזשהו משתנה תוצאתי מביטוי ה-SQL שלכם. ספירת
מספר השורות המתאמתות תעשה את העבודה, מאחר והתוצאה תהיה תמיד
אפס (אין התאמתויות), או אחת (מישהו בטבלת המשתמשים שלכם עושה
שימוש בשילוב שם המשתמש והסיסמא הזה):
// connect to MySQL
mysql_connect("hostname", "username",
"password")
or die ("Unable to connect to database.");
// select database on MySQL server
mysql_select_db("dev_i2ii_com")
or die ("Unable to select database.");
// Formulate the query
$sql = "SELECT *
FROM users
WHERE username='$PHP_AUTH_USER' and
password='$PHP_AUTH_PW'";
// Execute the query and put results in $result
$result = mysql_query($sql);
// Get number of rows in $result. 0 if invalid, 1 if
valid.
$num = mysql_numrows($result);
עכשיו, שימו את קטע הקישור שלכם בהקשר של סקריפט האימות שלכם.
אם אתם רוצים לבחון את הסקריפט הזה ואימתתם את עצמכם באמצעות
הסקריפט בעמוד הקודם, יתכן ותיאלצו לסגור ולפתוח מחדש את הדפדפן שלכם.
<?php
// File Name: auth04.php
// Check to see if $PHP_AUTH_USER already contains
info
if (!isset($PHP_AUTH_USER)) {
// If empty, send header causing dialog box to appear
header('WWW-Authenticate: Basic realm="My Private
Stuff"');
header('HTTP/1.0 401 Unauthorized');
exit;
} else if (isset($PHP_AUTH_USER)) {
// If non-empty, check the database for matches
// connect to MySQL
mysql_connect("hostname", "username",
"password")
or die ("Unable to connect to database.");
// select database on MySQL server
mysql_select_db("dev_i2ii_com")
or die ("Unable to select database.");
// Formulate the query
$sql = "SELECT *
FROM users
WHERE username='$PHP_AUTH_USER' and
password='$PHP_AUTH_PW'";
// Execute the query and put results in $result
$result = mysql_query($sql);
// Get number of rows in $result. 0 if invalid, 1 if
valid.
$num = mysql_numrows($result);
if ($num != "0") {
echo "<P>You're authorized!</p>";
exit;
} else {
header('WWW-Authenticate: Basic realm="My
Private Stuff"');
header('HTTP/1.0 401 Unauthorized');
echo 'Authorization Required.';
exit;
}
}
?>
למדתם לפחות שיטה אחת להגבלת הגישה לעבודה בסביבת הפיתוח שלכם
למשתמשים ספציפיים.
בפרק הבא, נעיף מבט ב'קוקיס'. עכשיו שיש לכם משתמשים מורשים במערכת,
הגיע הזמן לעקוב אחרי מי שהם ומה שהם עושים.
עמוד הבא: שימוש ב'קוקיס' >>
|