5

複数のサイトを持つ 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
4

3 に答える 3

2

使用する必要があります

session_name( 'site1' );
session_start();

php.ini のデフォルトsite1.userをオーバーライドするようなセッション タプルを作成しています。PHPSESSID

ロギング ページindex.phpで 呼び出しますsession.php logout.phpsession_start()これは、最も一般的なログイン ファイルのスケルトンですsession_name(<sess_name>)

于 2019-08-09T10:03:50.497 に答える
0

セッションCookieの設定が衝突していると思います。サイトごとに個別の php.ini ファイルを使用するか (可能であれば)、すべてのサイトのエントリ ポイントで特定のセットアップを使用する必要があります。http://ar.php.net/manual/en/function.session-set-cookie-params.phpをご覧ください。

于 2013-01-29T16:58:22.557 に答える