PHP即使有效,密码也无效

时间:2014-10-25 12:49:59

标签: php mysql login passwords username

我正在尝试使用php,mysql创建登录系统,但即使我输入正确的用户名和密码组合,该网站也会告诉我它们无效。

有什么问题?

我的代码:

     <?php
    session_start();
      $error_msg = "";

      if (!isset($_SESSION['user_id'])) {
        if (isset($_POST['submit'])) {
          require_once('config.php');
          $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

          $user_username = mysqli_real_escape_string($dbc, trim($_POST['username']));
          $user_password = mysqli_real_escape_string($dbc, trim($_POST['password']));

          if (!empty($user_username) && !empty($user_password)) {
            $query = "SELECT user_id, username FROM users WHERE username = '$user_username' AND password = SHA('$user_password')";
            $data = mysqli_query($dbc, $query);

            if (mysqli_num_rows($data) == 1) {
              $row = mysqli_fetch_array($data);
              $_SESSION['user_id'] = $row['user_id'];
              $_SESSION['username'] = $row['username'];

              setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30));    // expires in 30 days
              setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30));  // expires in 30 days
              $home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/loggedin.php';
              header('Location: ' . $home_url);     
            }
            else {
              $error_msg = 'Invalid username and/or password.';  
            }
          }
          else {
            $error_msg = 'No empty fields allowed!';
          }
        }
      }

        echo '<a href="register.php">Click to register</a>';   
    ?>
<HTML>
<BODY>
      <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <?php
        if (empty($_SESSION['user_id'])) {
        echo '<p>' . $error_msg . '</p>';
        ?>
        <fieldset>
          <legend>Login</legend>
          <label for="username"><font color="black">Username:</font></label>
          <input type="text" name="username" value="<?php if (!empty($user_username)) echo $user_username; ?>" /><br />
          <label for="password"><font color="black">Password:</font></label>
          <input type="password" name="password" /><br />
        </fieldset>
        <input type="submit" value="Login" name="submit" />
      </form>


    <?php
      }
      else {
        // Successful
        echo('');
      }
    ?>  
    </BODY>
    </HTML>

你可能想知道我在config.php中是否有正确的数据。 是的,我有正确的连接用户名,主机,密码和数据库名称,因为我使用相同的文件进行注册,它运行良好。

谢谢, 亨利克

1 个答案:

答案 0 :(得分:2)

密码需要至少40个CHAR / VARCHAR字段才能使用mysql SHA功能保存。 您也可以直接在mysql编辑器中检查SELECT SHA('password'),看看db中保存的值是否符合您的预期。