子域無法辨識 PHP 會話
我有一個帶有使用者數據庫和登錄表單的網站。該系統已 100% 完美執行。我有一個名為 name= 的主站點
www.example.com
和一個名為accounts.example.com
. 當使用者登錄時,他或她會登錄主站點,www.example.com/login.php
.要查看他們的個人資料並進行編輯,他們點擊將他們帶到 的連結
accounts.example.com/profile.php?user=theirusername
。當頁面載入時,如果他們正在查看自己的帳戶,則假設會顯示一個編輯按鈕。我這樣做是這樣的,<?php if($user == $dbusername){ echo"<a href='edit.php'>EDIT</a>";}
。如果我轉到 ,此功能可以正常工作www.example.com/Accounts/profile.php?user=theirusername
,但在子域上它不起作用。accounts.example.com
指向相同的路徑www.example.com/Account/
。我不知道為什麼會這樣,我正在使用標準的 php SESSIONS。當我在 Safari Inspector 中查看 Cookies 選項卡時,它顯示 1 SESSION,
accounts.example.com
.有沒有辦法將cookie“攜帶”到另一個子域?任何幫助都會很棒!謝謝!
如果你需要在兩個子域中使用cookie
www.example.com
,accounts.example.com
你需要在根域上設置它example.com
。您需要將 PHP 設置session.cookie_domain更改為".example.com"
.
- 在 php.ini 你可以有
session.cookie_domain = ".example.com"
- .htaccess 變體:
php_value session.cookie_domain .example.com
- 或者在 PHP 腳本中:
ini_set('session.cookie_domain', '.example.com' );
這是首選順序:如果您有權訪問伺服器配置,則應在所涉及
php.ini
的VirtualHost
s 中執行此操作。第三個選項是最糟糕的,因為您必須在每個 PHP 腳本上單獨更改它。