PHP 会话系统脚本重新加载页面而不显示消息



我对PHP完全陌生。我正在构建一个带有会话的 PHP 登录系统。这个想法是用户输入他们的用户名和密码。然后,它们被重定向到锁定的页面,该页面链接到其他锁定的页面。锁定的页面有一个脚本,用于检查会话是否已启动。否则,用户将被重定向到登录页面。我面临的问题是系统基本上无法正常工作 - 没有错误,没有警报消息,我出于调试目的而放置,没有任何迹象表明脚本正在运行。唯一可以考虑的是登录表单刷新页面,但我仍然希望在代码执行后看到一个警告框。

这是我的登录脚本(索引.php)(完全不是从随机教程站点复制粘贴的)(实时网址: http://daaseed.com/Player/):

<form action="" method="post">
<input type="text" name="username" placeholder="Enter your username" required>
<input type="password" name="password" placeholder="Enter your password" required>
<input type="submit" value="Submit"> </form>
<?php
// Always start this first
session_start();
if ( ! empty( $_POST ) ) {
if ( isset( $_POST['username'] ) && isset( $_POST['password'] ) ) {
// Getting submitted user data from database
$con = new mysqli("sfconsul.dot5hostingmysql.com ", "Nasko", "Nasko", "Nasko");
$stmt = $con->prepare("SELECT * FROM Nasko WHERE username = ?");
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
$result = $stmt->get_result();
$user = $result->fetch_object();
// Verify user password and set $_SESSION
if ( password_verify( $_POST['password'], $user->password ) ) {

$_SESSION['user_id'] = $user->ID;
}

if ($con->connect_error) {
die("Connection failed: " . $con->connect_error);
}
alert("Hello World");
}
}
?>

这是检查会话是否设置的验证代码:

<?php
// You'd put this code at the top of any "protected" page you create
// Always start this first
session_start();
if ( isset( $_SESSION['user_id'] ) ) {
// Grab user data from the database using the user_id
// Let them access the "logged in only" pages
alert("Done");
} else {
// Redirect them to the login page
header("Location: http://daaseed.com/Player/");
}

这是输入数据并按下按钮后登录页面的屏幕截图

锁定的页面显示内容而不检查会话(基于我的意见,因为没有显示警报框)。

如您所见,代码存在一些问题,我找不到解决方案。如何使上面的代码成功工作?

编辑 b/c 我没有看到session_start()电话:

问题可能出在$stmt的参数绑定或fetch_object()上。您可能想改为执行fetch_assoc_array(),然后引用$user['password']。您可以尝试一下,或者以其他方式回显get_result()对象并让我们知道它是什么?

最新更新