编程语言
首页 > 编程语言> > PHP多域会话; ini_set不工作?

PHP多域会话; ini_set不工作?

作者:互联网

我正在尝试设置它,所以如果你登录我的网站,会话将转移到我网站的所有子域.例如,如果您访问domain.com并登录,则转到sub.domain.com,您将已经登录sub.domain.com.

根据我的理解,您可能希望使用ini_set(‘session.cookie_domain’,’.domain.com’)然后使用session_start(),然后设置会话变量,但这不起作用.

我在做什么的例子:

domain.com的代码:

<?php
 ini_set('session.cookie_domain','.domain.com');
 session_start();
 $_SESSION['variable'] = 1;
?>

sub.domain.com的代码:

<?php
 session_start();
 echo $_SESSION['variable'];
?>

但$_SESSION [‘变量’]未设置.

我也尝试在sub.domain.com代码中使用ini_set(),但没有区别.我已经通过使用ini_get()验证了设置session.cookie_domain是否正常工作.

我究竟做错了什么?谢谢!

解决方法:

首先验证ini_set

<?php
ini_set('session.cookie_domain','.domain.com');

echo ini_get('session.cookie_domain');

session_start();  
$_SESSION['variable'] = 1; 

?> 

更新:

想一想..你也尝试过:

<?php

session_set_cookie_params( 0, "/", ".domain.com", false, false); 
session_start();  
$_SESSION['variable'] = 1; 

?> 

更新2:替代处理(手动cookie处理)

<?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();
?> 

您可以添加三行来传递/处理会话信息

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');

您通过会话的信息是什么?或者您是否正在使用它来处理登录等?

标签:php,dns,session,ini-set
来源: https://codeday.me/bug/20191002/1841391.html