2010-01-04 70 views

回答

17

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

// 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将不再工作,但你不应该这样做与你的会话。

允许用户输入的会话密钥文本当然是一个公然的安全错误。

+0

Works:http://ideone.com/4OYl1B不要:http:// ideone.com/51uC5D – Prasanth 2013-06-26 11:02:17

3

这不会造成问题,但数组键通常被认为像这样应该用同样的考虑

0

好像在我看来,增加不必要的空格可以选择的变量名......我不经常使用空间。但是,如果你这样做,确保你引用数组键。

8

你可以这样做,它会工作 - 即使我通常不会在手动设置阵列的按键时执行此操作,但有时会发生这种情况,当我从文件中获取密钥时(例如),我从来没有任何问题。

但是,如果您使用extract函数,也许会导致某种问题。如果它创建的变量名称中有空格(不知道会不会)要访问变量将会很难(但不是不可能)

+0

+1好点 - 如果提取出一个无效命名密钥的数组,请提取错误(警告?) – 2010-01-04 23:36:18