我有问题。我创建了一个网络应用程序,该人登录并设置了许多 $_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