这是不良实践/可能会导致问题吗?
$_SESSION['stuff to keep']
与调用 str_replace()
函数来替换索引不同。
这是不良实践/可能会导致问题吗?
$_SESSION['stuff to keep']
与调用 str_replace()
函数来替换索引不同。
这是一种不好的实践方法,但并非因为空格而如此。
// file foo.php
$_SESSION['stuff to keep'] = 42;
// file bar.php
if ($_SESSION['stufft o keep'] == 42) frobnicate();
在这里,你的代码会默默地出现问题,而且可能需要一段时间才能找到错误。良好的实践是使用PHP强制执行的名称,例如类常量:
$_SESSION[Stuff::TO_KEEP] = 42;
if($_SESSION[Stuff::TOO_KEEP] == 42)
// error: no constant TOO_KEEP in class Stuff
您可以将该常量定义为任何您认为有趣或易读的常量,例如"stuff to keep"
(带空格)。当然,extract()
和转换为 object
将不再起作用,但您在会话中本来就不应该这样做。
允许用户输入的文本进入会话密钥当然是明显的安全漏洞。
extract
函数,可能会导致某些问题。如果它创建具有空格名称的变量(不知道是否会这样做),那么访问变量将会很困难(但不是不可能)。这不会引起问题,但数组键通常被视为变量名,因此应该考虑相同的因素进行选择。
在我看来,似乎添加了不必要的空格... 我通常不使用空格。如果您使用空格,请确保引用数组键。