在未验证输入时停止表单提交(一页PHP表单和处理器)

时间:2017-04-24 03:40:42

标签: php html validation form-submit requiredfieldvalidator

我有一个获取数据的PHP文件,然后使用$ _POST方法显示它。我知道如何使用PHP验证表单的输入:

if($data = "") {
echo "This Field Is Required";
}

但我不知道如何避免提交数据的表单。我是否在if语句中添加了一个新行?我看到了与标题有关的事情:这篇文章中的位置 - Stop Submit With Empty Input Values Using PHP,但我不认为这对我有用,因为我的表单和处理器都在一个文件中。我确信这很简单,但在浏览网页时找到任何答案都非常困难。感谢您的帮助:))

2 个答案:

答案 0 :(得分:1)

这是前端(客户端验证),您还需要在PHP(服务器端)验证表单。但是如果没有验证,使用html5和js可以阻止表单提交。

对于php,您需要在服务器端验证。如果无效,则不保存到数据库,也不应重定向用户。返回一些错误消息,询问更多数据/必填字段。

示例:

$error = [];

if ($offer['year'] < 2014) {
    $error['year'] = 'must be later than 2014';
}
...

if (count($error)) {
   echo "your error msg here"
} else {
   $db->insert('formtable', $form);
}

$(document).ready(function() {
  // loader (after submit)
  $('button[type="submit"]').click(function(e) {
    let formValidity = $('#myform')[0].checkValidity();
    if (formValidity) {
      console.log('Submitted yep!');
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<form id="myform">
  <input type="text" value="" required>
  <button type="submit" value="submit">SUBMIT</button>
</form>
<div id="other">
  Trigger the handler
</div>

答案 1 :(得分:0)

以下是使用php验证表单的简单示例。

Php:

$con = mysqli_connect("localhost","root","","db");

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

if (isset($_POST['submit'])) {

    if (isset($_POST['submit'])) {
        $fn = mysqli_real_escape_string($con,$_POST['fn']);
        $ln = mysqli_real_escape_string($con,$_POST['ln']);
        $tnc = mysqli_real_escape_string($con,$_POST['tnc']);

        // validation
        if (!empty($fn && $ln)) {
            if ($tnc == 1) {
                echo "Succeed.!";
            }else{
                echo "You must Accept Out T&C.!";
            }
        }else{
            echo "Please fill the required field.!";
        }
    }
}

HTML:

<form action="" method="post">
    <input type="text" name="fn" />
    <input type="text" name="ln" />
    <input type="checkbox" name="tnc" value="1" >Accept T&C.</input>
    <input type="submit" name="submit" />
</form>

这可能就是你想要的。