登录  /  注册

http_build_query函数带来的困扰

php中文网
发布: 2016-07-29 09:01:06
原创
1612人浏览过

http_build_query是用来生成url请求字符串的函数,很简单.不过今天却出现了一点小意外,在本机安装公司社区时,出现了无法登录的情况.但在测试服务器正常.经过地毯式排错,找到问题代码(仅演示,屏蔽敏感内容):
[coolcode lang=”php”]
$args = array(
“usr” => “touchboy”,
“pwd” => “123456”,
“ip” => “127.0.0.1”,
“src” => “account”
);
$query= http_build_query( $args );

[/coolcode]
测试服务器得到结果为:
usr=touchboy&pwd=123456&ip=127.0.0.1&src=account
而我本地结果为:
usr=touchboy &pwd=123456 &ip=127.0.0.1 &src=account
中间的连接符出现了差异,服务器为正常的”&”,而我本地却是转义后的”&”,最终导致本地提交数据错误.
查看手中的PHP手册,http_build_query一节对此问题只字未提.所以想到的补救方法就只有用htmlspecialchars_decode($query)还原连接符.不过始终觉得可疑,为什么两台机子结果不一样.开始怀疑是linux(服务器)和windows(本机)的差异,但经过对另一台windows机子的测试,结果正常.后就怀疑是环境配置的问题,经过一番google,果然真相大白.问题元凶在php.ini配置中一行:
[coolcode lang=”php”]arg_separator.output = “&”[/coolcode]
将arg_separator.output定义为”&”,重启apache,问题解决!
顺带说下PHP手册的问题,因我用的手册是之前比较经典的《PHP5中文手册文档版》(2006-11-05编译),2年半以前的东东,内容应该停留在PHP 5.1.0的阶段.很多内容已经滞后了.之后下载了陈浩(Haohappy)的《PHP中文手册》(2009-02-15编译),查看http_build_query一节,发现里面出现一行相关提示:
[coolcode lang=”php”]
Note: 用 arg_separator.output 来分隔参数。 [/coolcode]
到官方查看最新手册,发现里面有更详尽阐述,说明在5.1.2版增加了$arg_separator 参数可以解决此问题.看来中文的手册滞后还是很严重,5.1.2应该是一年前发布的,而2009-02-15编译的最新中文手册仍未收录相关内容.
简而言之,遇到PHP函数故障,节省时间的最好解决方法:
1.第一时间到PHP官方查找答案.
2.保证自己手中的PHP手册是最新的.

以上就介绍了http_build_query函数带来的困扰,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号