複数のサイトを持つ CentOS LAMP があります。Web サイトへのログには PHP セッション変数を使用します。私の問題は、あるサイトにログインすると、同じサーバー上の別のサイトを開くことができ、ログインすることです。サイトは完全に分離されているため、それぞれに個別にログインする必要があります。各サイトには異なるユーザー DB があります。
ログイン時に入力しているセッション変数は次のとおりです。
$_SESSION["username"] = "$username";
$_SESSION["user_id"] = "$user_id";
$_SESSION["act_type"] = "$act_type";
問題を再現できるように、小さなサンプルを作成しました
/var/www/html/site1 /var/www/html/site2 の 2 つのサイトがあります。
各サイトには index.php、secure.php の 2 つのページがあり、一方にログインすると、もう一方のサイトで 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>
/var/www/html/site1/secure.php
<?php
session_start();
if ( !isset($_SESSION[user]) ) {
header("location: index.php");
}
?>
Secure Page
/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>
/var/www/html/site2/secure.php
<?php
session_start();
if ( !isset($_SESSION[user]) ) {
header("location: index.php");
}
?>
Secure Page