[英]Shared Session Between Two Subdomains in PHP
我已經看到了許多在兩個不同子域之間共享 session 的解決方案,但它似乎對我不起作用。 這是我的設置:
sub1.example.com(用戶從這里開始)
sub2.example.com(PHP 文件包含在 sub1 中的文件中)
我使用以下代碼在 sub2 包含的 PHP 文件中啟動 session。 session 永遠不會直接在 sub1 上的文件中啟動。
ini_set('session.cookie_domain', '.example.com' );
ini_set( 'session.cookie_httponly', 1 );
session_name( 'mySession' );
session_start();
我有一個存在於 sub2 上的 Javascript 文件,它也調用 sub2 中的 PHP 文件。 When I use session_start() in the files called by the Javascript file, though, a different session is created, which I confirmed by outputting the session IDs from the PHP files called via sub1 and the PHP files called via Javascript.
編輯 1:這是對文件如何連接以及何時調用 session_start 的更好描述:
編輯2:這是調用login.php的Javascript(和jQuery):
function loginCheck()
{
var name = $('#logName').val();
var pass = $('#pass').val();
if (pass == '' || name == '')
return false;
var button = $('#loginSubmit');
$.post('SUB2ADDRESS/login.php', {name: name, pass: pass}, function(data){
button.bind('click', function() {loginCheck(); return false;});
if (!errorCheck(data))
location.reload();
});
}
CBroe給了我一個想法,我可能需要傳遞 cookies。 我的代碼可能不是最好的方法,但這是我拼湊起來的:
我將 session cookie 的值連同我的 POST 請求一起發送到 login.php。 我將 session 代碼更改為以下內容:
ini_set('session.cookie_domain', '.example.com' );
session_name( 'mySession' );
if (isset($_POST['sid']))
session_id($_POST['sid']);
session_start();
我不得不刪除 HTTPOnly 標志,因為我需要通過 Javascript 訪問 cookie 信息。 理想情況下,我想避免這樣做,但我也希望我的代碼能夠正常工作,並且現在可以。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.