这是我要做的最后一件事,我将正式创建我的第一个PHP注册/登录系统。
我所拥有的是一个名为checksession.php的文件。此文件检查用户是否已登录/是否已创建会话。如果用户这样做,则应该让他们查看他们的帐户页面。如果不是,它应该将它们发送到index.php。
就目前而言,即使在成功登录后,它也会将用户发送回index.php。我不确定我在这个脚本中做错了什么。
checksession.php
<?php
include('includes/db.php');
session_start();
$userSession = $_SESSION['username'];
$sql = mysqli_query($db, "SELECT emailAddress FROM users WHERE emailAddress='$username' ");
$row=mysqli_fetch_array($sql,MYSQLI_ASSOC);
$login_user=$row['emailAddress'];
if(!isset($userSession )) {
header("Location: index.php");
}
?>
用户名是在登录登录表单login.php时引用他们填写的用户名字段。
在他们的帐户页面上,在这种情况下是account.php,我有以下内容:
<?php
include("includes/checksession.php");
?>
这应该重定向到index.php还是应该根据他们输入的用户名设置会话?我确实确定了start_session();在我的login.php页面上。
答案 0 :(得分:1)
确保其session_start();在我的login.php页面上没有start_session();
尝试回显$ userSession和$ _SESSION ['username']以查看他们实际持有的内容
以这种方式尝试语句
if(isset($_SESSION['username'])) {
//do what ever
}else{
header("Location: index.php");
}
答案 1 :(得分:0)
将始终设置Variable $ userSession,它可能为null或空字符串,但它将始终从您的代码中设置。
将支票更改为:
if(!isset($_SESSION['username'])) {
header("Location: index.php");
}
答案 2 :(得分:0)
确定
我不知道这是否是最好的方法,因为我认为我可能会使这个问题变得复杂但是我们走了:
我接受了check.php代码并将其放入我的登录代码中以设置SESSION。
正下方我有以下代码:
if(mysqli_num_rows($result) == 1) {
$_SESSION['username'] = $login_user; // Initializing Session
header("location: account.php"); // Redirecting To Other Page
} else {...
登录并瞧。我被带到我的account.php,就像我期望的那样。如果我退出然后尝试查看account.php,我会被反弹回index.php。