PHP会话登录在同一服务器上的站点之间交叉

Eri*_*rty 5 php session cross-domain

我有多个站点的 CentOS LAMP。我使用 PHP 会话变量登录到网站。我的问题是,如果您登录一个站点,您可以在同一台服务器上打开另一个站点,然后您就会登录。这些站点是完全独立的,因此我希望它们必须分别登录。每个站点都有不同的用户数据库。

这是我在登录时填充的会话变量。

$_SESSION["username"] = "$username";
$_SESSION["user_id"] = "$user_id";
$_SESSION["act_type"] = "$act_type";
Run Code Online (Sandbox Code Playgroud)

我创建了一个小示例,以便您可以重新创建问题

有 2 个独立的站点:/var/www/html/site1 /var/www/html/site2

每个站点有 2 个页面 index.php、secure.php 如果我登录一个页面,我可以打开另一个站点上的 secure.php。

/var/www/html/site1/index.php

<?php

session_start();

$user = 'jane';
$pass  = '654321';

if ( $user == $_POST[user] AND $pass == $_POST[pass] ) {

    $_SESSION[user] = $user;
    header("location: secure.php");
}
else {
    echo "Bad Login";
}

?>

<form name="form1" method="post" action="index.php">

    Username: <input name="user" type="text">
    <br />
    Password: <input name="pass" type="password">
    <br /><br />
    <input type="submit" name="Submit" value="Login">
</form>
Run Code Online (Sandbox Code Playgroud)

/var/www/html/site1/secure.php

<?php

session_start();

if ( !isset($_SESSION[user]) ) {

    header("location: index.php");
}

?>
Secure Page
Run Code Online (Sandbox Code Playgroud)

/var/www/html/site2/index.php

<?php

session_start();

$user = 'joe';
$pass  = '123456';

if ( $user == $_POST[user] AND $pass == $_POST[pass] ) {

    $_SESSION[user] = $user;
    header("location: secure.php");
}
else {
    echo "Bad Login";
}

?>

<form name="form1" method="post" action="index.php">

    Username: <input name="user" type="text">
    <br />
    Password: <input name="pass" type="password">
    <br /><br />
    <input type="submit" name="Submit" value="Login">
</form>
Run Code Online (Sandbox Code Playgroud)

/var/www/html/site2/secure.php

<?php

session_start();

if ( !isset($_SESSION[user]) ) {

    header("location: index.php");
}

?>
Secure Page
Run Code Online (Sandbox Code Playgroud)

Muc*_*Muc 0

我猜您的会话 cookie 设置之间存在冲突。您应该为每个站点使用单独的 php.ini 文件(如果可能的话),或者在每个站点的入口点使用特定的设置。看看http://ar.php.net/manual/en/function.session-set-cookie-params.php