【发布时间】:2014-08-27 06:03:39
【问题描述】:
我正在尝试通过研究 opencart 源代码来学习将 php 用于实际应用程序,但我卡在了一个点
// Register Globals
if (ini_get('register_globals')) {
ini_set('session.use_cookies', 'On');
ini_set('session.use_trans_sid', 'Off');
session_set_cookie_params(0, '/');
session_start();
$globals = array($_REQUEST, $_SESSION, $_SERVER, $_FILES);
foreach ($globals as $global) {
foreach(array_keys($global) as $key) {
unset(${$key});
}
}
}
- 据我了解,我们正在尝试取消设置所有会话变量,但如果会话没有提前启动,为什么我们需要取消设置?
unset(${$key}) 究竟做了什么?
为什么 opencart 使用 myisam 引擎?
【问题讨论】:
-
unset(${$key})取消设置具有变量$key所拥有的名称的变量。例如,想象$global是$_SESSION;那么从array_keys()返回的一个元素可能是"USERNAME"(例如),这意味着unset(${$key})将取消设置变量$USERNAME。 -
我明白了你的意思,但是如果存在同名的变量是一种威胁吗?
-
我的意思是一个只是一个变量,另一个是一个数组的键。它只是错误输入的威胁还是其他什么?
-
register_globals设置了吗?因为在这种情况下,请查看:stackoverflow.com/questions/3593210/…