3

由于我们的支付系统,我们必须使用第三方网站上的某种中继系统,才能拥有有效的 PCI (HTTPS)。

我们目前正面临一个我们已经使用了太多小时的奇怪错误。

我们的注册有 4 个步骤。

  1. 输入所有数据。
  2. 添加图片
  3. 支付

这就是我们的做法:在第 1 步中,我们将所有发布数据保存到会话中 $this->session->set_userdata("campaigncreation", $out); ,是的,$out 包含所有数据。

在这一步,我们可以轻松打印出用于活动创建的会话数据; <?print_r($this->session->userdata)?>

因为我们需要去另一个网站,所以我们将 session_id 添加到我们的调用中,以将会话保留在第三方网站上。

我们的网址是这样的: https ://relay.ditonlinebetalingssystem.dk/relay/v2/relay.cgi/http://xxxx.dk/something/controller/a1264526031adb9c71ae433eef44bfa0

如您所见,我们在 URL 中获取 session_id ( <?=$this->session->userdata("session_id")?>),在我们的控制器中,我们将会话 id 替换为控制器中的会话 id,如下所示:

$phpsess 是“ a1264526031adb9c71ae433eef44bfa0

if ( !empty($phpsess)){
            $this->session->set_userdata("session_id",$phpsess);
}

当我们现在打印出用户数据时,我们得到了正确的 session_id,但它并没有以某种方式从第 1 步中获取数据。做什么?

我只得到

 Array
(
[session_id] => a1264526031adb9c71ae433eef44bfa0
[ip_address] => 87.54.46.121
[user_agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.69 Safari/537.36
[last_activity] => 1383052142
[user_data] => 
[advertiser_id] => 1
[advertiser_name] => xxxx

)

但在某种程度上,它仍然具有advertisingr_id 和advertisingr_name 的正确数据,所以这很奇怪。

做什么?

这就像 codeigniter 在每次页面加载时刷新 session_id 一样,因此会有问题。

或者可能是因为域 cookie 设置?我不知道,请帮助我们。

4

5 回答 5

0

我遇到了同样的问题(刷新时更改会话 ID),结果发现我没有在我的测试平台/设备上设置正确的日期时间

于 2014-03-06T00:44:53.213 回答
0

它被称为会话轮换,它实际上是 CodeIgniter 中的一个安全功能,我不建议禁用它,而是为您的引用创建一个表,并将每个请求中的单个使用授权令牌附加到另一个域。

然后从您的第二个域交叉引用令牌服务器端。

如果您需要更多详细信息,请告诉我=]

您可以在这里看到我关于同一主题的答案之一:
IonAuth - 似乎正在随机注销我

于 2013-10-29T20:52:45.990 回答
0

尝试放置您网站的正确 URL。

$config['base_url'] = 'http://www.yoursite.com';
于 2015-03-19T14:05:56.470 回答
0

在这种奇怪的情况下,我试图捡起其他作品。我的开发部署测试会因 ajax 调用上的会话不同而失败。

似乎本地虚拟机 IP 不足以匹配这个特定 CodeIgniter 项目的卷积。

仅当我使用正确的域名设置本地 DNS 服务器后,它才允许 login_in 识别会话 $username/$identity。

我猜想 ajax 是在外部调用域,而我是在本地查看站点,并使用从 VM 提供的 IP。

于 2017-01-13T08:53:32.427 回答
0

根据 CI 的 Session.php,ID 在每次更新时都会更改,但他们保留对旧 ID 的引用,以便他们可以在正确的行上更新它。

此外,根据文档:“session_id”(默认情况下)每五分钟重新生成一次”。

如果没有使用“会话 ID”的具体原因,我建议您在用户数据中设置另一个唯一变量并将其用作“会话 ID”。

$uniqueId = uniqid(time()+$unique_user_variable, TRUE);
$this->session->set_userdata("my_session_id", md5($uniqueId));

因为根据您的具体情况,“唯一用户变量”可能与用户 ip、用户名、用户 ID 等不同。

于 2017-07-05T15:09:45.057 回答