基本上我正在使用本教程:HTML FORM
一切正常,但我发现一个流程是,每个人都可以看到URL
的{{1}},在这种情况下为“ url:“ contact_mail.php””
当有人键入.php
并按Enter时,是否可以保护表单免于空白提交。
示例:www.mywebsite.com/contact_mail.php
谢谢!
答案 0 :(得分:4)
首先,您可以在客户端的必填字段上使用required
属性:
<input type="text" name="mandatory_field" required>
但是如果用户修改了表单,您将需要验证服务器端。您可以在任何变量($_POST
或$_GET
)上使用empty()
:
if (empty($_POST['mandatory_field'])) {
// print error message or redirect to form page
}
您可以使用isset()
来验证是否提交了字段。您的验证可能是:
if (!isset($_POST['mandatory_field']) || empty($_POST['mandatory_field'])) {
// print error message or redirect to form page
}
其他情况:
如果所有字段都是必填字段,则可以使用in_array()
进行检查:
if (in_array(false, $_POST)) {
// print error message or redirect to form page
}
如果要进行各种数据验证,这就是我用来处理表单的方法:
$errors = [
'empty field' => empty($_POST['field']),
'another error message' => $another_condition
];
if (in_array(true, $errors)) {
$error_message = array_search(true, $errors);
// print or redirect, and you can tell the user what is wrong
}
答案 1 :(得分:2)
假设您具有以下表格;
<form action="savething.php" method="GET" name="mythingform">
<input name="thing1" type="text" />
<input name="thing2" type="text" />
<input type="button" value="Submit" onclick="validateAndSubmit()" />
</form>
在此,我使用了一个按钮来代替提交类型输入。这意味着,页面提交之前需要进行一些操作,例如;
<script>
function validateAndSubmit()
{
var thing1 = document.getElementsByName("thing1")[0];
var thing2 = document.getElementsByName("thing2")[0];
if (thing1.value.length > 0 && thing2.value.length > 0)
{
document.forms["mythingform"].submit();
}
}
</script>
此处的JavaScript函数仅在输入不为空时才调用表单上的提交
在阻止某人未经允许的情况下访问它;
<?php
if (!isset($_REQUEST['myvariable'] || empty($_REQUEST['myvariable']))
die("Please make sure the form has been submitted properly with all required information");
在此使用die
,将进一步终止脚本的执行,您也可以使用exit
,并且两者都允许您在停止过程中附加“终止消息”
$_REQUEST
不是最安全的选项,但它允许您使用表单中的GET或POST方法来检索和使用数据
答案 2 :(得分:0)
您可以使用Java脚本验证或jquery验证验证来提交空白表单,也可以使用php验证来避免空白表单提交。
简单的例子:
var x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
验证库 https://jqueryvalidation.org/documentation/
示例:
$("#myform").validate({
submitHandler: function(form) {
// some other code
// maybe disabling submit button
// then:
$(form).submit();
}
});
希望对您有帮助。
答案 3 :(得分:0)
(1)不应有人在浏览器中“仅输入” URL的危险-后端代码应该仅响应POST,而不响应GET(在浏览器中输入URL会使它发出GET请求提供给定的网址。
(2)引用的示例代码已经包含客户端验证(包括对空字段的检查),因此,如果有人合法使用您的输入表单,则他们将无法发送空白表单。
(3)剩下的一切就是保护后端代码免于意外或恶意张贴空表格(以及任何其他不受欢迎的用途)。示例PHP代码没有任何检查,您应该添加一些检查-如此处另一个答案中建议的isset(...)
或empty()
检查)。
答案 4 :(得分:-2)
使用if(空($ _POST ['your_field']))
因此,如果发布或获取查询到达您的php脚本,则empty将检查该字段是否为空。
是这样的:
if (empty($_POST['your_field'])) {
echo 'Field xxx should not be empty';
}
尽管最好使用isset,因为如果仅访问链接,则POST和GET变量为空。 因此,这样的事情有点简单:
if (!isset($_POST['your_field']) || empty($_POST['your_field'])) {
echo 'Field xxx should not be empty';
}
我认为我不需要单独的GET代码,但是可以。
if (!isset($_GET['your_field']) || empty($_GET['your_field'])) {
echo 'Field xxx should not be empty';
}