17

这是不好的做法/会导致问题吗?

$_SESSION['stuff to keep']

与调用str_replace()索引相反。

4

4 回答 4

19

这是不好的做法,但不是因为空间。

// 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()并且 cast toobject将不再起作用,但是无论如何您都不应该在会话中这样做。

当然,允许用户在会话密钥中输入文本是一个明显的安全错误。

于 2010-01-04T23:28:46.500 回答
9

你可以这样做,它会起作用——即使我在“手动”设置数组的键时通常不这样做,有时也会在我从文件中获取键时发生(例如),我从来没有遇到过任何问题。

extract但是,如果您使用这些功能,这可能会导致某种问题。如果它创建名称中带有空格的变量(不知道是否会) ,那么访问您的变量将很困难(但并非不可能) 。

于 2010-01-04T23:28:41.867 回答
5

它不会引起问题,但数组键通常被视为变量名,因此应根据相同的考虑选择

于 2010-01-04T23:27:51.243 回答
0

在我看来,似乎添加了不必要的空格......我通常不使用空格。但是,如果这样做,请确保引用数组键。

于 2010-01-04T23:28:39.897 回答