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

时间:2015-04-15 15:14:06

标签: php

我创建了一个登录名,以便用户可以登录网站,我使用php和phphmyadmin来创建登录,我使用相同的代码进行我正在做的另一个项目,它运行良好,但它赢得了#39;现在工作,似乎不喜欢第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>

3 个答案:

答案 0 :(得分:5)

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

mysqli_error($con)

程序风格

string mysqli_error ( mysqli $link )

关于密码

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

  • 不建议使用,这是一种不安全的方法。

使用以下其中一项:

其他链接:


旁注:您目前的代码向SQL injection开放。使用mysqli with prepared statementsPDO with prepared statements他们更安全


修改

  

&#34;有人知道如何在用户登录后使登录表单消失吗?&#34;

奖励回答:

您可以使用header()重定向到其他页面。

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

你现在的位置:

if ($count == 1){

$_SESSION['username'] = $username;

}

添加标题和退出:

if ($count == 1){

$_SESSION['username'] = $username;

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

}

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

答案 1 :(得分:1)

你需要将连接参数传递给mysqli_error(),如下所示:

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

此外,您还没有从$ _POST清理外国数据。您很容易受到SQL注入攻击。

答案 2 :(得分:0)

您需要为mysqli_error()提供参数:

mysqli_error(connection);

见这里:http://www.w3schools.com/php/func_mysqli_error.asp