Проблем с MD5

Jurassic

Registered
Здравейте, имам следната форма за регистрация:

Код:
   $username = htmlspecialchars(trim($_POST["username"]));

   $password = md5($_POST["password"]);

   $password1 = md5($_POST["password1"]);

   $userpass = htmlspecialchars(trim($_POST["userpass"]));

   $email = htmlspecialchars(trim($_POST["email"]));

Регистрцията е добре, md5 hash-a се записва в дб-то, но имам проблем с логина. Изписва ми "Грешен потребител или парола", ето кода:

Код:
   $username = htmlspecialchars(trim($_POST["username"]));

   $password = md5($_POST["password"]);

   

   echo "<br />";    

   if (($username != "") && ($password != ""))

   {

        $q = "SELECT username FROM `members` WHERE (username = '$username') and (password = '$password')";

        if(!($result_set = mysql_query($q))) die(mysql_error());

        $number = mysql_num_rows($result_set);

 

        if (!$number) {

            echo "Грешен потребител или парола"; 

            showForm();

        } 

        else {

            $date = date("y-m-d");

            mysql_query("UPDATE `members` SET access = '$date' WHERE username = '$username'"); 

            $_SESSION["imagehost-user"] = $username;

            $_SESSION["imagehost-pass"] = $password;

            echo "<b>Влязохте успешно в системата на ...</b> <br><br>Ще бъдете пренасочен към контролия панела.

                  <br> 

                 Кликнете <a href=\"account.php\">тук</a>, за да отидете към мястото за потребители.";

            echo "<meta http-equiv=\"refresh\" content=\"3; url='account.php'\" />";

        }

   }

   else

     { echo "Моля попълнете всички полета!"; showForm(); }

}
 
Ако кажеш какъв е проблема с логина, няма да е зле :)
На пръв поглед виждам, че по никакъв начин не филтрираш входящите данни, което е голяма грешка. Разгледай темата за сигурността, която е стикната в този форум :)
 
За това ли става въпрос:
Код:
$password = md5($_POST["password"]);
?

Изписва ми, че паролата е грешна, не знам къде е грешката :)
 
Ръждясал съм с MySQL -а но мисля, че не трябва да има скоби в WHERE клаузата. Тествай кода, виж дали ти вади паролата както трябва, да не е да си объркал някакви променливи по-нагоре в скрипта и дали си запазил паролата с md5 хеш в базата данни :D (понякога и това става)
 
F1r3Fl3x каза:
Ръждясал съм с MySQL -а но мисля, че не трябва да има скоби в WHERE клаузата. Тествай кода, виж дали ти вади паролата както трябва, да не е да си объркал някакви променливи по-нагоре в скрипта и дали си запазил паролата с md5 хеш в базата данни :D (понякога и това става)

Паролата се записва с MD5 hash, видях го, но не става... :roll:
 
Като цяло кода ти не ми харесва.
Преправих го до възможно най-разбираем и лесен за изпълнение (поне според мен).
И сега остава да кажеш дали работи ;)

<?php
$username = htmlspecialchars(trim($_POST['username']));
$password = md5($_POST['password']);
echo "<br />";
if ($username != "" && $password != "")
{
$q = mysql_query("SELECT * FROM `members` WHERE username = '$username' and password = '$password'") or die(mysql_error());
$number = mysql_num_rows($q);
if ($number == 0)
{
echo "Грешен потребител или парола";
showForm();
}
else
{
$date = date("y-m-d");
mysql_query("UPDATE `members` SET access = '$date' WHERE username = '$username'") or die(mysql_error());
$_SESSION['imagehost-user'] = $username;
$_SESSION['imagehost-pass'] = $password;
echo "<b>Влязохте успешно в системата на ...</b> <br><br>Ще бъдете пренасочен към контролия панела.<br>";
echo "Кликнете <a href=\"account.php\">тук</a>, за да отидете към мястото за потребители.";
echo "<meta http-equiv=\"refresh\" content=\"3; url='account.php'\" />";
}
}
else
{
echo "Моля попълнете всички полета!";
showForm();
}
}
?>
 

Back
Горе