הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 20-03-10, 00:25   # 1
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

בעיה ביצירת התחברות לאתר.

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

PHP קוד:

mysql_connect
("localhost""root""");
mysql_select_db("phpmyadmin"); 
$user_name mysql_real_escape_string(htmlspecialchars($_POST['user_name']));
$password mysql_real_escape_string(htmlspecialchars(md5($_POST['password'])));
$query mysql_query("SELECT * FROM users WHERE user_name='$user_name'"); 
$row=mysql_fetch_array($query);
$row_password=$row['password'];
$row_user_name=$row['user_name'];


if (isset(
$_POST['submit']))
{
if (
$row_password==$password && $row_user_name==$user_name)
{
    
setcookie("username"$user_nametime()+60000);
    
setcookie("id"$id_cookietime()+60000);
    
header("location: index.php");
    exit; 
}
  else
{
echo 
"Login Fail";

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

תודה ושבת שלום
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 20-03-10, 00:59   # 2
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

את כל הקטע בהתחלה עד הif תעביר לתוך הif.
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 20-03-10, 01:04   # 3
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

עשיתי..לא עובד..
זה הקוד:

PHP קוד:
if (isset($_POST['submit']))
{
mysql_connect("localhost""root""");
mysql_select_db("phpmyadmin"); 
$user_name mysql_real_escape_string(htmlspecialchars($_POST['user_name']));
$password mysql_real_escape_string(htmlspecialchars(md5($_POST['password'])));
$query mysql_query("SELECT * FROM users WHERE user_name='$user_name'"); 
$row=mysql_fetch_array($query);
$row_password=$row['password'];
$row_user_name=$row['user_name'];
$password_cookie=$row['password'];
$user_name_cookie=$row['user_name'];
if (
$row_password==$password && $row_user_name==$user_name)
{
    
setcookie("username"$user_nametime()+60000);
    
setcookie("id"$id_cookietime()+60000);
    
header("location: index.php");
    exit; 
}
  else
{
echo 
"Login Fail";

__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 20-03-10, 08:42   # 4
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

הבעייה פשוטה מאוד.
תסתכל על הקוד שלך - הוספתי רווחים כדי שיהיה יותר מסודר:
PHP קוד:
if (isset($_POST['submit'])) {
    
mysql_connect("localhost""root""");
    
mysql_select_db("phpmyadmin");
    
$user_name mysql_real_escape_string(htmlspecialchars($_POST['user_name']));
    
$password mysql_real_escape_string(htmlspecialchars(md5($_POST['password'])));
    
$query mysql_query("SELECT * FROM users WHERE user_name='$user_name'");
    
$row mysql_fetch_array($query);
    
$row_password $row['password'];
    
$row_user_name $row['user_name'];
    
$password_cookie $row['password'];
    
$user_name_cookie $row['user_name'];
    if (
$row_password == $password && $row_user_name == $user_name) {
        
setcookie("username"$user_nametime() + 60000);
        
setcookie("id"$id_cookietime() + 60000);
        
header("location: index.php");
        exit;
    } else {
        echo 
"Login Fail";
    }

נסה "להריץ את זה בראש" כשלא שולחים כלום, ותראה מה יקרה (ז"א isset($_POST['submit'] = FALSE)


אגב, יש לך עוד כמה בעיות והרגלים לא נכונים בקוד...
בשורה 6,
PHP קוד:
]));
$password mysql_real_escape_string(htmlspecialchars(md5($_POST['password']))); 
למה htmlspecialchars או mysql_real_escape_string? md5 תמיד מחזירה string בעל 32 תווים מהבסיס ההקסדימאלי (0-9, a-f), ולכן לא צריך לעשות שום "סינון" לזה.

בשורה 7,
PHP קוד:
])));
$query mysql_query("SELECT * FROM users WHERE user_name='$user_name'"); 
למה לשלוף את הכל? שלוף תמיד רק את מה שאתה צריך. ובנוסף - זאת התחברות. אתה אמור לעשות משהו בסגנון של
PHP קוד:
])));
$query mysql_query("SELECT * FROM users WHERE user_name='$user_name' AND password='$password'"); 

ואז כמובן שורה 8 מיותרת.


בשורה 9, אתה קורא למשתנה שכבר ידוע לך - השתמשת בו בשאילתה.
בקיצור כל החלק הזה:
PHP קוד:
$row_password=$row['password'];
$row_user_name=$row['user_name'];
$password_cookie=$row['password'];
$user_name_cookie=$row['user_name']; 
דיי מיותר.

את ה-if כמובן צריך להוריד כי אתה כבר בודק את זה בשאילתה.

ו-$user_name ו-$id_cookie לא מוגדרים.



