刷新后无法访问PHP会话变量
我发现这个代码有一个逻辑问题:刷新后无法访问PHP会话变量,php,session,cookies,login,Php,Session,Cookies,Login,我发现这个代码有一个逻辑问题: <?php if(isset($_POST['submit'])) { if($_POST['username'] != "" && $_POST['password'] != "") { $_SESSION["user"] = new User(); $_SESSION["user"]->login($_POST['username'], $_POST['password']); } }
<?php
if(isset($_POST['submit'])) {
if($_POST['username'] != "" && $_POST['password'] != "") {
$_SESSION["user"] = new User();
$_SESSION["user"]->login($_POST['username'], $_POST['password']);
}
}
?>
但是刷新页面后,会话为空。
有人知道为什么会话可能是空的吗?登录功能工作正常(在每次重新加载页面时使用固定的登录数据对其进行测试)
提前谢谢 您可能忘了启动会话, 加
在使用任何会话变量之前。必须使用
Session\u start()
在每个文件的第一个位置,您要在其中访问$\u会话
变量。否则它将无法工作,因为PHP不会初始化会话本身
你应该这样写:
<?php
session_start();
//your code ;)
?>
如果要在会话中存储对象,则在调用会话_start()之前,需要确保该类已定义(或在自动加载程序中可用),否则PHP将无法反序列化该对象
有关更多信息,请参阅。您是否在任何地方使用会话\u start
呢?我想您不会忘记这一行:/您的登录表单是什么样子的?Benutzername Passwort
这是我的登录表单。您可以尝试删除第二行吗关闭第2行中第一个if语句的括号并再次测试?这不是真的:包含的文件不需要自己的会话_start()。对于每个请求,在开始时需要一个会话\u start()。我没有忘记这一行,它在文档的顶部。可能代码中的某个地方正在销毁会话,请调试它。已经查找了会话\u destroy(),但我从未使用过它。您能将打印($\u session)
放在会话\u start()的正下方吗代码>并在最后验证代码中的所有内容是否都正常
<?php
session_start();
//your code ;)
?>