2013-06-13 2 views
0

나는 항상 쿠키가 문자열만을 보유 할 수 있다고 가정하지만, PHP가 쿠키를 처리하는 방식으로 쿠키를 배열에 저장할 수도 있습니다. (그리고 직렬 배열, 원시 배열에 대해서도 말하지는 않습니다).쿠키 값이 배열이 될 수 있습니까?

setcookie('a[1]', 'a'); 
setcookie('a[2]', 'b'); 
var_dump($_COOKIE); 

위의 생산됩니다 (두 번을 실행하기 위해 기억) 다음 : 당신이해야 할 모든이가

array(1) { 
    ["a"]=> 
    array(2) { 
    [1]=> 
    string(1) "a" 
    [2]=> 
    string(1) "b" 
    } 
} 

여기 무슨 일이야? 분명히 우리는 문자열을 유지하기로되어있는 쿠키에 배열을 저장할 수있었습니다. 이거 버그 야?

+0

필자는 그렇게 생각하지 않지만 php의'serialize'와'unserialize' 함수를 사용하여 배열을 문자열로 저장하고 배열로 다시 읽어 들일 수 있습니다. – x4rf41

+0

그리고 브라우저에서 쿠키는 어떻게 생겼을까요? 직렬화 된 배열을 보게 될 것입니다. –

+1

[문서에서] (http://php.net/manual/en/function.setcookie.php) _ 쿠키 이름에 배열 표기법을 사용하여 배열 쿠키를 설정할 수도 있습니다. 이것은 배열 요소를 가진만큼 많은 쿠키를 설정하는 효과가 있지만, 스크립트에 의해 쿠키가 수신되면, 그 값은 모두 쿠키의 이름을 가진 배열에 위치하게됩니다 : _ –

답변

2

확실히 버그는 아닙니다. 사실 PHP Documentation

쿠키 이름에 배열 표기법을 사용하여 배열 쿠키를 설정할 수도 있습니다. 이것은 당신이 배열의 요소를 가질만큼의 쿠키를 설정하는 효과를 가지고 있지만, 쿠키가 스크립트에 의해 수신 될 때, 값은 모든 쿠키의 이름을 배열에 배치됩니다 :

1

쿠키 값 만 할 수있다 문자열.

PHP는 쿠키를 $_COOKIE으로 구문 분석 할 때 특정 이름 지정 규칙 (예 : [] 또는 [something]으로 끝나는 이름을 가진 쿠키)을 사용하여 쿠키를 배열로 나타냅니다.

관련 문제