זה על רגל אחת.
  Reply With Quote
ישן 20-03-10, 14:52   # 5
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

קודם כל, תודה רבה לך על הכל.
האמת שאני לא כל כך מסכים איתך לגבי כמה הערות אבל אני יודע וברור לי שאתה מנוסה יותר..
קצת יהיה קשה לנהל פה שיחה, יש לך Icq אולי?
בכל אופן, בוא נעזוב את שאר הבעיות שעם חלקן אני לא מסכים.
מה הבעיה בקטע של isset($_POST['submit'] = FALSE?
הרי אם לא לחצו, אז לא קורה כלום..
הבעיה היא שכן לוחצים אבל לא מזינים כלום..למה זה קורה?
למה זה עדיין מעביר לindex?
אולי פספסתי את התשובה שלך.
אם הסיסמא שנשלפה מהמסד היא 123456 והסיסמא שכאילו הוקשה היא כלום ז"א "" אז הם עדיין לא שווים, כלום לא שוה ל 123456.
אני טועה? מה הבעיה?

תודה רבה לך, אתה מאוד עוזר לי
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 20-03-10, 20:27   # 6
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

ציטוט:
נכתב במקור על ידי dor77 צפה בהודעה
קודם כל, תודה רבה לך על הכל.
האמת שאני לא כל כך מסכים איתך לגבי כמה הערות אבל אני יודע וברור לי שאתה מנוסה יותר..
קצת יהיה קשה לנהל פה שיחה, יש לך Icq אולי?
בכל אופן, בוא נעזוב את שאר הבעיות שעם חלקן אני לא מסכים.
מה הבעיה בקטע של isset($_POST['submit'] = FALSE?
הרי אם לא לחצו, אז לא קורה כלום..
הבעיה היא שכן לוחצים אבל לא מזינים כלום..למה זה קורה?
למה זה עדיין מעביר לindex?
אולי פספסתי את התשובה שלך.
אם הסיסמא שנשלפה מהמסד היא 123456 והסיסמא שכאילו הוקשה היא כלום ז"א "" אז הם עדיין לא שווים, כלום לא שוה ל 123456.
אני טועה? מה הבעיה?

תודה רבה לך, אתה מאוד עוזר לי
אם אתה לא מסכים - אל תעשה עד שתסכים. כי לכל דבר יש את הסיבה שלו, ועדיף לא לעשות מאשר לעשות בלי להבין.

עכשיו פתאום אני לא בטוח ב-100% אם הבנתי את השאלה שלך.
תסתכל, אם אין $_POST['submit'], אז פשוט לא קורה כלום. נסה להריץ את זה בראש שורה אחר שורה. אם אין $_POST['submit'] וזה כל הקוד אמור להופיע רק דף ריק.
למה? כי על ההתחלה יש
PHP קוד:
 if (isset($_POST['submit'])) { 
וזה מכליל את כל הדברים.

אתה בטוח שמה שנתת כאן זה כל הקוד?

בנוגע למה ששלחת בה"פ
ציטוט:
נכתב במקור על ידי dor77
באשכול שלי אמרת שיש בעיה בשורה הזו:

PHP קוד:
$query mysql_query("SELECT * FROM users WHERE user_name='$user_name'"); 
אתה הצעת להוסיף את זה:

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

אני טועה?

תודה.
דבר ראשון - זה לא ==, זה רק = אחד (ב-MySQL משתמשים ב= אחד).
אתה יכול ישר לבדוק במסד עצמו. "שלוף מתוך המסד הנתונים איפה שה-username = (מה שהקישו כשם משתמש) ואיפה שהסיסמא = (מה שהקישו כסיסמא מוצפן ב-md5)"
זה יותר יעיל לעשות את כל הביצוע עצמו במסד. המסד בעצמו בודק האם יש שם משתמש וסיסמא שתואמים למה שהקישו.
  Reply With Quote
ישן 20-03-10, 21:38   # 7
dor77
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jan 2008
הודעות: 1,650

dor77 לא מחובר  

אוקיי אתה צודק לעשות דבר כזה אבל רק במקרה שאני מוןסיף mysql_num_rows..
רק אז זה נכון..
אני צודק?

תודה רבה.
__________________
מתכנת php אמין ומקצועי.
מחירים נוחים!
יצירת קשר: 0544378743
  Reply With Quote
ישן 20-03-10, 22:11   # 8
Daniel
אחראי פורום
 
מיני פרופיל
תאריך הצטרפות: Mar 2007
הודעות: 2,875

Daniel לא מחובר  

אכן. אם אתה רוצה לתכנת באופן "נכון", זאת הדרך.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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