Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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_Mysqli - Fatal编程技术网

Php “我的登录页面不断返回”;“登录不正确”;即使我输入了正确的登录名

Php “我的登录页面不断返回”;“登录不正确”;即使我输入了正确的登录名,php,mysql,mysqli,Php,Mysql,Mysqli,我编写了一个连接到mySQL数据库的简单登录页面但即使我尝试输入正确的登录信息,它仍会返回“不正确的用户名或密码”错误。我无法确定我的代码本身或数据库是否有问题。任何帮助都将不胜感激 我的数据库如下所示: 我目前在该数据库中有2个条目用于测试: 我的index.php代码如下 <?php include('login.php'); // Include Login Script if ((isset($_SESSION['username']) != '')) { header('Loc

我编写了一个连接到mySQL数据库的简单登录页面但即使我尝试输入正确的登录信息,它仍会返回“不正确的用户名或密码”错误。我无法确定我的代码本身或数据库是否有问题。任何帮助都将不胜感激

我的数据库如下所示:

我目前在该数据库中有2个条目用于测试:

我的index.php代码如下

<?php
include('login.php'); // Include Login Script
if ((isset($_SESSION['username']) != '')) 
{
header('Location: home.php');
}
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>PHP Login Form with Session</title>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>

<body>
<h1>PHP Login Form with Session</h1>
<div class="loginBox">
<h3>Login Form</h3>
<br><br>
<form method="post" action="">
<label>Username:</label><br>
<input type="text" name="username" placeholder="username" /><br><br>
<label>Password:</label><br>
<input type="password" name="password" placeholder="password" />  <br><br>
<input type="submit" name="submit" value="Login" /> 
</form>
<div class="error"><?php echo $error;?></div>
</div>
</body>
</html>

带有会话的PHP登录表单
带有会话的PHP登录表单
登录表单


用户名:


密码:


我的login.php代码如下:

<?php
session_start();
include("connection.php"); //Establishing connection with our database

$error = ""; //Variable for storing our errors.
if(isset($_POST["submit"]))
{
if(empty($_POST["username"]) || empty($_POST["password"]))
{
$error = "Both fields are required.";
}else
{
// Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];

//Check username and password from database
$sql="SELECT uid FROM users WHERE username='$username' and password='$password'";
$result=mysqli_query($db,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);

//If username and password exist in our database then create a session.
//Otherwise echo error.

if(mysqli_num_rows($result) == 1)
{
$_SESSION['username'] = $login_user; // Initializing Session
header("location: home.php"); // Redirecting To Other Page
}else
{
$error = "Incorrect username or password.";
}

}
}

?>

1-以纯文本保存是不行的。 2-据我所知,您正在将纯文本密码与其md5进行比较。
您还多次使用不同的值定义了相同的变量,这是我以前从未见过的。

好吧,在login.php页面的代码中,我看不到在哪里为$login\u用户分配了值。 试一试

也可以将其替换为index.php页面顶部的内容

<?php
include('login.php'); // Include Login Script
if (isset($_SESSION['username'])){
header('Location: home.php');
}
else{}
?>

首先,既然您的登录脚本位于项目目录中的另一个文件中,您不应该在登录表单上指定脚本的位置吗?就这样

<form method="post" action="login.php">
      <label>Username:</label><br>
      <input type="text" name="username" placeholder="username" /><br><br>
      <label>Password:</label><br>
      <input type="password" name="password" placeholder="password" />  <br><br>
      <input type="submit" name="submit" value="Login" /> 
    </form>

用户名:


密码:



谢谢您的帮助。我删除了将密码转换为md5的代码部分。请您详细说明我不止一次定义了哪些变量?您编辑了这些变量,无论是哪种方式,请尝试使用require_一次,而不是include。警告:编写您自己的访问控制层并不容易,而且有很多可能会犯严重错误。请不要编写您自己的身份验证系统,因为任何现代的同类产品都具有强大的内置功能。至少要遵循并且永远不要将密码存储为纯文本。警告:当使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。注意:
mysqli
的面向对象界面明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的
mysql\u查询
接口混淆。在你对程序性风格投入太多之前,值得换一种。示例:
$db=newmysqli(…)
$db->prepare(“…”)
正如上面的注释所提到的,此代码非常容易受到SQL注入的影响。研究PDO参数化查询。是一本很棒的入门书。此外,O'Reilly的一本书《现代PHP》介绍了一种创建登录页面的现代、安全的方法。如果你正在构建一个可以在互联网上使用的应用程序,我强烈建议你购买并阅读它。事实上,这段代码很容易受到攻击,这让我需要喝杯啤酒:)我以前写过这样的代码,不用担心,但一定要花时间学习正确的方法。谢谢你的帮助,我做了你推荐的所有更改,但仍然无法成功登录。你还有什么建议吗?
<form method="post" action="login.php">
      <label>Username:</label><br>
      <input type="text" name="username" placeholder="username" /><br><br>
      <label>Password:</label><br>
      <input type="password" name="password" placeholder="password" />  <br><br>
      <input type="submit" name="submit" value="Login" /> 
    </form>