gpt4 book ai didi

php - 识别已提交的表单的最佳方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 12:34:41 26 4
gpt4 key购买 nike

目前,当我设计表单时,我希望提交按钮的名称与表单的 ID 相同。然后,在我的 php 中,我只是执行 if(isset($_POST['submitName'])) 以检查是否已提交表单以及已提交哪个表单。

首先,这种方法是否存在安全问题或设计缺陷?

我遇到的一个问题是,当我希望用 javascript 覆盖我的表单以便为用户提供更快的验证时。例如,虽然我显然需要保留服务器端验证,但如果在模糊输入时内联显示错误消息,对用户来说会更方便。此外,最好在单击提交按钮时提供整个表单验证。

因此,当用户单击表单的提交按钮时,我将停止默认操作,进行验证,然后在验证通过时尝试启用传统的提交功能。为此,我使用了 form.submit() 方法,但不幸的是,这不会发送提交按钮变量(因为它应该是 form.submit() 可以被调用无需单击任何按钮)。这意味着我的 PHP 脚本无法检测到表单已提交。

解决此问题的正确方法是什么?似乎标准的解决方案是在通过验证后向表单中添加一个隐藏字段,该字段的名称为表单的 id。然后当调用 form.submit() 时,它会代替提交按钮传递。然而,这个解决方案对我来说似乎很不优雅,所以我想知道我是否应该:

a) 使用替代方法来检测哪个表单已提交,而不依赖于传递提交按钮。如果是这样,还有什么选择?显然,一开始就多一个隐藏字段也好不到哪里去。

b) 使用替代的 Javascript 解决方案,它允许我保留我的非 Javascript 设计。例如,是否有 form.submit() 的替代方法允许我传递额外的数据?

c) 接受它并使用 Javascript 插入一个隐藏字段。

更新:我已经接受了正确的答案,但我只是想在这里澄清我的错误,这样对其他人更有帮助。我使用 Mootools,我非常天真地认为,当我使用 addEvent('submit' ...) 时,我需要立即调用 event.stop() 以防止提交。实际上情况并非如此,我只能在验证失败时调用 event.stop() 。否则,默认提交会像往常一样被触发,并且完全不需要使用 form.submit()。

最佳答案

您可以使用 action=file1.phpaction=file2.php 将表单发送到不同的处理程序。

它们是使用一堆相同的代码处理的吗?将其放入单独的文件中,包括共性,并在每个处理文件中写入独特的位。不要破解,组织。

对于 Javascript 验证,不要停止默认操作然后继续,而是这样做:

if (validation != valid) {
return false;
}

这样,如果 JS 被关闭或验证失败,表单操作/事件是完整的并且它的行为符合预期,否则它会崩溃。当然,当然保留服务器端验证。那是“真正的”验证,客户端只是为了取悦用户并节省他们的时间。永远不要为了你而依赖它。

关于php - 识别已提交的表单的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2663429/

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