标签归档:cookie

php解析cookie名称的问题

今天才发现 php 在解析 cookie 时会把名称中包含的.(点)转换成_(下划线),翻遍手册没发现有任何标注,特意去翻RFC也没找到相应的约定,看来应该是PHP自己的发明。(所以:当你设置了一个包含.或空格作名字的cookie,再读取时记得自行转换名字,否则就读不到)

php源码中的 main/php_variables.c 大约 98 行起有以下部分:

 /* ensure that we don't have spaces or dots ... */
 for (p = var; *p; p++) {
 if (*p == ' ' || *p == '.') {
 *p='_';
 } else if (*p == '[') {

看上去可能是为了兼容早期的 register_globals,从而不让名称中包含 . 或空格