繁体   English   中英

PHP登录检查用户名和密码不起作用

[英]PHP login check username and password code doesn't work

我正在尝试学习PHP和MySQL,我想创建一个登录页面,该页面将检查数据库中的信息,并在信息正确时让用户通过。

我有以下PHP代码:

    if(isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $sql = "SELECT * FROM users WHERE username ='".$username."' AND password='".$password."' LIMIT 1";
        $res = mysqli_query($sql);
        if(mysqli_num_rows($res) == 1 ) {
            echo "You have successfully logged in.";
        } else {
            echo "Invalid login information."; 
        }
    } else {
        echo "Not working.";
    }

在我的主文件中,我有2个include。 一个是连接,另一个是此php文件。 在同一个文件(主文件)中,我有一个带有3个输入字段的表单:用户名,密码和提交类型。

问题是当我包含上述php文件时,页面显示为空白,并且我什么也收不到,甚至没有“ Not working”字符串。 这是为什么? 我的语法有什么不好?

更新:

我的主要文件代码:

<?php

    include 'includes/connection.php';
    include 'includes/login.php';

?>


<html>
<head>
    <title>Login</title>
    <link rel="stylesheet" href="css/login_page.css">
</head>
<body>
    <div class="flex">
        <div class="container">
            <h3>Login to the site...</h3>
            <p>The awesome site we created!</p>
            <form method="post" action="login.php">
                <input type="text" name="username" placeholder="Username">
                <input type="password" name="password" placeholder="Password"><br /><br />
                <input type="submit" name="submit" class="btn-submit" value="Login">
            </form>
        </div>
    </div>
</body>
</html>

连接PHP文件:

<?php

$server = "localhost";
$user = "Flopet17";
$pass = "1234";
$db = "listing";


$conn = new mysqli($server, $user, $pass);
mysqli_select_db($db);


if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connection succeed";
?> 

该行需要使用分号

echo "Invalid login information.";

小费

还要看一下mysqli并为数据库连接准备语句并构造save sql语句。

您正在查询变量$res而应查询值$sql
将以下代码更改为:

$sql = "SELECT * FROM users WHERE username ='".$username."' AND password='".$password."' LIMIT 1";
$res = mysql_query($sql);

另外,您缺少分号,如@Barry在回答中所说

<?php

$server = "localhost";
$user = "Flopet17";
$pass = "1234";
$db = "listing";


//$conn = new mysqli($server, $user, $pass);
//mysql_select_db($db);//Invalid with my sql
$conn = new mysqli($server, $user, $pass,$db);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connection succeed";
?> 

从表单中删除动作属性。 动作将在同一页面上。 如果必须在另一个页面上创建操作,则应该在其中包含数据库连接。

在查询部分:

 if(isset($_POST['submit'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];

        $sql = "SELECT * FROM users WHERE username ='".$username."' AND password='".$password."' LIMIT 1";
       // $res = mysqli_query($sql);
        $res = $conn->query($sql);
        if($conn->num_rows($res) == 1 ) {
            echo "You have successfully logged in.";
        } else {
            echo "Invalid login information."; 
        }
    } else {
        echo "Not working.";
    }

您有错误报告吗? 这将显示任何错误或注意到回帖用户名,这将使您检查表单是否可以正常发布

$connect = mysql_pconnect($hostname, $username, $password) or
trigger_error(mysql_error(),E_USER_ERROR);

mysql_select_db($database, $connect;
$query_Recordset1 = "SELECT * FROM users WHERE users.username=$username ORDER BY
user.username LIMIT 1";
//
$Recordset1 = mysql_query($query_Recordset1, $connect) or die();
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
$password_check=$row_Recordset1['password'];
if ($password_check==$password){echo"log in ok":}else{ what to do if fail

但是,这种非常不安全的示例以http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL为例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM