PHP中两个子域之间的共享会话
我已经看到了许多在两个不同子域之间共享会话的解决方案,但它似乎不适合我。以下是我的设置: sub1.example.com(用户从这里开始) sub2.example.com(PHP文件包含在sub1中的文件中) 我使用以下代码在sub2包含的PHP文件中启动会话。决不会在sub1上的文件中直接启动会话PHP中两个子域之间的共享会话,php,jquery,session,Php,Jquery,Session,我已经看到了许多在两个不同子域之间共享会话的解决方案,但它似乎不适合我。以下是我的设置: sub1.example.com(用户从这里开始) sub2.example.com(PHP文件包含在sub1中的文件中) 我使用以下代码在sub2包含的PHP文件中启动会话。决不会在sub1上的文件中直接启动会话 ini_set('session.cookie_domain', '.example.com' ); ini_set( 'session.cookie_httponly', 1 ); sessi
ini_set('session.cookie_domain', '.example.com' );
ini_set( 'session.cookie_httponly', 1 );
session_name( 'mySession' );
session_start();
我有一个存在于sub2上的Javascript文件,它也调用sub2中的PHP文件。但是,当我在Javascript文件调用的文件中使用session_start()时,会创建一个不同的会话,我通过从通过sub1调用的PHP文件和通过Javascript调用的PHP文件输出会话ID来确认这一点
编辑1:下面更好地描述了文件的连接方式以及何时调用session_start:
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();
});
}给了我一个想法,我可能需要把饼干传下去。我的代码可能不是最好的方法,但以下是我拼凑的:
我将会话cookie的值与POST请求一起发送到login.php。
我将会话代码更改为以下内容:
ini_set('session.cookie_domain', '.example.com' );
session_name( 'mySession' );
if (isset($_POST['sid']))
session_id($_POST['sid']);
session_start();
我必须删除HTTPOnly标志,因为我需要通过Javascript访问cookie信息。理想情况下,我希望避免这样做,但我也希望我的代码能够正常工作,现在就可以了。告诉我可能需要传递cookies。我的代码可能不是最好的方法,但以下是我拼凑的:
我将会话cookie的值与POST请求一起发送到login.php。
我将会话代码更改为以下内容:
ini_set('session.cookie_domain', '.example.com' );
session_name( 'mySession' );
if (isset($_POST['sid']))
session_id($_POST['sid']);
session_start();
我必须删除HTTPOnly标志,因为我需要通过Javascript访问cookie信息。理想情况下,我希望避免这样做,但我也希望我的代码能够正常工作,现在就可以了。“会话从来不会直接在sub1上的文件中启动”sub1中的所有文件都包括sub2上的PHP文件。会话启动代码在sub2中包含的文件中。然后向我们展示您的实际JavaScript部分。问题很可能就在那里的某个地方。您可能忽略了特别指示它将cookies与跨源请求一起传递。您可能在这里发现了一些问题。我正在使用的代码是原始的,只是托管在一个子域上,所以我不需要传递cookie信息。我刚刚发布了Javascript代码,希望你能告诉我在哪里可以这么做。你的观点2没有意义。PHP包括通过文件系统进行的工作。您绝对不应该通过HTTP包含其他PHP文件“sub1上的文件中永远不会直接启动会话”sub1中的所有文件都包含sub2中的PHP文件。会话启动代码在sub2中包含的文件中。然后向我们展示您的实际JavaScript部分。问题很可能就在那里的某个地方。您可能忽略了特别指示它将cookies与跨源请求一起传递。您可能在这里发现了一些问题。我正在使用的代码是原始的,只是托管在一个子域上,所以我不需要传递cookie信息。我刚刚发布了Javascript代码,希望你能告诉我在哪里可以这么做。你的观点2没有意义。PHP包括通过文件系统进行的工作。您绝对不应该通过HTTP包含其他PHP文件