gpt4 book ai didi

php - 迁移后 Codeigniter session 不起作用

转载 作者:可可西里 更新时间:2023-11-01 00:55:20 26 4
gpt4 key购买 nike

我有一个使用 CodeIgniter 3.1.6 构建的应用程序。我正在对生产服务器上的子域进行测试。我将主域指向该文件夹,并将 config.php 中的 $base_url 更改为正确的 URL。 ($config.php 中的 cookie_domain 从未设置过。)

但是, session 数据现在不起作用。我已经尝试了一些测试,可以在一个 Controller 中设置和读取 session 数据。

$this->session->set_userdata('name', $name);
echo $this->session->userdata('name');

但是,这不适用于 URL。例如:

// controllers/Contact.php
$this->session->set_userdata('name', $name);

// controllers/Welcome.php
echo $this->session->userdata('name');

关于为什么这可能不适用于不同域的任何想法?

最佳答案

有几个问题报告了 PHP 版本 7.1 和 CI 3.1.6 不支持 $this->session->set_userdata('name', $name);

好吧,$this->session->set_userdata('name', $name); 有效,但是函数 userdata() 只接受一个参数并期望它是一个字符串

如果您查看 session 库 (/system/libraries/Session/Session.php),您会在行附近找到

747:

/**
* Userdata (fetch)
*
* Legacy CI_Session compatibility method
*
* @param string $key Session data key
* @return mixed Session data value or NULL if not found
*/
public function userdata($key = NULL)
{
if (isset($key))
{
return isset($_SESSION[$key]) ? $_SESSION[$key] : NULL;
}
elseif (empty($_SESSION))
{
return array();
}

$userdata = array();
$_exclude = array_merge(
array('__ci_vars'),
$this->get_flash_keys(),
$this->get_temp_keys()
);

foreach (array_keys($_SESSION) as $key)
{
if ( ! in_array($key, $_exclude, TRUE))
{
$userdata[$key] = $_SESSION[$key];
}
}

return $userdata;
}

但您也可以像这样使用原生 $_SESSION 获取像 $name=array('firstname'=>'mr smith') 这样的数组:

设置:

$_SESSION['name']=$name; 

$this->session->set_userdata('name', $name);

得到:

echo $_SESSION['name']['firstname']; //etc..

关于php - 迁移后 Codeigniter session 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46875979/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com