为什么$_SESSION不是唯一的并且看起来是重复的


why $_SESSION not unique and looks duplicated

我在我的网站上创建了两个不同的目录,如下

my_site.com/boo

my_site.com/koo

我已经上传了以下两个测试脚本(3个文件)

1.php//输入表单

<?PHP
session_start();
echo $_SESSION['msg'];
unset($_SESSION['msg']);
?>
<form method="post" action="2.php">
<input name="loginid" type="text" id="loginid">
<input type="Submit" name="Submit" value="Login"/>
</form>

2.php//检查登录是否正确(将我发送到3.php)如果不正确,则返回1.php

<?PHP
session_start();
$loginid=$_POST['loginid'];
if ($loginid="okay") {
$_SESSION['loginid'] = "logged";
header("Location: 3.php ");
exit;
} else {
$_SESSION['msg'] = "Wrong";
header("Location: 1.php ");
exit;
}
?>

3.php//如果记录正确,它应该向管理员发出Hello。

<?PHP
session_start();
if ($_SESSION['loginid']) {
echo "Hello To Admin";
} else {
$_SESSION['msg'] = "Please Login";
header("Location: 1.php ");
exit;
}
?>

现在我的问题

如果我转到my_site.com/boo/1.php并正确登录然后一旦我转到my_site.com/koo/3.php,它就会给我消息Hello to admin,就好像我已经登录了一样,这意味着如果我在网站上的两个不同目录上使用相同的php骨架有两个不同的脚本,那么我就可以同时登录到这两个目录!!为什么不是独一无二的。

这会伤害我,就好像我的网站上有相同的脚本和不同的目录,我真的不想访问所有的:)

我有一个主意,但不确定是否正确,所以请给我建议。

我将添加检查文件(2.php)随机代码

<?PHP
session_start();
$loginid=$_POST['loginid'];
if ($loginid="okay") {
$random = rand(1, 1000000);
$_SESSION['loginid'] = "".$random.""; // random
header("Location: 3.php ");
exit;
} else {
$_SESSION['msg'] = "Wrong";
header("Location: 1.php ");
exit;
}
?>

所以有什么帮助吗~感谢

会话不限于目录或文件,它是共享来自同一用户的数据的一种方式。。。它意味着以这种方式工作

会话ID使用cookie发送。

Cookie是基于域名的,因为您的网站位于同一个域,所以它们也共享PHPSSID Cookie。

启动会话时,请尝试首先使用命名http://us.php.net/manual/en/function.session-name.php

阅读此了解更多信息:

http://php.net/manual/en/session.security.php

您可以使用session_name()。这将使$_SESSION变量连接到会话名称,而不是全局会话上下文。

文件:http://se.php.net/manual/en/function.session-name.php

第1页:

session_name('first_page');
session_start();
$_SESSION['hello'] = "hi";

第2页:

session_name('second_page');
session_start();
// will generate false
var_dump(isset($_SESSION['hello']));

使用session_name()创建唯一会话:

/koo:

session_name('koo');
session_start();

/foo:

session_name('foo');
session_start();