PHP Multi-Domain Sessions; ini_set Not Working?(PHP 多域会话;ini_set 不工作?)
问题描述
我正在尝试设置它,因此如果您登录到我的网站,会话会转移到我网站的所有子域.例如,如果您转到 domain.com 并登录,然后转到 sub.domain.com,则您已经在 sub.domain.com 上登录了.
I'm trying to set it up so if you log in to my website the session carries over to all sub-domains of my website. For example, if you go to domain.com and log in, then go to sub.domain.com, you'll already be logged in at sub.domain.com.
据我所知,您可能想使用 ini_set('session.cookie_domain','.domain.com') 然后 session_start(),然后设置会话变量,但这不起作用.
To my understanding, you would want to use ini_set('session.cookie_domain','.domain.com') and then session_start(), then set your session variables, but this isn't working.
我正在做的事情的例子:
Example of what I'm doing:
domain.com 的代码:
Code for domain.com:
<?php
ini_set('session.cookie_domain','.domain.com');
session_start();
$_SESSION['variable'] = 1;
?>
sub.domain.com 的代码:
Code for sub.domain.com:
<?php
session_start();
echo $_SESSION['variable'];
?>
但是 $_SESSION['variable'] 没有设置.
But $_SESSION['variable'] isn't set.
我也试过在 sub.domain.com 代码中使用 ini_set(),但没有任何区别.我已经通过使用 ini_get() 验证了设置 session.cookie_domain 是否有效.
I've also tried using ini_set() in the sub.domain.com code, but it made no difference. I've verified that setting session.cookie_domain is working by using ini_get().
我做错了什么?谢谢!
推荐答案
先验证ini_set
<?php
ini_set('session.cookie_domain','.domain.com');
echo ini_get('session.cookie_domain');
session_start();
$_SESSION['variable'] = 1;
?>
<小时>
更新:
刚刚想了一下..你也试过吗:
Just thought about it.. Did you also try:
<?php
session_set_cookie_params( 0, "/", ".domain.com", false, false);
session_start();
$_SESSION['variable'] = 1;
?>
<小时>
更新 2:替代处理(手动 cookie 处理)
Update 2: ALternate handling (manual cookie handling)
<?php
session_start();
session_regenerate_id();
$_SESSION['variable'] = "String Test";
setcookie('PHPSESSID',session_id(),time()+86400,'/','.domain.com');
echo session_id();
?>
并在子域文件中
<?php
if (isset($_COOKIE['PHPSESSID']) && !empty($_COOKIE['PHPSESSID'])) session_id($_COOKIE['PHPSESSID']);
session_start();
echo $_SESSION['variable'] . "<br />";
echo $_COOKIE['PHPSESSID'] . "<br />";
echo session_id();
?>
<小时>
您可以在每个文件中添加三行来传递/处理会话信息
Three lines you could add to every file to hand off / handle session info
if (isset($_COOKIE['PHPSESSID']) && !empty($_COOKIE['PHPSESSID'])) session_id($_COOKIE['PHPSESSID']);
session_start();
if (!isset($_COOKIE['PHPSESSID'])) setcookie('PHPSESSID',session_id(),time()+86400,'/','.domain.com');
您通过会话传递了哪些信息?或者你用它来处理登录等?
What info are you passing through the session? Or are you using it to handle logins, etc?
这篇关于PHP 多域会话;ini_set 不工作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PHP 多域会话;ini_set 不工作?
基础教程推荐
- 学说 dbal querybuilder 作为准备好的语句 2022-01-01
- PHP 类:全局变量作为类中的属性 2021-01-01
- PHP PDO MySQL 查询 LIKE ->多个关键词 2021-01-01
- 如何在 Laravel 中使用 React Router? 2022-01-01
- 在PHP中根据W3C规范Unicode 2022-01-01
- Cron Jobs 调用带有变量的 PHP 脚本 2022-01-01
- 如何替换eregi() 2022-01-01
- YouTube API v3 点赞视频,但计数器不增加 2022-01-01
- 如何在 Laravel 5.3 注册中添加动态下拉列表列? 2021-01-01
- 有什么方法可以用编码 UTF-8 而不是 Unicode 返回 PHP`json_encode`? 2021-01-01
