Why would some $_POST variables go missing for a form with PHP?
有时,实际上一天一次,我的Web应用程序的用户正在提交某种表单,该表单具有大约十二个表单字段,其中一半是隐藏字段,而一半的$ _POST数据根本不存在于处理脚本中。请注意,不存在的字段位于表单的最底部。我知道这是因为这会引发致命错误,并且会向我发送一封包含帖子数据的电子邮件。
当然,我和团队中的任何开发人员都无法重现该问题。
我正在使用一个名为Uploadify的库来显示进度表,因此Flash参与了该过程。这就是流程...没有人有任何想法,为什么一些帖子数据会被清除掉?
- 用户访问我正在使用的CMS中页面的编辑屏幕。
- 页面的记录ID被作为隐藏值放入表单中。
- 用户单击Uploadify浏览按钮并选择一个文件(仅允许单个文件选择)。
- 用户单击我的表单的Submit按钮。
- jQuery截获表单提交操作,触发Uploadify开始上载,并为提交操作返回false(手动取消表单提交事件,以便Uploadify可以接管)。
- Uploadify上传到自定义流程脚本。
- Uploadify完成上传并触发Javascript完成回调。
- Javascript回调调用$('#myForm')。submit()提交表单。
在多种浏览器(Firefox 3.5、3.6,Safari,Internet Explorer 7、8)和多种平台(Mac OS 10.5、10.6和Windows XP,7)上会发生这种情况。
我的第一个想法是无效的html。您最后说了隐藏的字段。也许嵌入其中的某些数据没有正确准备或转义。
由于您确实获得了一些数据,因此我可能会开始使用jquery创建某种形式的其知道的表单元素和值的校验和,并将此聚合校验和与表单发布一起发送。取决于您是否遇到问题,这可能很容易说明您的问题。
您也可以尝试找出浏览器发送的http请求的内容长度。也许更改网络服务器日志配置。它可能正在发送数据,并且服务器/脚本处理不正确。
您是否正在使用javascript对数据做任何事情?如果是这样,则某些用户可能未启用js,并可能导致了问题。尝试在禁用javascript的情况下运行表单。
编辑:有助于阅读整个帖子。是的,很有可能人们正在运行未启用JavaScript的表单。
文件上载(Uploadify)的目标脚本是否与