2011-04-07 160 views
0

我收到此错误:如何为php会话注册全局变量

警告:未知:您的脚本可能依赖于会话副作用,直到PHP 4.2.3存在。请注意,除非启用register_globals,否则会话扩展不会将全局变量视为数据源。你可以通过设置session.bug_compat_42或session.bug_compat_warn关闭,分别在第0行的未知中禁用此功能和警告。

根据它,我必须启用(注册)全局变量吗?我该怎么做,为什么错误发生在第一位?

回答

5

你打电话的session_start()在你的PHP文件的最顶部?

PHP手册说,了session_register()函数已被弃用PHP 5.3.0的并在其上的依赖高度气馁。

相反,这样做

$ _SESSION [ '狗'] = “汪”;

但你必须调用文档中的任何事情之前在session_start()!

+0

的起点是,在每个脚本的顶部,我有在session_start()就在顶部作为第一行代码。 – dave 2011-04-07 16:43:31

+0

脚本中的任何变量是否与您的某个SESSION变量共享相同的名称? – Jonathan 2011-04-07 16:45:22

+0

所以你的意思是一旦用户进入主页,我必须调用session_start()?即使他们没有输入任何表单数据? – dave 2011-04-07 16:46:11

-1

注册全局变量是从_POST/_GET/_SESSION变量的方式来定义到自己名下全局范围。我从来没有使用或看到来自_SESSION的变量的使用...但解决方案是相同的。 PHP应该宣布文件路径&行,所以您只需重构代码即可停止依赖此弃用功能。

+0

这并没有帮助我理解这个问题,并以任何方式解决它... – dave 2011-04-07 16:45:23

+0

@Dave - 乔纳森实际上更接近您的解决方案。摆脱所有session_register调用,并用_SESSION ['someVar'] = $ someVar替换session_register(“someVar”); – David 2011-04-07 16:48:56

+0

是的,我给了他点,并指出你。问题在于我将会话数组索引设置为一个未初始化的变量。 – dave 2011-04-07 16:51:57

-1

全局变量不再被视为正常使用。它们会导致各种管理问题,内存分配问题。 PHP的常见做法是使用会话变量($ _SESSION [“variable_name”])。如果你真的在Globals上设置了自己的心,你可以在php.ini中启用它们。在PHP指令register_globals的启用后

0

使用session_start()在PHP

$barney = "you can try this"; 
session_register("barney"); 

// Use of $_SESSION is preferred, as of PHP 4.1.0 
$_SESSION["hotel"] = "Starling"; 

// The old way was to use $HTTP_SESSION_VARS 
$HTTP_SESSION_VARS["email"] = "[email protected]";