2012-09-07 35 views
-4

我有我的设置,如会话代码:PHP:Session是不工作的父目录

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

你**只是**问这个。 – David

+0

你建议我使用会话我使用,现在我通过文档,我发现session_set_cookie_params(24 * 60 * 1,'/','。localhost'); 但它仍然不适用于我 – user1654711

+0

@ user1654711 - 如果您之前的回答有问题,则此处的正常程序是使用所需的任何额外信息更新原始问题,而不是询问新问题。 – SDC

回答

2

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

Cookie默认限制为当前文件夹,因此它不适用于父文件夹。

如果你想让它适用于整个网站,你需要指定在cookie中/,像这样:

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

这将设置在整个网站上的Cookie,所以您的代码应工作。

但是,我不明白为什么你不只是在这里使用会话;为什么Cookie和会话在同一个环境中?你也可以设置会话中的所有内容并完成它。 (反正会话都是cookie)

+0

是的,它的工作现在谢谢,我会删除cookie感谢您的建议也 – user1654711