我遇到了一个问题。我创建了一个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中定义