2012-04-04 51 views
0

为什么在代码库中更改/制作错误有时会破坏Codeigniter/PHP中的会话?我无法弄清楚为什么有时会发生这种情况的逻辑,而不是其他人及其驱使我发疯的原因。为什么在代码库中更改/制作错误有时会破坏Codeigniter/PHP中的会话?

我想知道什么是调用sess_destroy()的触发器。如果我的脚本包含将数据写入会话的代码,会话只能被销毁吗?我想我试图找出是,是否有烤成笨/ PHP的破坏在解析错误的会话,即使我没有显式的调用来更新会话数据

感谢重定向脚本,

+1

那么,你做了什么改变? – 2012-04-04 12:29:13

+0

嗨达米安,我不确定。当我做出很多改变之前发生这种情况时,我已经失去了可能会破坏会话的轨迹。我问了这个问题,希望我可以更好地理解触发器来销毁会话。你能否看到我上面提到的问题,这开始深入一点?谢谢, – 2012-04-04 14:38:56

回答

1

如果你能使你的代码中的一些变化导致解析错误或其他类型的致命错误,然后它可能是PHP无法将数据写入到会话 - 因为脚本模具的PHP调用session_write(),之前的PHP通常会在脚本结束时自动执行。

因此,如果PHP永远不会有机会调用session_write()会话数据丢失。

你应该检查你的php错误日志,看看你是否有任何致命错误,找到它们的来源并修复你的脚本。

+0

嗨德米特里,感谢您的建议。那么这是否意味着只有我的脚本包含将数据写入会话的代码才能销毁会话?我想我想弄清楚的是,即使我没有明确地进行调用来更新会话数据,它们是否将重定向脚本烘焙到codeigniter/php中,以便在解析错误时销毁会话。 – 2012-04-04 14:32:29

+0

您可以在脚本中手动调用session_write_close()。一旦知道会话数据的更新没有更新,就立即调用session_write_close()并不是一个坏主意。通过这种方式,您可以确保会话数据已保存,即使脚本在该行之后死亡,您的会话也将被保存。在这里看到文档http://us2.php.net/manual/en/function.session-write-close.php – 2012-04-04 14:35:49

+0

嗯,我想保留用户更新一些会话数据的能力,如他们的名字,图片' src =“”'等等。我想要显示用户的名字,图片等每个地方都需要访问数据库似乎很愚蠢。这不会限制'session_write_close()'的用处吗? – 2012-04-04 14:46:13

相关问题