如何避免PHP会话错误?
Occassionaly我在PHP中运行这个错误,我该如何解决这个问题或者是什么原因造成的?如何避免PHP会话错误?
警告:未知:您的脚本可能依赖于直到PHP 4.2.3之前存在的会话副作用。请注意,除非启用register_globals,否则会话扩展不会将全局变量视为数据源。您可以通过分别将session.bug_compat_42或session.bug_compat_warn设置为off来禁用此功能和此警告。未知在线0
如果您的变量名称与会话参数相同,那么此版本的PHP将错误地将此识别为程序员错误地依赖于register_globals获取会话变量。重命名你的变量,警告应该消失。
$mySessionVar = $_session["sessionVar"];
,而不是
$sessionVar = $_session["sessionVar"];
有趣。我以前从未检查过'session.bug_compat_42'。为你和Gumbo +1。 – zombat 2009-08-07 19:21:07
您依赖于PHP的一个不推荐使用的功能,名为register_globals。此功能导致许多安全问题,不应再使用。 PHP手册讨论了这个in-depth。
有关该问题的绝佳说明,请参阅此Google Groups后。
编辑:如果依靠register_globals
你不是,那么你应该注意浓汤和stereointeractive的答案。
我不建议您禁用警告或错误信息,这是你可能想解决问题。要么你有变量名称触发假的错误信息(请参阅sterrointerative.com的答案),或者你试图使用全局变量而不定义它们(这意味着你可能有错误,你看不到)。在我看来,这是你想要理清的重要区别。
如果它只发生在某些页面上,您可能需要检查拉入这些页面的所有代码,并搜索在使用前未定义的变量。用调试器浏览这些页面应该有所帮助。
我将消息像错误消息一样存储到会话变量中,如果此会话不为空,则在页面加载中存储消息我显示它,然后在显示它之后立即取消设置会话变量,我注意到此错误有时只会发生,但每次它都会发生在我的一条消息被显示之后是正确的,然后当该错误发生时,它不会在该页面上取消设置 – JasonDavis 2009-08-07 19:19:08
你需要粘贴一些代码;即什么是第0行 – Dirk 2009-08-07 19:03:07
它可能不是第0行,但有些代码会有所帮助。 – 2009-08-07 19:05:58
这是一个艰难的一个我的网站是数百页的编译,但通常我的头文件是第一个,这个错误通常只显示在一些页面上后,我张贴的东西与表格然后重定向到一个页面 – JasonDavis 2009-08-07 19:07:24