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

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

ofek_golan 08-08-06 12:49

[PHP] מערכת התחברות
 
או קי אני עשיתי במסד 3 תאים
username
password
level

עשיתי שיש 3 רמות מנהל זה לבל 4
רסלייר זה לבל 3
משתמש זה לבל 2

עכשיו לכל אחד שמתי משתמש בניפרד
ושמתי לפי הסדר הלבל הבא:
2
3
4
כלומר הסדר שכתוב במסד זה המשתמש ראשון והמנהל אחרון..

עשיתי הוצאת נתון מהמסד בצור ההבאה:
PHP קוד:


include "config.php";

$query mysql_query("SELECT username,password,level FROM users"); 
while (
$row mysql_fetch_array($query))
{
$username $row["username"];
$password $row["password"];
$level $row["level"];


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

Elad-A 08-08-06 13:08

אתה רוצה שכל המשתמשים יוכלו להיכנס?

Alon.R 08-08-06 13:54

ואיך הקוד שהבאת מתקשר להתחברות כמנהל/ריסיילר/משתמש?

דבר ראשון אני לא הבנתי למה אתה צריך while אם זה להתחברות, אז אתה צריך רק שורה אחת בשביל לאמת נתונים.

בכלליות אני יסביר לך איך אמור לעבוד ההתחברות.

נשלח טופס עם שם משתמש וסיסמא, אתה מריץ שאילתה בusers שלוקחת את הpassword של אותו משתמש.

אם הpassword שהוקש בטופס שווה למה שהוצאת מהשאילתה - אתה מציב 2 עוגיות:
1. username
2. password

בכל מה שנוגע לpassword תשתמש בהצפנת md5,

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

PHP קוד:

//במידה ואין להם אחד מהעוגיות של ההתחברות
if($_COOKIE['username'] OR $_COOKIE['password'])
{
 
//פה אתה שולח אותם בחזרה לטופס בטענה שהם אינם מחוברים.
 
}
//במידה ויש להם את שני העוגיות
else
{
 
/*פה אתה מאמת את הנתונים של העוגיות, שוב פעם אותו דבר כמו שהסברתי לך מקודם, לוקח את הערך מהעוגיה של הusername (במקום אז.. מהטופס)
ומאמת הסיסמא שהוצאת מהמסד דרך הusername לסיסמא של העוגיה....
*/
 


בהצלחה!

HighA 08-08-06 17:36

לא שאלת אותי את זה כשהתחברת, עכשיו הבנתי מה אתה עושה :\
חחחחחחח סבבה
בהצלחה
^^

ofek_golan 08-08-06 18:34

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

RS324 08-08-06 18:48

ציטוט:

נכתב במקור על ידי Alon.R
ואיך הקוד שהבאת מתקשר להתחברות כמנהל/ריסיילר/משתמש?

דבר ראשון אני לא הבנתי למה אתה צריך while אם זה להתחברות, אז אתה צריך רק שורה אחת בשביל לאמת נתונים.

בכלליות אני יסביר לך איך אמור לעבוד ההתחברות.

נשלח טופס עם שם משתמש וסיסמא, אתה מריץ שאילתה בusers שלוקחת את הpassword של אותו משתמש.

אם הpassword שהוקש בטופס שווה למה שהוצאת מהשאילתה - אתה מציב 2 עוגיות:
1. username
2. password

בכל מה שנוגע לpassword תשתמש בהצפנת md5,

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

PHP קוד:

//במידה ואין להם אחד מהעוגיות של ההתחברות
if($_COOKIE['username'] OR $_COOKIE['password'])
{
 
//פה אתה שולח אותם בחזרה לטופס בטענה שהם אינם מחוברים.
 
}
//במידה ויש להם את שני העוגיות
else
{
 
/*פה אתה מאמת את הנתונים של העוגיות, שוב פעם אותו דבר כמו שהסברתי לך מקודם, לוקח את הערך מהעוגיה של הusername (במקום אז.. מהטופס)
ומאמת הסיסמא שהוצאת מהמסד דרך הusername לסיסמא של העוגיה....
*/
 


בהצלחה!


MD5 אפשר לפרוץ בדיי קלות עם הכלים המתאימים, לאבטחה מוגברת רצוי להשתמש במחרוזת נוספת המשתנה ממשתמש למשתמש
ולעשות משהו בסגנון של
md5(userpassword.key)
יש הרבה אפשרויות לאבטחה אבל MD5 לבד לא מספיק

ofek_golan 08-08-06 19:04

אפשר לחזור לנושא?

RS324 08-08-06 19:14

PHP קוד:

<html>
SELECT FROM users WHERE username='$_POST[username]' AND password='$_POST[password]' 

ואז אתה בודק אם הוא החזיר שורות
mysql_num_rows
ואם כן אז המשתמש קיים

ofek_golan 08-08-06 19:57

אני לא רוצה לשנות אני עשיתי קובץ בשם GLOBALS שמה הוא ממיר נתון ממסד למשנה ובPHP הוא משווה בינהם אני לא רוצה לשנות עכשיו הכל ... רק את קובץ GLOBALS

Alon.R 08-08-06 20:25

ציטוט:

נכתב במקור על ידי RS324
MD5 אפשר לפרוץ בדיי קלות עם הכלים המתאימים, לאבטחה מוגברת רצוי להשתמש במחרוזת נוספת המשתנה ממשתמש למשתמש
ולעשות משהו בסגנון של
md5(userpassword.key)
יש הרבה אפשרויות לאבטחה אבל MD5 לבד לא מספיק

חחחחחח מה שתגיד, עדיין לא שמעתי על מישהו שהצליח לפצח את המפתח ההצפנה הזה.

ואם אתה כבר מדבר, בוא נראה אם יש לך משהו מאחורי הדברים, תתן לי את הערך הלא מוצפן של הערך הזה:

קוד:

2924a4686bd638be54deadfec7e5a27d
ואז אני יאמין..

ציטוט:

נכתב במקור על ידי RS324
PHP קוד:

<html>
SELECT FROM users WHERE username='$_POST[username]' AND password='$_POST[password]' 

ואז אתה בודק אם הוא החזיר שורות
mysql_num_rows
ואם כן אז המשתמש קיים

דבר ראשון זה טיפשי,
ככה אתה לא יודע אם אין כזה משתמש או שפשוט הסיסמא לא נכונה.
כמו שאמרתי הוא צריך להוציא את הpassword מusers איפה שהמשתמש שווה למה שהוא כתב בטופס.
ואז לבדוק עם mysql_num_rows אם הוא הוא מצא משו', אם לא סימן שהמשתמש לא קיים.
במידה וכן הוא מצפין את מה שהלקוח כתב בשדה של הסיסמא ומשווה אותו למה שהוא מצא מהשאילתה שהוא הריץ.
במידה וזה נכון הוא מציב עוגיות - מחובר.

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


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

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