【问题标题】:PHP Form Ignoring Required FieldPHP表单忽略必填字段
【发布时间】:2016-09-08 20:20:05
【问题描述】:

我有一个 php 表单,但即使未填写必填字段,它也会提交。谁能弄清楚为什么?我不是 php 开发人员,不确定为什么它不起作用。请告诉我在哪里添加您可能提供的任何代码 sn-ps,因为这对我来说是新的。为了证明我已经尝试过,并且在一定程度上知道我在说什么,我在这里只展示应该与问题相关的代码。

<?php

 require 'xxxxxxx.php';


$fnameErr = "";


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


        if (empty($_POST["fname"])) {
    $fnameErr = "Name is required";
    exit();
}else {
   $fname = check_input($_POST['fname']);  
  }


        $lname = check_input($_POST['lname']);  
        $phone = check_input($_POST['phone']);  
        $email = check_input($_POST['email']);  


 $sql = " INSERT INTO QuotesInfo ( fname, lname, phone, email, doservice, etype, rtype, 
 ptime, paddress, rtime, daddress, vtype, pcount, addetails, heardwhere )  
 VALUES ('".$_POST["fname"]."','".$_POST["lname"]."','".$_POST["phone"]."','
".$_POST["email"]."','".$_POST["doservice"]."','".$_POST["etype"]."','".$_POST["rtype"]."','".$_POST["ptime"]."','
".$_POST["paddress"]."','".$_POST["rtime"]."','".$_POST["daddress"]."','".$_POST["vtype"]."','".$_POST["pcount"]."','
".$_POST["addetails"]."','".$_POST["heardwhere"]."') "; 


$msg= $fname . " " . $lname . "\r\n" . $phone . "\r\n" . $email . "\r\n" . $doservice . "\r\n" . $etype . "\r\n" . $rtype . "\r\n" . $ptime . "\r\n" . $paddress . "\r\n" . $rtime . "\r\n" . $daddress . "\r\n" . $vtype . "\r\n" . $pcount . "\r\n" . $addetails . "\r\n" . implode(",  ", $heardwhere);
$headers = "From: $from";


<form id="form1" name="form1"  method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label for="fname">First Name</label><input type="text" name="fname" id="fname" />
<span class="error">* <?php echo $fnameErr;?></span>
<br class="clear" /> 

【问题讨论】:

  • 您的网页是否有某种 JS 验证 - 前端?
  • 不,仅对特殊字符进行验证

标签: php forms validation post required


【解决方案1】:

您的代码中有一堆语法错误。这是一个清理后的版本,请在使用前验证:

<?php

    require 'xxxxxxx.php';


    $fnameErr = "";


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

        if (empty($_POST["fname"])) {

            $fnameErr = "Name is required";

            exit();

        } else {

            $fname = check_input($_POST['fname']);  

        }

        $lname = check_input($_POST['lname']);  

        $phone = check_input($_POST['phone']);  

        $email = check_input($_POST['email']);  


        $sql = "INSERT INTO QuotesInfo 
                ( fname, lname, phone, email, doservice, etype, rtype, ptime, paddress, rtime, daddress, vtype, pcount, addetails, heardwhere )  
                VALUES 
                ('".$_POST["fname"]."',
                '".$_POST["lname"]."',
                '".$_POST["phone"]."','
                '".$_POST["email"]."',
                '".$_POST["doservice"]."',
                '".$_POST["etype"]."',
                '".$_POST["rtype"]."',
                '".$_POST["ptime"]."',
                '".$_POST["paddress"]."',
                '".$_POST["rtime"]."',
                '".$_POST["daddress"]."',
                '".$_POST["vtype"]."',
                '".$_POST["pcount"]."',
                '".$_POST["addetails"]."',
                '".$_POST["heardwhere"]."')"; 

        $msg= $fname . " " . $lname . "\r\n" . $phone . "\r\n" . $email . "\r\n" . $doservice . "\r\n" . $etype . "\r\n" . $rtype . "\r\n" . $ptime . "\r\n" . $paddress . "\r\n" . $rtime . "\r\n" . $daddress . "\r\n" . $vtype . "\r\n" . $pcount . "\r\n" . $addetails . "\r\n" . implode(",  ", $heardwhere);

        $headers = "From: $from";

?>


    <form id="form1" name="form1"  method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
        <label for="fname">First Name</label>
        <input type="text" name="fname" id="fname" required />
        <span class="error">* <?php echo $fnameErr;?></span>
        <br class="clear" /> 
    </form>
<?php } ?>

关于required 验证,您需要将required 属性添加到所需的表单元素。

【讨论】:

  • 实际上,根据此示例,它应该可以在不向表单元素添加 required 的情况下工作:w3schools.com/php/php_form_required.asp 如果我将 required 添加到表单元素,它无需更改语法即可工作。我也能够让它工作,但我认为它可能不太安全或其他什么,因为 w3schools 没有显示该方法?
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多