Php 如果登录表单所在的位置是索引页,如何在索引页上启动会话?

Php 如果登录表单所在的位置是索引页,如何在索引页上启动会话?,php,session,login,Php,Session,Login,加载index.php时,没有启动任何会话。有一个使用我创建的登录类的登录表单,当用户成功登录时,他将返回index.php,此时会话应该开始 我需要做什么才能确保会话仅在成功登录时才在索引页上启动?会话和身份验证不是同义词。您可以在不记录会话的情况下启动会话。您可以设置特定于会话的变量并检查它以确定用户是否已登录 只要在页面顶部启动会话,无论用户是否登录。不要担心会话\u start()它不会设置任何会话,只会启动会话。所以您仍然可以将会话_start()放在文件的顶部 当您运行登录sql查询

加载index.php时,没有启动任何会话。有一个使用我创建的登录类的登录表单,当用户成功登录时,他将返回index.php,此时会话应该开始


我需要做什么才能确保会话仅在成功登录时才在索引页上启动?

会话和身份验证不是同义词。您可以在不记录会话的情况下启动会话。您可以设置特定于会话的变量并检查它以确定用户是否已登录


只要在页面顶部启动会话,无论用户是否登录。

不要担心会话\u start()它不会设置任何会话,只会启动会话。所以您仍然可以将会话_start()放在文件的顶部

当您运行登录sql查询并检查结果是否成功时,设置会话相当简单。如果条件为如果登录成功,则设置会话,如下所示

if(sussessful_login) {
   $_SESSION['yoursessionname'] =  'value';
}
<?php

session_start(); // ALWAYS start a session, regardless

if(!isset($_SESSION['logged_in'])) {
   ... not login sentinel set, redirect to login page ...
}
... proceed onwards

你把自己置于第二十二条军规的境地。登录成功将存储在会话中,因此您必须启动会话以检查用户是否登录

你会想要更像这样的

if(sussessful_login) {
   $_SESSION['yoursessionname'] =  'value';
}
<?php

session_start(); // ALWAYS start a session, regardless

if(!isset($_SESSION['logged_in'])) {
   ... not login sentinel set, redirect to login page ...
}
... proceed onwards

你好,诺乔鲁。尝试在重定向到index.php之前启动会话,在检查登录是否成功之后,这就是我所拥有的。