הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - מערכת התחברות, רמה קלה עד בינונית. (https://hosts.co.il/forums/showthread.php?t=231)

Matchs 05-10-05 11:28

[מדריך] 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.

WebProject 05-10-05 11:38

כל הכבוד על ההשקעה, נוסף לאינדקס מדריכים :)

Tal 05-10-05 11:51

תודה רותם :)
די בסיסי..:d

ido_gold 05-10-05 13:03

נראה לי רק מי שכבר יודע לעשות את זה יבין, אבל בכל זאת יפה על ההשקעה.

דרך אגב, צריך גם לקבוע את הid על auto incrisment... (או איך שלא כותבים את זה.)

Matchs 05-10-05 13:06

ציטוט:

נכתב במקור על ידי ido_gold
נראה לי רק מי שכבר יודע לעשות את זה יבין, אבל בכל זאת יפה על ההשקעה.

דרך אגב, צריך גם לקבוע את הid על auto incrisment... (או איך שלא כותבים את זה.)

זה רק במידה אם עושים פאנל ניהול, ועושים הוספת אדמין, אז הוא יוסיף את הID בצורה אוטומטית.

ido_gold 05-10-05 13:20

זה יותר במידה ועושים הרשמה, אז רוצים שכל משתמש יקבל Id עוקב.

אבל מה שווה התחברות בלי הרשמה? : )

Inuyasha 05-10-05 14:00

תודה, כל הכבוד על ההשקעה. :)

Alon.R 05-10-05 23:20

Parse error: parse error, unexpected '{' in /home/****/domains/********/public_html/*****/****/login.php on line 18

HELP PLZ!

Pavel 05-10-05 23:41

כל הכבוד על ההשקעה רותם..:)

somebody 06-10-05 00:04

כל הכבוד על ההשקע!
למרות שלא הבנתי כלום(אין לי מושג בphp!:))


כל הזמנים הם GMT +2. הזמן כעת הוא 19:28.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