View Single Post
ישן 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