http://sample.comとhttp://example.comという名前の 2 つの異なるドメインがあります。CAKEPHP で開発したサンプル Web サイトと、corephp で開発したサンプル Web サイトです。example.com にログインする場合、このセッションは cakephp セッションと一致する必要があります。私がウェブサイトの誰かを記録した場合、それは両方のために機能します. これは可能ですか?最適なトレーニング方法を教えてください。
前もって感謝します。
http://sample.comとhttp://example.comという名前の 2 つの異なるドメインがあります。CAKEPHP で開発したサンプル Web サイトと、corephp で開発したサンプル Web サイトです。example.com にログインする場合、このセッションは cakephp セッションと一致する必要があります。私がウェブサイトの誰かを記録した場合、それは両方のために機能します. これは可能ですか?最適なトレーニング方法を教えてください。
前もって感謝します。
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? あなたが望むものの反対を尋ねるもの。
最初の 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 についてもよくわからないので、おそらく間違っています。