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;

}

}

?>


למדתם לפחות שיטה אחת להגבלת הגישה לעבודה בסביבת הפיתוח שלכם למשתמשים ספציפיים.

בפרק הבא, נעיף מבט ב'קוקיס'. עכשיו שיש לכם משתמשים מורשים במערכת, הגיע הזמן לעקוב אחרי מי שהם ומה שהם עושים.



עמוד הבא: שימוש ב'קוקיס' >>




הקדמה
אימות HTTP עם
PHP
אימות מול קובץ
שטוח
אימות מול מאגר
מידע >
שימוש ב'קוקיס'
סשנים הם
התשובה
סשנים והעדפות
משתמש
סיכום