PHP的setcookie默认不对加号转义,太坑
发布于 2020-03-09 00:37 阅读:890 评论:0 标签: cookie 加号 空格

PHP 手册对 setcookie 的使用范例里提到:

注意:在发送 Cookie 时,值的部分会被自动 urlencode 编码。收到 Cookie 时,会自动解码,并赋值到可变的 Cookie 名称上。 如果不想被编码,可以使用 setrawcookie() 代替――如果你的 PHP 版本是 5 及以上。

里面的措辞:“值的部分会被自动 urlencode 编码”令人佩服。

加号“+”不在发送时“值的部分”不被自动编码,但是在收到时,却被自动 urldecode 了:一来一回,加号“+”变成了空格。

太坑了,还是手动 rawurlencode 和 rawurldecode 比较靠谱。