不知道为什么我的登录不起作用

Reb*_*kah -2 php

我创建了一个登录,以便用户可以登录到一个站点,我使用php和phphmyadmin来创建登录,我使用相同的代码为我正在做的另一个项目,它工作正常,但它现在不会工作,不似乎喜欢第15行,我做错了什么.

这是我的代码

<?php
    session_start();
?>

<header id="page_header">

<?php

  include "connect.php";

  if (isset($_POST['username']) and isset($_POST['password'])){

$username = $_POST['username'];

$password = $_POST['password'];

$query = "SELECT * FROM users WHERE username='$username' and password='$password'";

$result = mysqli_query($con, $query) or die(mysqli_error());

$count = mysqli_num_rows($result);

if ($count == 1){

$_SESSION['username'] = $username;

}else {

echo "Invalid Login Credentials.";

}


} 

?>




<div id = "menu">
            <nav>
          <ul>
            <li><img src="../img/buzz_party.png"></li>
              <li><a href="index.php">Home</a></li> &nbsp; &nbsp; &nbsp;
              <li><a href="aboutus.php">About Us</a></li> &nbsp; &nbsp; &nbsp;
              <li><a href="advertising.php">Supplies</a></li> &nbsp; &nbsp; &nbsp;
              <li><a href="items.php">Party Supplies</a></li> &nbsp; &nbsp; &nbsp;
              <li><a href="contact.php">Contact Us</a></li> &nbsp; &nbsp; &nbsp;

            </nav>

        </div>

                  <div id = "login_details">

            <?php      

       if (isset($_SESSION['username'])){

$username = $_SESSION['username'];

echo "Hello " . $username . " ";


}

echo "<a href='logout.php'>Logout</a>";

?>

     </div>

    <div id="login">

<form action="index.php" method="post">

          <label for="username" class="uname" data-icon="u" >Username:</label>
          <input id="username" name="username" required="required" type="text" size="10" placeholder="Username"/>


          <label for="password" class="youpasswd" data-icon="p">Password:</label>
          <input id="password" name="password" required="required" type="password" size="10" placeholder="Password" /> 

          <input type="submit" value="Login" /> 

        </form>

      </div>

</header>
Run Code Online (Sandbox Code Playgroud)

Fun*_*ner 5

mysqli_error() 要求将连接作为参数传递

mysqli_error($con)

程序风格

string mysqli_error ( mysqli $link )
Run Code Online (Sandbox Code Playgroud)

关于密码

我注意到您可能以纯文本格式存储密码.

  • 这不是推荐的,是一种不安全的方法.

使用以下之一:

其他链接:


旁注:您现在的代码对SQL注入开放.mysqli与准备好的陈述一起使用,或PDO与准备好的陈述一起使用,它们更安全.


编辑:

"有人知道如何在用户登录后使登录表单消失吗?"

奖金回答:

您可以使用重定向到另一个页面header().

但是,您已经使用了输出,<header id="page_header">因此您需要将其放在当前PHP代码下面.否则,它将抛出已发送标头的警告.使用ob_start();有时可行,但并非总是如此.

你现在的位置:

if ($count == 1){

$_SESSION['username'] = $username;

}
Run Code Online (Sandbox Code Playgroud)

添加标题和退出:

if ($count == 1){

$_SESSION['username'] = $username;

    header("Location: http://www.example.com");
    exit;

}
Run Code Online (Sandbox Code Playgroud)

或者,exit;如果您不想重定向,则可以使用.

  • 恕我直言,这应该是公认的答案. (3认同)
  • @ʰᵈˑ你赢了一些,你输了一些,*你能做什么*.谢谢.至少它将为未来的访问者提供问题.Stack的档案中的额外内容*欢呼* (2认同)