我有一个使用session_start()
启动会话的PHP代码。好吧,在用户登录后,将被带到profile.php,其中显示了该用户信息。但是当用户重新加载页面时,会话就消失了。有什么办法可以让我维持一个小时吗?我尝试过cookie,但我不知道怎么告诉PHP会话已经启动了。谢谢!
Cookie和会话开始的Profile.php代码:
if(isset($HTTP_COOKIE_VARS['session'])){
session_start();
} else {
header('Location: index.php');
}
登录代码:
session_start();
$_SESSION['pass'] = $password;
header('Location: ../profile.php');
setcookie("session","1",time()+3600,"/");
检查会话的代码:
if($_SESSION['pass'] == $tableArray[0]['password']) {
$username = $tableArray[0]['name'];
$avatar = $tableArray[0]['avatar'];
} else {
header('Location: index.php');
}
我在这里调用了session_destroy():
<li><a href=<?php session_destroy(); echo "index.php"?>>Logout</a></li>
忘了PHP在HTML之前运行:P就是问题!
答案 0 :(得分:3)
答案 1 :(得分:1)
从技术上讲,我找到了解决方案。
已经指定了一项更改保存路径字符串,否则会更改存储会话的目录的权限。
我这样做对我有用。
如果您的会话存储在会话目录中,请执行以下操作:
chmod 777 session/
答案 2 :(得分:0)
我怀疑您没有在session_start()
上再次致电profile.php
。
您必须在将访问会话数据的每个脚本上调用session_start()
。
代码发布后更新
而不是检查是否存在会话cookie,而是执行以下操作:
// Start the session first
session_start();
if (isset($_SESSION['username'])) {
// user is already logged in
} else {
header('Location: index.php');
}
答案 3 :(得分:0)
尝试将session.use_cookies
设置为开启(在php.ini / .htaccess中)
答案 4 :(得分:0)
您必须在需要了解会话数据的每个脚本的顶部说session_start()
。
会话cookie实际上不是你关注的问题,你应该考虑一个“实现细节”。 (在浏览器退出之前,cookie通常会存在于用户的浏览器中。)