+ -
当前位置:首页 → 问答吧 → 求助:uchome开发中全局变量$_SGLOBAL问题

求助:uchome开发中全局变量$_SGLOBAL问题

时间:2011-07-13

来源:互联网

本人准备开发个插件,刚开始接触这个系统。碰到个问题无法解决,如下:
看代码分析,$_SGLOBAL['supe_uid']这个变量在common.php中进行初始化,然后再do_login.php中进行赋值,它可以在其他各个php文件中自由传递,我仿照这个变量自己设计一个$_SGLOBAL['supe_book']变量,也在common.php中进行初始化,然后再do_login.php中进行赋值,但这个值却不能自由传递,即当程序通过include跳转到另一php文件后,这个值就自动初始化了。跟踪了系统登陆的整个代码,还是百思不得其解,望高人相助。

作者: ucstudy   发布时间: 2011-07-13

你在 do_login.php 中对 $_SGLOBAL['supe_book'] 赋值的时候,是在一个 function 里吗?如果是的话,有没有先写一行 global $_SGLOBAL 呢?如果没有这个,那实际上只是对一个局部变量赋值。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)

作者: maquan   发布时间: 2011-07-13

你的签名档很有意思啊

作者: flylifei   发布时间: 2011-07-13

引用 1 楼 maquan 的回复:

你在 do_login.php 中对 $_SGLOBAL['supe_book'] 赋值的时候,是在一个 function 里吗?如果是的话,有没有先写一行 global $_SGLOBAL 呢?如果没有这个,那实际上只是对一个局部变量赋值。


————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技……


不是通过function赋值.
在do_login中, $_SGLOBAL['supe_uid'] 的赋值是通过$_SGLOBAL['supe_uid'] = $space['uid'];来实现的,通过这个赋值,$_SGLOBAL['supe_uid'] 就可以在各个php文档中传递了。我在测试阶段,给$_SGLOBAL['supe_book']赋个固定值(比方说179),即在下一行写入$_SGLOBAL['supe_book'] = 179;但无法在其他文档中传递,当我在space.php中echo $_SGLOBAL['supe_book']时,出现的不是179,而是在common.php中初始化的值;而echo $_SGLOBAL['supe_uid']却能出现正确的值。

按理说$_SGLOBAL['supe_uid']和$_SGLOBAL['supe_book']是两个类似的变量,不存在一个可以传递一个不能传递的可能性啊。难道在uchome的其他什么地方我忽略了什么东西?

作者: ucstudy   发布时间: 2011-07-13

我想……呃……你是不是误会了“全局变量”的含义?……

PHP 的全局变量,只是在一个 HTTP Request 的范围内有效的。当一个请求被 do_login.php 处理的时候,你给 $_SGLOBAL['supe_book'] 赋了一个值,但这个值在处理结束后就消失了。等到下一个请求被 space.php 处理的时候,$_SGLOBAL 是全新的。

--------
With sufficient thrust, pigs fly just fine. However, this is not necessarily a good idea. It is
hard to be sure where they are going to land, and it could be dangerous sitting under them as they
fly overhead.
出自 RFC1925 - The Twelve Networking Truths

————————————————————————————————
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)

作者: maquan   发布时间: 2011-07-13

热门下载

更多