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

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

Jonathan Zeierman 17-06-09 00:12

בעיה ב-md5
 
שלום לכולם.
אני מנסה לעשות התחברות עם סיסמא מוצפנת ב-md5.
אך משום מה הקוד בעיקרון לא עובד אין שגיאות אין כלום רק כשאני עושה התחבר הוא מרענן לי את דף ההתחברות.
מה הבעיה בקוד שלי?
PHP קוד:

    if (isset($_POST["send"]))
   {
      
//////////////////////////////////////////////////////////////////
      // If user & pass are right, create session and login. ///////////
      //////////////////////////////////////////////////////////////////
         
$query "SELECT * FROM users WHERE user = '{$user}' AND password =  '{$pass}'";
         
$result mysql_query($query)
         or die(
"SQL Getting The Next Error:" mysql_error());
         
         
$user $_POST["user"];
         
$pass md5($_POST["pass"]);
         
         while (
$row mysql_fetch_assoc($result))
         {
         
            if (
$row["user"] == $user && $row["password"] == $pass)
            {
               
               
$_SESSION["user"] = $user;
               
$_SESSION["pass"] = $pass;
               
header("Location: manage.php?act=Admin");
            }
         
               
///////////////////////////////////////////////////////////////////
               // If user & pass worng, show us an erroe msseage.  ///////////////
               ///////////////////////////////////////////////////////////////////
               
if ($row["user"] != $user && $row["password"] != $pass)
               {
                  echo 
'<html dir="rtl">
                  <head>
                  <link rel="stylesheet" type="text/css" href="includes/css/style.css" media="screen"/>
                  <meta http-equiv="Content-Language" content="he">
                  <meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
                  <title>שגיאה</title>
                  </head>
                  <body>
                  <center>
                     <div class="error" style="width:350px" align="right">
                  <table cellpadding="6" cellspacing="2" width="100%">
                  <tr>
                  <td>
                  <img src="images/error.gif" /> <b>שגיאה:</b> שם משתמש ו/או סיסמה שגויים.</td>
                  </tr>
                  </table>
                  </div><div class="space"></div>
                  </center>
                  </body>
                  </html>'
;
               }
         }
    }
//////////////////////////////////////////////////////////////////
?> 

המסד נתונים שלי נראה ככה:
http://www.mup.co.il/img.php?f=84a14aa975ed.jpg
הסיסמא היא 2 אם תלכו ל- hashfinder תגלו שהסיסמא היא 2.
תודה לעוזרים.

אדיר 17-06-09 00:39

הקוד שלך ממש לא תקין ולא יעיל..

ב- SELECT עדיף שתעשה count('id') ואז פשוט תבדוק אם הוא שווה ל- 1.

יחסוך את כל התנאים ואת כל הלולאות החסרי שימוש האלה.
רק שים לב שפעם הבאה תגדיר את המשתנה לפני שאתה משתמש בו (שים לב איפה הגדרת את user ואת pass).

Slash 17-06-09 02:02

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

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

Jonathan Zeierman 17-06-09 13:48

טעות שלי לא שמתי לב.
אבל עדיין לא עובד.
PHP קוד:

    if (isset($_POST["send"]))
    {
        
//////////////////////////////////////////////////////////////////
        // If user & pass are right, create session and login. ///////////
        //////////////////////////////////////////////////////////////////
            
$user $_POST["user"];
            
$pass md5($_POST["pass"]);
            
            
//$query = "SELECT * FROM users WHERE user = '{$user}' AND password = '{$pass}'";
            
$query "SELECT * FROM users";
            
$result mysql_query($query)
            or die(
"SQL Getting The Next Error:" mysql_error());
            
            while (
$row mysql_fetch_assoc($result))
            {
            
                if (
$row["user"] == $user && $row["password"] == $pass)
                {
                    
                    
$_SESSION["user"] = $user;
                    
$_SESSION["pass"] = $pass;
                    
header("Location: manage.php?act=Admin");
                }
            
                    
///////////////////////////////////////////////////////////////////
                    // If user & pass worng, show us an erroe msseage.  ///////////////
                    ///////////////////////////////////////////////////////////////////
                    
if ($row["user"] != $user && $row["password"] != $pass)
                    {
                        echo 
'<html dir="rtl">
                        <head>
                        <link rel="stylesheet" type="text/css" href="includes/css/style.css" media="screen"/>
                        <meta http-equiv="Content-Language" content="he">
                        <meta http-equiv="Content-Type" content="text/html; charset=windows-1255">
                        <title>שגיאה</title>
                        </head>
                        <body>
                        <center>
                        <div class="error" style="width:350px" align="right">
                        <table cellpadding="6" cellspacing="2" width="100%">
                        <tr>
                        <td>
                        <img src="images/error.gif" /> <b>שגיאה:</b> שם משתמש ו/או סיסמה שגויים.</td>
                        </tr>
                        </table>
                        </div><div class="space"></div>
                        </center>
                        </body>
                        </html>'
;
                    }
            }
    } 


OrPol 17-06-09 14:13

אתה צריך להגדיר את המשנים, ואז לעשות את הQuery
כמו שהיא למעלה, אבל התנאי שלך צריך להיות
PHP קוד:

