作为密码哈希的继承登录用户时出错


Error when logging in the user as a consecuence of password hashing

我正在尝试登录此用户,该用户名和密码保存在数据库中,但存在问题!当我尝试登录时,即使用户已注册,它也总是说用户名无效。我认为发生这种情况是因为当我注册用户时,我使用了密码哈希md5。我在注册表中使用了 md5,但我如何更改此代码以识别登录表单中的用户密码?提前感谢!这是我的代码:

<html >
<head>
<title></title>
</head>

<body>
<?php
print ("<form action='logincontroltest.php' method='post'>
    <p>Username
        <input type='text' name='username' />
    </p>
    <p>Password
        <input type='password' name='password' >
        <p/>
    <input type='submit' value='Log In'/>
</form>");
if( !($database=mysql_connect("localhost","root",""))||!(mysql_select_db("st_login",$database))  )
   print("Could not connect");
if(isset($_POST['username'])&&isset($_POST['password']) )
{
    $username=$_POST['username'];
    $password=md5($_POST['password']);
    if ( !empty($username) &&!empty($password) ) 
    {
         $query = " SELECT * FROM `login` WHERE   `username`='$username' AND `password`='$password'";
         if($result=mysql_query($query,$database))
         {
$user=mysql_fetch_assoc($result);
if($user==false){
  echo "invalid username";
}
elseif($user['admin']==1){
  
  echo"admin is logged in";
    header("Location: admin.php");
    
  }
  elseif($user['approval']==1) {
    $_POST['user']=$user['username'];
    echo "user is logged in";
    header("Location: faqja2.php");
  }
  else{
    echo "Your account is'nt approved by admin yet";
    }} 
     die (mysql_error());
          }
   else echo "Fill in all blank fields";
   } 
    ?>
    </body>
</html>
这是我的注册php文件

<?php
if( !($database=mysql_connect("localhost","root",""))||!(mysql_select_db("st_login",$database))  )
   print("Could not connect");
if(isset($_POST['firstname'] )&&isset($_POST['lastname'])&&isset($_POST['username'])&&isset($_POST['password'])
  &&isset($_POST['cv'])/*&&isset($_POST['notat'])&&isset($_POST['lendet'])*/&&isset($_POST['email'])){
$firstname=$_POST['firstname'];
$lastname=$_POST['lastname'];
$username=$_POST['username'];
$password=md5($_POST['password']);
$email=$_POST['email'];
$cv=$_POST['cv'];
/*
$notat=$_POST['notat'];
$lendet=$_POST['lendet'];
*/
$query = "INSERT INTO  login (firstname, lastname, username,password,cv,email) VALUES ('$firstname', '$lastname',
 '$username','$password','$cv','$email')";
}
if ( !empty($firstname)&&!empty($lastname)&&!empty($username) &&!empty($password)&&!empty($cv)&&!empty($email))
{
  if(!($result=mysql_query($query,$database)))
{
    print("Could not execute query");
    die (mysql_error());//ose error
}
$to='backa.elda123@gmail.com';
$subject='Asking for permission';
$body='There is another registered student waiting for your approval!';
$headers='From:<arbi.backa@gmail.com>';
if(mail($to,$subject,$body,$headers)){
  echo "mail sent to..";}
  else echo'errorr sending the email';
echo "YOU HAVE BEEN REGISTERED SUCCESSFULLY!PLEASE WAIT FOR THE ADMIN APPROVAL!";
}
else echo "Fill in all the blank fields";
mysql_close($database);
?>
</body>
</html>

您正在将表单提交给"logincontroltest.php"。而登录过程代码位于同一文件中。 因此,请从表单标记中删除操作值。并仅在设置了$POST数组时才处理表单提交代码。然后它起作用了。

        <html >
    <head>
    <title></title>
    </head>


    <body>
    <?php
    print ("<form action='' method='post'>
        <p>Username
            <input type='text' name='username' />
        </p>
        <p>Password
            <input type='password' name='password' >
            <p/>
        <input type='submit' value='Log In'/>
    </form>");
    if(isset($_POST)) {
    if( !($database=mysql_connect("localhost","root",""))||!(mysql_select_db("st_login",$database))  )
       print("Could not connect");
    if(isset($_POST['username'])&&isset($_POST['password']) )
    {
        $username=$_POST['username'];
        $password=md5($_POST['password']);

        if ( !empty($username) &&!empty($password) ) 
        {
             $query = " SELECT * FROM `login` WHERE `username`='$username' AND `password`='$password'";
             if($result=mysql_query($query,$database))
             {
    $user=mysql_fetch_assoc($result);
    if($user==false){
      echo "invalid username";
    }
    elseif($user['admin']==1){
      echo"admin is logged in";
        header("Location: admin.php");
      }
      elseif($user['approval']==1) {
        $_POST['user']=$user['username'];
        echo "user is logged in";
        header("Location: faqja2.php");
      }
      else{
        echo "Your account is'nt approved by admin yet";
        }} 
         die (mysql_error());
              }
       else echo "Fill in all blank fields";
       } 
    }
        ?>
        </body>
    </html>