2010-10-19 19 views
1

我想在cookie的名稱中使用括號。在cookie名稱中使用括號 - 爲什麼PHP將它變成數組?

它應該是這個樣子(這是瀏覽器怎麼想吧!):

Name: name[123456].newName 
Content: 20 

這是我的例子:

$cookie = "name[123456].newName=20" 

但是,當我分析瀏覽器看到的東西,我得到這個:

cookie['name'] = Array 

而且我想:

cookie['name[123456].newName'] = 20 

我的問題是:我應該如何以瀏覽器可以理解的方式編寫cookie名稱?

預先感謝您。

+2

Arggh。這勢必會造成問題。你爲什麼需要這個? – 2010-10-19 14:32:45

+0

這確實是可怕的,但他們都允許cookie的字符,你可以給你一個更完整的例子,你如何添加cookie的捲曲? – Hannes 2010-10-19 14:44:04

+0

你如何設置cookie? – Gumbo 2010-10-19 14:49:26

回答

5

事實上,所有你需要做的是這樣的:

<?php 

setcookie('name[123456].newName', 20); 

?> 

這將生成以下標題:

Set-Cookie: name[123456].newName=20 

...和瀏覽器(好吧,至少火狐)似乎來處理它正好。

當您想要讀回數值時,就會出現問題。 PHP有一個很好的特性:每當它找到一個輸入參數(get,post,cookie ...)並在其名稱中加上方括號時,它就會從中建立一個數組。所以print_r($_COOKIE)顯示此:

Array 
(
    [name] => Array 
     (
      [123456] => 20 
     ) 

) 

我不知道的任何方式,所以你可能需要使用字符串函數和解析原始Cookie,可以在$_SERVER['HTTP_COOKIE']找到的內容禁用此功能:

name[123456].newName=20 
+2

+1。我不認爲這個功能雖然不錯,實際上我認爲這是一個嚴重的PHP設計缺陷。你可以通過發送一個數組'a [''''''''來獲得單個值'a'(使它們保留錯誤的數據類型!),並且它們不能用多個相同的名稱解析多個輸入, []'。對於單值輸入和多值輸入分別使用單純超球體會好得多。 – bobince 2010-10-19 15:08:06

+0

是的,這是瀏覽器如何獲取cookie的。它可以讀取它? – Christopher 2010-10-20 08:12:30

+0

@Christopher,你能更精確嗎?你不明白什麼? – 2010-10-20 09:45:07

相關問題