自从早期以来,这使我感到困惑。也许这只是在我脑海中,但在我看来,这似乎随着时间的推移而变化,在不同的浏览器之间,甚至可能取决于本地语言/地区。
基本上,每当我需要检查是否已设置“ 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…