Php “我的登录页面不断返回”;“登录不正确”;即使我输入了正确的登录名
我编写了一个连接到mySQL数据库的简单登录页面但即使我尝试输入正确的登录信息,它仍会返回“不正确的用户名或密码”错误。我无法确定我的代码本身或数据库是否有问题。任何帮助都将不胜感激 我的数据库如下所示: 我目前在该数据库中有2个条目用于测试: 我的index.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
<?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>