2010-01-04 69 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