SouLogic 灵魂逻辑

今天碰到个哭笑不得的问题,PHP 在处理 POST 时会把 key 的 . 替换成 _,原因非常古老,搜到 stackoverflow 上我才想起来,4.0 的时候 GET/POST 过去的内容是直接做为变量名的。例如 $_POST['key'] 在 4.0 的时候是直接得到个变量 $key(如果没有提前声明变量,就可以在 GET 参数里做提前赋值的攻击,那个时代很多著名 PHP 软件都有过此安全漏洞,基于这个原因,$_POST['sub.key'] 没法赋值成 $sub.key。从 4.1 开始就有 $_POST/$_GET 了,一晃都 11 年了