if(mysql_fetch_rows($query) > 0


Jonathan Zeierman 17-06-09 14:19

אתה מתכוון למשהו כזה?
PHP קוד:

    if (isset($_POST["send"])) 
    { 
        
////////////////////////////////////////////////////////////////// 
        // If user & pass are right, create session and login. /////////// 
        ////////////////////////////////////////////////////////////////// 
            
$user $_POST["user"]; 
            
$pass md5($_POST["pass"]); 
             
            
$query "SELECT * FROM users WHERE user = '{$user}' AND password = '{$pass}'"
            
$result mysql_query($query
            or die(
"SQL Getting The Next Error:" mysql_error()); 
             
                if(
mysql_fetch_rows($query) > 0)
                {
                     
                    
$_SESSION["user"] = $user
                    
$_SESSION["pass"] = $pass
                    
header("Location: manage.php?act=Admin"); 
                } 
             
                    
/////////////////////////////////////////////////////////////////// 
                    // If user & pass worng, show us an erroe msseage.  /////////////// 
                    /////////////////////////////////////////////////////////////////// 
                    
if ($row["user"] != $user && $row["password"] != $pass
                    { 
                        echo 
'<html dir="rtl"> 
                        <head> 
                        <link rel="stylesheet" type="text/css" href="includes/css/style.css" media="screen"/> 
                        <meta http-equiv="Content-Language" content="he"> 
                        <meta http-equiv="Content-Type" content="text/html; charset=windows-1255"> 
                        <title>שגיאה</title> 
                        </head> 
                        <body> 
                        <center> 
                        <div class="error" style="width:350px" align="right"> 
                        <table cellpadding="6" cellspacing="2" width="100%"> 
                        <tr> 
                        <td> 
                        <img src="images/error.gif" /> <b>שגיאה:</b> שם משתמש ו/או סיסמה שגויים.</td> 
                        </tr> 
                        </table> 
                        </div><div class="space"></div> 
                        </center> 
                        </body> 
                        </html>'

                    }
    } 


Jonathan Zeierman 18-06-09 14:18

מצטער, לא יכול לערוך.
ניסתי משהו כזה:
PHP קוד:

    if (isset($_POST["send"]))  
    {  
        
//////////////////////////////////////////////////////////////////  
        // If user & pass are right, create session and login. ///////////  
        //////////////////////////////////////////////////////////////////  
            
$user $_POST["user"];  
            
$pass md5($_POST["pass"]);  
              
            
$query "SELECT * FROM users WHERE user = '{$user}' AND password = '{$pass}'";  
            
$result mysql_query($query)  
            or die(
"SQL Getting The Next Error:" mysql_error());  
              
                if(
mysql_fetch_rows($query) > 0
                { 
                      
                    
$_SESSION["user"] = $user;  
                    
$_SESSION["pass"] = $pass;  
                    
header("Location: manage.php?act=Admin");  
                }  
              
                    
///////////////////////////////////////////////////////////////////  
                    // If user & pass worng, show us an erroe msseage.  ///////////////  
                    ///////////////////////////////////////////////////////////////////  
                   
else  
                    {  
                        echo 
'<html dir="rtl">  
                        <head>  
                        <link rel="stylesheet" type="text/css" href="includes/css/style.css" media="screen"/>  
                        <meta http-equiv="Content-Language" content="he">  
                        <meta http-equiv="Content-Type" content="text/html; charset=windows-1255">  
                        <title>שגיאה</title>  
                        </head>  
                        <body>  
                        <center>  
                        <div class="error" style="width:350px" align="right">  
                        <table cellpadding="6" cellspacing="2" width="100%">  
                        <tr>  
                        <td>  
                        <img src="images/error.gif" /> <b>שגיאה:</b> שם משתמש ו/או סיסמה שגויים.</td>  
                        </tr>  
                        </table>  
                        </div><div class="space"></div>  
                        </center>  
                        </body>  
                        </html>'
;  
                    } 
    } 

אבל עדיין לא עובד ולא מחזיר שום שגיאה.

mayden 19-06-09 12:46

תיקנתי לך ועשיתי לך קצת שיפורים בקוד:
PHP קוד:

    if (isset($_POST["send"])) 
   { 
      
////////////////////////////////////////////////////////////////// 
      // If user & pass are right, create session and login. /////////// 
      //////////////////////////////////////////////////////////////////
 
         
$user $_POST["user"]; 
         
$pass md5($_POST["pass"]); 
         
$query "SELECT `id` FROM `users` WHERE `user` = {$user} AND `password` =  {$pass}"
         
$result mysql_query($query
         or die(
"SQL Getting The Next Error:" mysql_error()); 
          
 if(
mysql_num_rows($result) > 0)
  {
   
$_SESSION["user"] = $user
                
$_SESSION["pass"] = $pass
               
header("Location: manage.php?act=Admin"); 
  }
 else {
   
// error of connecting
  
}
         
               
         
    } 
// end of if(isset)
////////////////////////////////////////////////////////////////// 
?> 

כמה דברים:
- אתה בודק בMYSQL אם קיים כזה USER וסיסמא שתואמים. אם קיים -> יופי הכל טוב אתה מתחבר. אם לא-> שגיאה, כלומר משהו לא עובד.

מה היו הטעויות שלך? לא היית צריך לעשות לולאה שעוברת על הכל, וגם אם כן.. למה עשית עוד IF? היית פשוט עושה ELSE (בשגיאה).. כי מן הסתם אם הוא לא מתחבר, אז זה שגיאה. כמו כן, השאילתה שלך לא נכונה.. למה הוצאת את כל המידע של הUSERS? (*) אתה צריך רק חלק מסויים לבדוק אם זה תואם.


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

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