Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 登录错误密码和用户名组合 登录 用户名: 密码:_Php_Mysql - Fatal编程技术网

Php 登录错误密码和用户名组合 登录 用户名: 密码:

Php 登录错误密码和用户名组合 登录 用户名: 密码:,php,mysql,Php,Mysql,大家好,这是我用PHP登录的页面。除了登录之外,它还允许使用不同的密码。根据代码设置,它将检查两个密码是否匹配,如果不匹配,它将显示一个错误 即使两个密码不匹配,此密码也不会显示错误。为什么它允许用户使用错误的密码登录 当密码不匹配时,我希望它显示一个错误,作为回报,由于凭据错误,不允许登录。您没有正确使用mysql\u real\u escape\u string。您应该使用mysqli\u real\u escape\u string或使用mysql\u connect连接到mysql 如果

大家好,这是我用PHP登录的页面。除了登录之外,它还允许使用不同的密码。根据代码设置,它将检查两个密码是否匹配,如果不匹配,它将显示一个错误

即使两个密码不匹配,此密码也不会显示错误。为什么它允许用户使用错误的密码登录


当密码不匹配时,我希望它显示一个错误,作为回报,由于凭据错误,不允许登录。

您没有正确使用
mysql\u real\u escape\u string
。您应该使用
mysqli\u real\u escape\u string
或使用
mysql\u connect
连接到mysql

如果使用
mysql\u-real\u-escape\u-string
,则会自动假定使用
mysql\u-connect
,但您使用的是
mysqli\u-connect
,这就是它找不到任何连接的原因

从pph网站上可以看到:

MySQL连接。如果未指定链接标识符,则假定由
mysql\u connect()
打开的最后一个链接。如果没有找到这样的链接,它将尝试创建一个链接,就像调用了没有参数的
mysql\u connect()
一样。如果未找到或建立任何连接,将生成
E_警告
级别错误

参考:

试着改变

<?php
session_start();

$db =mysqli_connect("localhost", "root", "","registration" );
if (isset($_POST['login_btn'])){
    $username = mysql_real_escape_string($_POST ['username']);
    $password = mysql_real_escape_string($_POST ['password']);

    $password= md5($password);
    $sql = "SELECT * FROM users WHERE username= '$username' AND password= '$password'";
    $result = mysqli_query($db, $sql);
if(mysqli_num_rows($result) == 1 ){
$_SESSION['message']= "You are now logged in";
$_SESSION['username'] = $username;

header("Location: home.php");
}else{
    $_SESSION['message'] = "Username and  password combination is incorrect";
}

}
?>

<html>
<head>

</head>
<body>
<div class="header"> <h1>login</h1></div>

<?php
if (isset($_SESSION['message'])){
    echo "<div id = 'error_msg>".$_SESSION['message']."</div>";
    unset($_SESSION['message']);
}
?>

<form method="post" name="loginform" action="login.php">
    <table>
        <tr>
            <td> Username:</td>
            <td><input type = "text" name="username" placeholder="Username" class="textInput"  required></td>
        </tr>

        <tr>
            <td> Password:</td>
            <td><input type = "password" placeholder="Password"  name="password" class="textInput" required></td>
        </tr>

        <tr>
            <td></td>
            <td><input type = "submit" name="login_btn" value="Login"></td>
        </tr>
    </table>
</form>
</body>

</html>


请不要像这样存储或使用密码()我已经测试了代码和
$username=mysql\u real\u escape\u字符串($\u POST['username'])
不返回任何内容。
mysql\u real\u escape\u string
mysqli\u real\u escape\u string
都不应再使用。我同意,但我的答案与问题有关。你同意不做你建议做的事吗?基本上不要使用遗留方法,php或任何我不断发展的语言,你必须跟上。
 $username = mysql_real_escape_string($_POST ['username']);
 $password = mysql_real_escape_string($_POST ['password']);
$username = mysqli_real_escape_string($db, $_POST ['username']);
$password = mysqli_real_escape_string($db, $_POST ['password']);