이 제목은 그다지 엄격하지 않습니다. 도트 쿠키 이름을 사용할 수 있지만 쿠키 이름은 다음과 같이 변환됩니다.
$_COOKIE['my.name'] = 1;
실제로 'my.name'을 통해 쿠키에서 이 값을 찾을 수 없으며 'my_name'만 찾을 수 있습니다.
echo $_COOKIE['my_name'];
php가 자동으로 변환했으며 마침표는 밑줄로 변환되었습니다.
PHP는 왜 이런 일을 할까요? 이는 $_GET/$_POST/$_SERVER/$_COOKIE 때문입니다. . . 이러한 전역 함수의 값은 많은 이전 버전에서 Register_globals 매개변수를 통해 로컬로 직접 액세스할 수 있습니다. 예를 들어, Register_globals = on을 켠 후 $my_name에 직접 액세스하면 값이 1이 됩니다. $my.name이면 PHP 변수 명명 원칙을 따르지 않습니다. 이것은 단지 마침표(.)의 문제가 아닙니다.
따라서 $_COOKIE의 이름은 이미 PHP 이름 지정 표준을 준수합니다.
register_globals도 활성화하면 다음과 같이 스크립트의 원래 값을 덮어쓸 수 있으므로 잘못된 결정입니다.
// 기타 코드
만약 ($a)
$uc_is_login = true;
// ...
기본적으로 로그인하려면 사용자는 url?a=1로 http 요청만 보내면 됩니다. 이는 매우 위험한 관행이므로 중단해야 합니다. 실제로 php6에서는 이 옵션이 제거되었습니다.