检查HTML表单复选框等是否已设置为POST的正确和最安全的方法是什么? - html

自从早期以来,这使我感到困惑。也许这只是在我脑海中,但在我看来,这似乎随着时间的推移而变化,在不同的浏览器之间,甚至可能取决于本地语言/地区。

基本上,每当我需要检查是否已设置“ radio”或“ checkbox”类型的HTML输入时,我总是这样做:

if (isset($_POST['the_name']) && trim($_POST['the_name']))
    // do stuff

这只是确保POST变量能被发送(就我所知,它本身并不意味着它实际上已被检查/选中,因为它的“值”可以是一个空字符串),并且它是其他而不是''(空字符串)。似乎已经使用了很长时间,但是我有两个问题:

它很丑。我需要将其抽象为一个函数,但是首先我想知道它是一个好主意还是某种错误。
它假设任何非空字符串值都表示“选中”或“选定”,而标准可能会说一个特定的字符串值,例如“ on”,或者取决于语言/地区,可能是任意数量的此类字符串。

是否存在我的上述代码崩溃的情况?浏览器是否曾经提交过POST表单,其中包含在HTTP请求中没有用户输入/选择的名称?还是在POST blob中存在名称,是否意味着该“字段”已被主动更改/设置/检查/选择?

参考方案

复选框背后的想法是,仅当提交表单时选中了复选框,该值才被发送到服务器。该值可以是任何值,甚至可以是空字符串。只要该字段是传输表单的一部分,就表示该框已被打勾。

value属性是所有<input>共享的属性;但是,它对于checkbox类型的输入有特殊用途:提交表单时,仅将当前选中的复选框提交给服务器,并且报告的值是value属性的值。如果未另外指定value,则默认情况下为字符串on

这意味着您可以具有如下形式:

<form action="" method="get">
<input type="checkbox" name="c1" value="">
<input type="submit" value="Send">
</form>

如果提交时未选中该复选框,则$_GET将为空数组。
如果选中此复选框,则$_GET的值为:

array('c1' => '');

要检查发送表单时是否在复选框上打勾,您只需要isset()

if (isset($_POST['c1']) {
    // The box was checked!
}

有时您想为复选框分配value属性。在这种情况下,可以对isset()函数??使用简写运算符。

// Create a variable from the checkbox value or assign an empty string if the box was not checked
$nyCheckbox = $_POST['c1'] ?? '';

如何向用户隐藏表单操作 - php

我想从浏览器隐藏表单动作。有什么办法可以隐藏这个吗?<form action='http://mydomain /secure/resetPassword' method='post'> <input required type='password' name='pss&…

如何启用“更多”搜索结果? - php

我是Windows的C#开发人员,我不了解Web编程。我用Java开发了一个特殊的搜索引擎。我想为其创建一个php接口。现在,我设法通过Web服务连接php和Java。我看了一些有关创建搜索引擎的教程,并且对应该怎么做略有想法,但是我不知道该如何处理某些问题。这是我要实现的方案:带有搜索框的索引页面,用户在该页面中键入搜索查询,显示一些结果,如果用户向下滚动…

如何使用php检测字符串上的html标签? - php

我需要知道html的哪个标签有一个字符串,例如:$string = '<a href="http://example.com/">Hello World!</a>' $result= 'a'; PHP中有功能吗? 参考方案 您可以使用preg_match: $result =…

PHP如何在PHP中执行其他文件扩展名? - php

我试图找到设置,我可以让PHP在PHP引擎中执行其他文件扩展名吗?任何想法? 参考方案 如果您的意思是exec()将执行一个外部程序。您可以捕获输出,但是我不确定这是否就是“进入PHP引擎”的意思。http://php.net/manual/en/function.exec.php编辑:如果您打算将其他文件扩展名作为PHP运行,则可以编辑.htaccess以…

Ajax破坏页面上的jQuery脚本 - php

我目前正在一个网站上找到,您可以在这里找到http://steadfastdesignfirm.com/rgw/。我使用了我在CSS-Tricks网上发现的ajax效果来动态加载另一个php页面的内容,并在单击导航选项卡时对其进行动画处理(淡入和淡出)。如您所见,我已经设法使它正常工作(请注意,只有两个工作页面是“ Home”和“ Experience RG…