php cookie名使用点号(句号)会被转换

yipeiwu_com7年前PHP代码库

这个标题不是很严格,应该说可以使用点号的cookie名,但会被转换,你命名一个cookie:

$_COOKIE[‘my.name'] = 1;

实际上你不能通过'my.name'在cookie中查找到这个值,只能是'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是一个很糟糕的决定,因为它可能会覆盖脚本中原来的值,比如:

// other code
if ($a)
$uc_is_login = true;
// ...

用户只需要发送一个url?a=1的http请求就可以默认已经登陆。这是个很危险的做法,应该把它关闭。实际上php6已经去除了这个选项。

相关文章

php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。

array_push() 定义和用法 array_push() 函数向第一个参数的数组尾部添加一个或多个元素(入栈),然后返回新数组的长度。 该函数等于多次调用 $array[] = $...

PHP缓存集成库phpFastCache用法

本文实例讲述了PHP缓存集成库phpFastCache用法。分享给大家供大家参考。具体分析如下: phpFastCache是一个开源的PHP缓存库,只提供一个简单的PHP文件,可方便集成...

PHP编程计算日期间隔天数的方法

本文实例讲述了PHP编程计算日期间隔天数的方法。分享给大家供大家参考,具体如下: 刚开始在没有查PHP手册的情况下,用比较老套方法也折腾出来了,代码是这样子实现的: $date_1...

全面解读PHP的人气开发框架Laravel

Laravel的主要技术特点: 1、Bundle是Laravel的扩展包组织形式或称呼。Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中...

php中++i 与 i++ 的区别

1、++i 的用法(以 a=++i ,i=2 为例) 先将 i 值加 1 (也就是 i=i+1 ),然后赋给变量 a (也就是 a=i ), 则最终 a 值等于 3 , i 值等于 3...