PHP base64编码的数据传输时的一个诡异的问题

PHP base64编码的数据传输时的一个诡异的问题

12 Mar 2018

最近客户端老是反馈账号注册时出现签名错误,经个人反复debug,发现一个诡异的问题,PHP在接收带 '+' 的参数时,自动把它变成了空格,这就尴尬了。Google了一下,原来在querystring中,'+'号会被当成空格来处理。

 

知道了病根所在,解决办法就好说了,有三种:

1)采用POST传输

2)base64数据在传输之前,先做urlencode,服务端接收后,再做urldecode

3)base64数据直接传输,服务端接收后,将空格替换成 '+'号

$baseStr = str_replace(' ', '+', $baseStr);