从 CodeIgniter2 迁移到 CI3。 PHP 8.2
通过查看网络流量,我确认不存在多个请求。只有 4 个其他文件从同一服务器加载,它们是 favicon、两个 svg 文件和一个 javascript 脚本,这些文件都没有经过 CI。另外,如果多个请求导致这种情况,在旧的 CI2 系统中也会发生这种情况,但效果很好。
调用
set_flashdata()
在 session_ci3 表中设置适当的记录。正如预期的那样,重新加载页面会从记录中删除闪存数据。
如果在
flashdata()
之后立即调用,则调用 set_flashdata()
将返回正确的值。
$mytestmessage = $this->session->flashdata('mytestmessage');
echo "Old testmessage: $mytestmessage";
$this->session->set_flashdata('mytestmessage', 'THIS IS A TEST FLASHDATA MESSAGE');
$mytestmessage = $this->session->flashdata('mytestmessage');
echo "New testmessage: $mytestmessage";
多次运行上述代码的输出始终是:“Old testmessage: New testmessage: THIS IS A TEST FLASHDATA MESSAGE”
预期输出为“旧测试消息:这是测试闪存数据消息新测试消息:这是测试闪存数据消息”
以下问题未得到解答:
较新版本的 php 不再支持 flashdata,您应该用 tempdata 替换 flashdata
show:
tempdata('alert');
set:
set_tempdata('alert', 5);
更多详情: CodeIgniter 会话库