当我加载 index.php 时,没有启动会话。有一个使用我创建的登录类的登录表单,当用户成功登录后,他被带回 index.php,此时会话应该开始。
我需要做些什么来确保会话仅在成功登录时才在索引页面上启动?
会话和身份验证不是同义词。您可以在不记录的情况下启动会话。您可以设置会话特定变量并检查它以确定用户是否已登录。
只需在页面顶部启动会话,无论用户是否登录。
不要担心 session_start() 它不会设置任何会话它只会启动会话。所以你仍然可以把 session_start() 放在文件的顶部
当您运行登录 sql 查询并检查成功的结果时,设置会话相当简单,如果登录成功则设置会话,如下所示
if(sussessful_login) {
$_SESSION['yoursessionname'] = 'value';
}
您将自己置于第 22 条问题的境地。登录成功将存储在会话中,因此您必须启动会话以检查用户是否已登录。
你会想要更多这样的东西
<?php
session_start(); // ALWAYS start a session, regardless
if(!isset($_SESSION['logged_in'])) {
... not login sentinel set, redirect to login page ...
}
... proceed onwards