我刚刚开始,所以如果这是一个愚蠢的问题,请原谅。
我正在通过阅读一本书并观看可能稍微过时的视频系列来学习。
在涉及多个页面的某些情况下给出的指令使用常规变量语法,但除非我使用本文标题中提到的语法,否则该语法不起作用。
视频中的示例包括:
第1页:
<?php
setcookie("color","blue");
?>
第2页:
<?php
echo $color;
?>
这对我不起作用。但是,如果我使用其他语法更改内容,它确实有效。
更改为使其可用的变量语法的示例:
第1页:
<?php
setcookie("color","blue");
?>
第2页:
<?php
echo $_COOKIE["color"];
?>
所以我的问题是,我使用的是什么语法(例如:$ _COOKIE [“color”])?它叫什么,它究竟是什么/如何运作?
我意识到这与会话有关,但除此之外我不太了解。
感谢您的帮助!
答案 0 :(得分:4)
它们被称为Superglobals,它们是始终定义的“特殊”变量。
http://php.net/manual/en/language.variables.superglobals.php
如果启用了邪恶的,邪恶的register_globals,第一个例子可以工作:
http://php.net/manual/en/security.registerglobals.php
如果你是从使用register_globals的来源学习PHP,我建议你找另一个来源。
答案 1 :(得分:3)
第一种语法,您只需“找到已存在的变量”,这取决于名为register globals的PHP功能。很久以前这个功能是为了方便初学者而引入的,但它一直是许多安全问题的根源,并且已经被弃用了一段时间(事实上,对这种模式的支持已经完全在即将发布的PHP 5.4版本中删除。如需快速概述,请阅读常见问题解答中的“how does register_globals affect me?”。
访问“环境”变量(即源自当前HTTP请求或服务器设置的变量)的另一种方法是访问superglobal变量;此页面也链接到上面的寄存器全局部分。
如果您正在阅读依赖于注册全局变量激活的教程,您应该立即停止阅读它们并找到更好和更新的材料。
答案 2 :(得分:2)
是的,该示例不起作用,因为它过时。在PHP中,有一个名为register_globals
的设置使该功能正常工作,但不建议使用它。
您正在讨论的语法($_COOKIE["color"]
)是获取(associative) array元素的语法。 $_COOKIE
本身是一个superglobal数组,它始终存储HTTP请求中包含的cookie值。
会话是其他内容,Cookie可用于维护会话。
答案 3 :(得分:0)
这些被称为Superglobals。它们是可在任何地方使用的全局数组,无需使用global()
明确定义它们。有可用的sevearl,用于cookie,上传文件,POST变量等。
有关更多信息,最好参考PHP手册:http://php.net/superglobals。