处理会话和cookie不同的文件夹


PHP Handling sessions and cookies different folder

我遇到了一个问题。我创建了一个web应用程序,在那里的人登录和许多$_SESSION[…]]是设置好的。我发现奇怪的一点是,如果我登录在文件夹http://demo.site.com/,我登录在http://webapp2.site.com我得到的会话数据混合在两个web应用程序…

这是checkentry.php中的代码(在将其发送到主页之前检查该人是否登录):

<?php
session_start();
    if(isset($_SESSION['autenticated']) && $_SESSION['autenticated'] == TRUE && isset($_COOKIE["login"]) && $_COOKIE["login"] == $_SESSION['ssnid']){
        if (!isset($_SERVER['HTTPS']) ){
            //header('Location: https://'.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"].'');
        }   
        return true;
    }else{
        require_once("config.php");
        $logout_connect = mysql_connect($db_host, $db_user, $db_pass);
        if (!$logout_connect){
            die('Impossibile connettersi: ' . mysql_error());
        }else{
            mysql_select_db($db_name, $logout_connect);
            mysql_query("DELETE FROM sessions WHERE ssnid = '".$_SESSION['ssnid']."' AND userid = '".$_SESSION['userid']."'");
            setcookie("login", "", time()-3600);
        }
        session_destroy();
        header("location: login.php?requested");
    }
?>

所以问题是,如果我登录在两个web应用程序(在同一域有许多web应用程序在不同的文件夹),我得到$_Session数据混合。

[编辑]当我从app1.site.com注销时,我也从app2.site.com注销了。

我做错了什么,如何解决它?

Tku

您可以为所有会话变量使用pretitle,并在每个web应用程序中更改pretitle。

APP1

$pre = "app1";
if(isset($_SESSION[$pre.'autenticated']) && $_SESSION[$pre.'autenticated'] == TRUE) {}

APP2

$pre = "app2";
if(isset($_SESSION[$pre.'autenticated']) && $_SESSION[$pre.'autenticated'] == TRUE) {}

$pre可以在config.php中定义