1

http://sample.comhttp://example.comという名前の 2 つの異なるドメインがあります。CAKEPHP で開発したサンプル Web サイトと、corephp で開発したサンプル Web サイトです。example.com にログインする場合、このセッションは cakephp セッションと一致する必要があります。私がウェブサイトの誰かを記録した場合、それは両方のために機能します. これは可能ですか?最適なトレーニング方法を教えてください。

前もって感謝します。

4

4 に答える 4

6

vhostsと呼ばれる、単一のサーバーで異なるサイト/ドメインを実行する一般的な手法があります。すべての仮想ホストにセッション パスを指定できるため、すべての仮想ホストに同じパスを定義することもできます。これにより、セッションが共有されます。プロジェクト A で作成されたセッションは、セッション B でも使用できます。

仮想ホストは、純粋な PHP、CakePHP、またはその他を使用するかどうかを気にしません。セッションはセッションです。

必要な vhost ルールは次のとおりです (セッション フォルダーは両方の定義で同じであることに注意してください)。

<VirtualHost *:80>
    ServerName www.sample.com
    DocumentRoot /var/www/xxx1
    <Directory "/var/www/xxx1">
        AllowOverride All
        php_value session.save_path "/var/mysessionfolder"
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    DocumentRoot /var/www/xxx2
    <Directory "/var/www/xxx2">
        AllowOverride All
        php_value session.save_path "/var/mysessionfolder"
    </Directory>
</VirtualHost>

詳細については、次のスレッドを参照してください: How to prevent PHP sessions being shared between different apache vhosts? あなたが望むものの反対を尋ねるもの。

于 2013-08-21T08:05:05.217 に答える
1

最初の Web サイトのデータベースに接続し、ユーザー セッションをユーザー Cookie と比較する必要があります。

$db = new mysqli("localhost", "user", "pass", "db");

$id         = $db->escape_string($_COOKIE["id"]);
$session    = $db->escape_string($_COOKIE["session"]);

$check      = $db->query("SELECT data FROM cake_sessions WHERE id = '" . $db->real_escape_string($id) . "'");
$checkarr   = $check->fetch_assoc();

if($session == $checkarr["data"])
    echo "logged";

未検証; また、cakephp authcookes についてもよくわからないので、おそらく間違っています。

于 2013-08-16T08:17:51.297 に答える