http_build_query引起的签名错误
最近游戏当中有人刷游戏币,导致无法正常运营。所以要对这些和游戏币相关的全部加上签名。
当然,简单一点的来个url过滤后,把要进行签名的参数放入数组当中,然后再用http_build_query来生成新的签名url,但对于http_build_query的文档看得不仔细:对值会进行encodeurl,这就郁闷了,因为有些值是用逗号隔开传的, 结果逗号被编码了,导致flash那边的签名和我这里的签名不一致,程序无法正常运行。
临时的解决方案是:decodeurl。
以后使用时,最好还是把参数写完整些。
string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
一个完整的http_build_query是有3个参数的(第4个参数是PHP5.4加的)
http://cn.php.net/manual/en/function.http-build-query.php
当然,简单一点的来个url过滤后,把要进行签名的参数放入数组当中,然后再用http_build_query来生成新的签名url,但对于http_build_query的文档看得不仔细:对值会进行encodeurl,这就郁闷了,因为有些值是用逗号隔开传的, 结果逗号被编码了,导致flash那边的签名和我这里的签名不一致,程序无法正常运行。
临时的解决方案是:decodeurl。
以后使用时,最好还是把参数写完整些。
string http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
一个完整的http_build_query是有3个参数的(第4个参数是PHP5.4加的)
Changelog
Version | Description |
---|---|
5.4.0 | The enc_type parameter was added. |
5.1.3 | Square brackets are escaped. |
5.1.2 | The arg_separator parameter was added. |
http://cn.php.net/manual/en/function.http-build-query.php
- 没有相关文章
- 没有评论