我有用于设置会话的代码,如:
if($found>0){
session_start();
$_SESSION['user_name']=$user;
session_set_cookie_params(24*60*1,'/','.localhost');
$expire=time()+60*60*24;
setcookie("cookiename", $user, $expire);
header("location:http://localhost/UI/user/userprofile.php");
} else{
$message = "Username or password is not correct.";
header("Location:index.php?message={$message}");
}
这是我的标题内容,我将登录和注销
session_start();
if (isset($_COOKIE["cookiename"])){
$unm = $_SESSION["user_name"];
echo "User : " . $_SESSION["user_name"] . "";
echo " <a href='http://localhost/UI/user/logout.php'>logout</a>";
echo " <a class='addmeeting' href='http://localhost/UI/user/createmeeting.php' title='Create New Meeting'>Create Meeting</a>";
} else{
echo "<li><a href='register.php'>Register</a></li>";
echo " User : Guest!<br />";
}
我的会话正在处理子文件夹,但它不适用于父文件夹。 这是目录结构:
UI
user
userprofile.php
login.php
logout.php
index.php
headers.php
请告诉我我做错了什么?
答案 0 :(得分:2)
我的猜测是,它的cookie不起作用,而不是会话(您的会话代码位于if()
块中,首先检查cookie。
Cookie默认仅限于当前文件夹,因此不会应用于父文件夹。
如果您希望它应用于整个网站,您需要在Cookie中指定/
,如下所示:
setcookie("cookiename", $user, $expire, '/');
这会在整个网站上设置Cookie,因此您的代码应该有效。
但是,我真的不明白为什么你不仅仅是在这里使用会话;为什么在相同的上下文中有cookie和会话?您也可以设置会话中的所有内容并完成它。 (无论如何,会话都是基于cookie的)