gpt4 book ai didi

php - 为什么 Firefox 从 HTML 表单中删除/忽略隐藏的输入值?

转载 作者:行者123 更新时间:2023-11-28 01:27:35 28 4
gpt4 key购买 nike

我有一个 HTML 表单,它使用隐藏的输入来管理 PHP 处理脚本中的行为。

在浏览器测试中,我发现该表单在 Chrome 和 IE 中完美运行,但在 Firefox 中存在问题。

Firefox 浏览器(使用 39.0)移除了隐藏的输入值。它们完全消失,只留下 value=""。这反过来又弄乱了我的 PHP。

我广泛搜索了有关此问题的信息,但一无所获。

为什么 Firefox 会删除(或忽略)我的 HTML 表单中隐藏的输入值?

在原始文件中 enter image description here

在 Chrome 开发者工具中 enter image description here

在 Firefox 检查器中 enter image description here

更新(基于发表的评论)

浏览器测试。该表单已经在所有主要浏览器(包括桌面版和移动版)上进行了测试。该表单在所有浏览器(包括 Firefox 移动版)中都能完美运行,但无法在 Firefox 桌面版 (39.0) 中完全运行,因为隐藏的输入值已被删除。

更新 2

重新启动并重新安装 Firefox 未能解决问题。

更新 3

已删除所有客户端脚本并检查 HTML 验证(无错误)。问题仍然存在。

更新 4

这似乎是与 Firefox 缓存数据和处理 POST 请求的方式有关的问题。

当我“清除所有历史记录”(包括 cookie、缓存等)时,表单按预期工作...一次。

在所有后续提交中,value 属性的值为空,并且没有数据传递给 PHP,直到我再次“清除所有历史记录”。

这在其他浏览器中不会发生。

最佳答案

我遇到了完全相同的问题。没有使用客户端脚本。我将隐藏字段嵌套在一个 div 中,然后一切正常。

这有效:

<div>
<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">
</div>

这复制了帖子中描述的确切行为:

<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>"name="_token">

上述任一变体都适用于 Chrome。问题仅出现在桌面 Firefox 63.0.1(64 位)上。

更新(2018-11-15)实际上在我的情况下,问题是 HTML 格式不正确(name 属性之前没有空格)。看来 Chrome 可以容忍这一点,而 Firefox 则不那么容忍。 Firefox 提交一次该值,除非缓存被清除,否则不会再次提交。更正 HTML 更正了 Firefox 遇到的这种古怪行为。更正后的 HTML:

<input type="hidden" value="<?=($_SESSION['CSRF-TOKEN'] ?? 'token')?>" name="_token">

关于php - 为什么 Firefox 从 HTML 表单中删除/忽略隐藏的输入值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495222/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com