php cookie的key中如果含有.会变成_

2015-3-2 18:26:51

以前从没主动在php的cookie里用过.符号,昨天小新喵在hostker公测交流群里突然说php的$_COOKIE键名中.会变成_,试验了一下果然如此

一开始以为是apache的锅,不过在nginx+fpm模式下也会这样。最终Google了一下,发现php的手册中提到了
http://php.net/manual/zh/language.variables.external.php#language.variables.external.dot-in-names

究其原因,其实是register_globals这个参数的锅

http://php.net/manual/zh/security.globals.php#security.globals

php5.3开始废弃了这个参数,并且从5.4开始移除了它(现在hostker是5.4,我这边是5.5)

它的作用是可以将GET和POST的参数自动注册为一个全局变量,比如有一个foo.php?bar=1的GET请求,就会产生一个$bar=1的全局变量。这样做的危险性在上面的php手册里已经提到了,所以这个特性在新版的php里已经废除了,但是.重命名为_的特性被保留了下来