עבור לתוכן

צריך הכוונה בבניית ב MYSQL עם טבלה של משתמשים ו PHP

Featured Replies

פורסם

שלום לכולם!

התחלתי ללמוד לבד MYSQL ו PHP.

סתם בשביל ללמוד אני בונה אתר ואני רוצה שהתוכן שלו יוצג רק למשתמשים רשומים.

הרשימה של המשתמשים תהיה בטבלה בבסיס בנתונים.

השאלה שלי היא, כדי שמשתמש יוכל להיכנס לחשבון שלו, הוא צריך גישה לבסיס נתונים, אז איך אני אמור להגדיר כל דף PHP? עם כניסה של ROOT לבסיס נתונים ואז לבצע בדיקה של שם המשתמש והססמא? ככה אמורים לעשות את זה? זה בטוח?

הכוונה שלי היא שבכל עמוד אני צריך לשים את הקטע קוד הבא למשל?:


<?php
$user="root";
$host="localhost";
$password=12345";
$database="test";
$connection = mysql_connect($host,$user,$password);
$db = mysql_select_db($database, $connection);

?>

ואז אני מבצע את האימות של השם משתמש והססמא?

תודה לעונים.

פורסם

כן בגדול הרעיון נכון אבל עם כמה שינויים קטנים:

- לאתר יש משתמש אחד שאיתו הוא מתחבר לבסיס הנתונים (מסיבות של אבטחה עדיף שזה לא יהיה root).

- מקובל לשמור את השם והסיסמה בקובץ נפרד ולעשות לו include איפה שצריכים, כנ"ל הקוד של החיבור לבסיס הנתונים שחוזר על עצמו כל פעם.

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

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

פורסם
  • מחבר

הבנתי תודה רבה. וטוב שאמרת לי לגבי ה SESSION כי זה באמת הרבה יותר הגיוני מאשר כל פעם לבדוק שם וססמא.

אני אנסה ללמוד את העניין כי אני ממש לא יודע איך עושים את זה, תודה רבה!

פורסם
  • מחבר

אוקיי קצת לא הבנתי את העניין עם ה SESSION.

אתה יכול לתת לי דוגמא?

למשל, ברגע שהמשתמש מתחבר, אני יעשה משתנה נגיד בשם $Connected שיהיה שווה ל- 1.

ולשמור אותו ב SESSION, ואז בכל עמוד באתר אני אבדוק עם המשתנה הזה שווה ל- 1?

ויש צורך בתחילת כל עמוד לאתחל את $Connected ב-0?, במילים אחרות, אם הוא לא התחבר, אני צריך גם לאחסן את CONNECTED עם הערך -0 ב SESSION כדי לבצע את ההפניה לעמוד החיבור?

פורסם

נגיד יש עמוד login.php שבוא אתה מקבל שם וסיסמה ובודק אותם מול בסיס הנתונים.

אם הנתונים נכונים אתה שומר ערך ב-session משהו כזה:


$_SESSION['connected']=1;

ואז מפנה לדף הבא.

בשאר הדפים בהתחלת דף אתה מוסיף קוד שבודק את המשתנה ב-session ופועל בהתאם:


<?php
if(!isset($_SESSION['connected']) || $_SESSION['connected']!=1)
{
$_SESSION['connected']=0;
//Redirect to login page
header("Location: http://".$_SERVER['SERVER_NAME']."/login.php");
}
?>

יכול להיות שתצטרך להוסיף בתחילת כל הדפים שלך גם session_start() זה תלוי בקונפיגורציה של php.

פורסם
  • מחבר

אוקיי מצויין הבנתי ויישמתי.

ואם כבר אנחנו בנושא הזה, סגירה של הדפדפן גורמת לאיבוד של ה SESSION, אם התחברתי למשל וסגרתי את הדפדפן, ונכנסתי שוב לאתר, אז אני לא מחובר יותר ואני צריך להתחבר מחדש.

זה אמור להיות ככה? אני צריך להשתמש ב COOKIES כדי להשאר מחובר?

פורסם

כן, בשביל להשאר מחובר אתה צריך להשתמש ב-cookies.

פורסם
  • מחבר

אחלה המון תודה!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים