使用PHP和MySQL登录会话

3

我刚刚用PHP创建了一个完整的登录和注册系统,但我的问题是我还没有使用任何会话。我是PHP方面的新手,以前从未使用过会话。希望用会话登录,并且如果代码存在错误,则无法进入仪表板页面,请帮助我解决这个问题。

<?php
session_start();
error_reporting(0);
include('config.php');
if(isset($_POST['submit']))
{
$result = mysqli_query($dbh,"SELECT * FROM users WHERE email='" . $_POST["email"] . "' and password = '". $_POST["password"]."'");
$row  = mysqli_fetch_array($result);
if(is_array($row)) {
$_SESSION["id"] = $row[id];
$_SESSION["username"] = $row[username];
} else {
$message = "Invalid Email or Password!";
}
}
if(isset($_SESSION["id"])) {
header("Location:dashboard.php");
}
?>

希望能够使用会话登录,但代码中存在错误,无法进入仪表板页面,请帮助我解决此问题。


1
你在面对什么错误? - Zain Farooq
没有出现错误,但ts文件并未跳转到仪表板页面。 - Krishnan R
顺便提一下,您在这里 $row[id]; 和这里 $row[username]; 漏掉了单引号。 - Zain Farooq
1
它们应该看起来像 $row['id'];$row['username']; - Zain Farooq
我已保存但没有变化。 - Krishnan R
显示剩余12条评论
2个回答

1
 <input type="password" name="pass" class="form-control" placeholder="Password">

"

pass应该改为password。我的意思是你的前端html与php不一致。请使用以下内容替换:

"
 <input type="password" name="password" class="form-control" placeholder="Password">

两者不同。 - Krishnan R
这个能解决你的问题吗...https://www.w3schools.com/php/func_mysqli_fetch_array.asp - Pradeep Singh
请勿使用"Select * ....",而是使用"Select id,username, email, password from ..."。这可以确认字段的顺序,以防您使用索引。此外,如果您可以访问本地主机中的phpMyAdmin,请尝试在那里执行以下示例查询:"Select * from users;"。因为很难猜测您知道什么和不知道什么,所以很难找到确切的问题所在。 - Pradeep Singh

1
你正在将constants传递给数组$row的索引。请更改您的代码,从这个状态开始。
$_SESSION["id"] = $row[id];
$_SESSION["username"] = $row[username];

To this

$_SESSION["id"] = $row['id'];
$_SESSION["username"] = $row['username'];

你的代码很容易受到SQL注入攻击。我建议你使用预处理语句,因为你是新手,所以最好把精力放在正确的方向上。


好的,请查看错误日志并告诉我们您遇到了什么错误。 - Zain Farooq
$row = mysqli_fetch_array($result); 后面加上这段代码 print_r($row);die(); 并在此处展示结果。 - Zain Farooq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接