View Single Post
ישן 05-10-05, 11:28   # 1
Matchs
תודה על תרומתך.
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: מרכז.
הודעות: 935

Matchs לא מחובר  

[מדריך] PHP - מערכת התחברות, רמה קלה עד בינונית.

זה פשוט עד בינוני.
מקווה שתפיקו ידע מהמדריך

אז בואו נתחיל, נגיד שאנחנו רוצים לעשות טבלה של users ?
אז נגדיר את השדות הבאים:
  • id - אוטומטי, INT, ראשי.
  • username - טקסט, עם הצפנה.
  • password - טקסט, עם הצפנה.
  • level - טקסט, ישמש לגישת המשתמש.

עכשיו, בוא נגדיר שהlevel המסויים שיהיה למישהו צריך להיות 2, בכדי שתהיה לו גישה.
אז מה נעשה ? ניצור את הטבלה, ונכניס ערך של משתמש אחד, לדוגמא:
  • id - 1
  • username - Rotem
  • password - 1234 (in md5 or sha1)
  • level - 2

יפה, עד כאן הכל ברור ? מה עשינו בעצם ? יצרנו טבלה עם הערכים: id, username, password, level.

עכשיו נגיע לחלק העיקרי, ההתחברות והיישום עצמו.
את הדף התחברות ב-HTML אני מאמין שתסתדרו ..

בוא נתחיל עם שני שאילתות פשוטות אשר מוציאות את שם המשתמש הסיסמא ואת הlevel, אני דווקא החלטתי להשתמש עם sha1 בהתחברות, עוד פרט חשוב לפני שאנחנו מתחילים, לקבוע את הpassword כשאתה מכניס את המידע כsha1(במקרה שלי)(!):
PHP קוד:
$username $_POST['username'];
$password $_POST['password'];

$username mysql_real_escape_string($_POST['username']);
$password mysql_real_escape_string($_POST['password']);
$password sha1($_POST['password']);

$query_of_user mysql_query("SELECT * FROM users WHERE username = '{$username}' AND level_user = '2'") or exit(mysql_error());
$query_of_pass mysql_query("SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}' AND level_user = '2'") or exit(mysql_error()); 
אז מה עשינו פה בעצם ? לקחנו את המידע מדף הHTML (שדרך אגב, את השדה של היוזר שימו בשם username ואת הסיסמא כpassword), ועשינו שאילתה שמוציאה את פרטי המשתמשים, והאם הם נכונים.

חלק הבא, האימות עצמו, אנחנו בודקים האם הפרטים שווים ואו לא שווים למשתנים:
PHP קוד:
if (mysql_num_rows($query_of_user) != &&mysql_num_rows($query_of_pass) != 0)
{
    
$details mysql_fetch_array($query_of_user)
    {
        
$id $details["id"];
        
$username $details["username"];
    }

    
session_register('admin_area');
    
$_SESSION['admin_area'] = $id;
    echo 
"<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=x\">";

הבדיקה הסתיימה, עכשיו אנחנו רוצים להכניס סיישן במידה והפרטים נכונים נכון ? אז הינה, אם הפרטים אכן נכונים, הוא ירשום את הסיישן: admin_area ויקבע אותו לID של המשתמש.
הלאה, האם הפרטים לא נכונים ? נעשה משפט else קטן:
PHP קוד:
else
{
    echo 
"<script type=\"text/javascript\">window.alert(\"שגיאה: שם המשתמש ואו הסיסמא אינם נכונים!\"); history.go (-1);</script>";

וזהו. זה בעצם הקוד של ההתחברות והאימות, בשביל כל המתקשים, הינה הקוד הסופי:
PHP קוד:
$username $_POST['username'];
$password $_POST['password'];

$username mysql_real_escape_string($_POST['username']);
$password mysql_real_escape_string($_POST['password']);
$password sha1($_POST['password']);

$query_of_user mysql_query("SELECT * FROM users WHERE username = '{$username}' AND level_user = '2'") or exit(mysql_error());
$query_of_pass mysql_query("SELECT * FROM users WHERE username = '{$username}' AND password = '{$password}' AND level_user = '2'") or exit(mysql_error());

if (
mysql_num_rows($query_of_user) != && mysql_num_rows($query_of_pass) != 0)
{
    
$details mysql_fetch_array($query_of_user)
    {
        
$id $details["id"];
        
$username $details["username"];
    }

    
session_register('admin_area');
    
$_SESSION['admin_area'] = $id;
    echo 
"<META HTTP-EQUIV=\"Refresh\"         CONTENT=\"0;URL=x\">";
}

else
{
    echo 
"<script type=\"text/javascript\">window.alert(\"שגיאה: שם המשתמש ואו הסיסמא אינם נכונים!\"); history.go (-1);</script>";

עכשיו בכדי שההתחברות תופעל, אז בדף שאתה רוצה נעשה דבר פשוט בעזרת משפט תנאי + isset לסיישן:
PHP קוד:
if(isset($_SESSION['admin_area']))
{
    echo 
"תוכן הדף";
}

else
{
    echo 
"אתה לא מחובר, סליחה!";

המדריך נכתב ע"י רותם וכל הזכויות שמורות © 2005.
__________________
לפניות, אנא השאירו לי הודעה פרטית.
Matchs.