-4

我有设置会话的代码,例如:

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

请告诉我我做错了什么?

4

1 回答 1

2

我的猜测是 cookie 不起作用,而不是会话(您的会话代码位于if()首先检查 cookie 的块内)。

Cookie 默认仅限于当前文件夹,因此不会应用于父文件夹。

如果您希望它应用于整个站点,则需要/在 cookie 中指定 a,如下所示:

setcookie("cookiename", $user, $expire, '/');

这将在您的整个站点中设置 cookie,因此您的代码应该可以工作。

但是,我真的不明白为什么您不只是在这里使用会话;为什么 cookie 和会话在同一个上下文中?您也可以在会话中设置所有内容并完成它。(无论如何,会话都是基于 cookie)

于 2012-09-07T14:43:31.157 回答