2016-10-05 17 views
0

我有3个字段验证正确。提交文件正确发布到文本文件。但是,他们发布 - (如我在代码中分离每个部分),即使点击提交按钮而没有填写信息。不应该有任何空的信息,只有2 - - 打印到文本文件,而不是先填写3个字段。我该如何解决这个问题?对不便之处,我在另一篇文章中回答了我自己的问题,并能解决这个问题。感谢您的时间。我有3个字段验证正确。提交文件正确发布到文本文件。但

这里是我的代码

<?php 
    if(isset($_POST['name'], $_POST['email'], $_POST['website'])) { 
     if(empty($_POST['name'])) { 
      $errors[] = "Name is required"; 
     } else{ 
      $name = htmlentities($_POST['name']); 
      $name = test_input($_POST['name']); 
      if (!preg_match("/^[a-zA-Z ]*$/",$name)) { 
       $errors[] = "Only letters and white space allowed for the name"; 
      } 
     } 
     if(empty($_POST['email'])) { 
      $errors[] = "Please provide your Email address."; 
     } else if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ===  
    false){ 
      $errors[] = "Your Email is not valid."; 
     } else { 
      $email = htmlentities($email); 
     } 
     if(empty($_POST['website'])) { 
      $errors[] = "Please provide your company URL."; 
     } else{ 
      $website = htmlentities($_POST['website']); 
      $website = test_input($_POST['website']); 
      if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) { 
       $errors[] = "Please provide a valid URL for your company."; 
      } 
     } 
    } 

    function test_input($data) { 
     $data = trim($data); 
     $data = stripslashes($data); 
     $data = htmlspecialchars($data); 
     return $data; 
    } 

    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $website = $_POST['website']; 
    $data = $name . " - " . $email . " - " . $website; 
    $file = "textfile.txt"; 

    if($_POST){ 
     file_put_contents($file, $data . PHP_EOL, FILE_APPEND); 
    } 
?> 

在HTML我有

<?php 
    if(empty($errors) === false){ 
    ?> 
    <ul> 
    <?php 
    foreach($errors as $error){ 
    echo "<li>",$error,"</li>"; 
    } 
    ?> 
    </ul> 
    <?php 
    }else{ 
    if(isset($name, $email, $website)){ 
    echo "<b>Thank you for your submission.</b>"; 
    } 
    } 
    ?> 
    </div> 
    <div class="wrapper w3-round-xlarge"> 
    <div class="formtitle w3-round-xlarge">Thank you for filling in all fields below 
    </div> 
    <div class="formwrapper w3-round-xlarge"> 
    <form name="mobile" id="mobile" method="post" enctype="multipart/form-data" action="data.php"><br/> 

等(HTML文档的开始和结束正确,谢谢为你的帮助。

回答

1

如果所有三个输入都是必需的,请将它们放入html输入中。

<Input name="email" required /> 

对每个输入都这样做。这将不允许在所有字段被提交之前处理表格。

0

很抱歉给任何花时间阅读我的文章的人带来不便。我能够通过从我的html上面的php代码中删除以下内容并更改以下内容来修复问题

if($_POST){ 
    file_put_contents($file, $data . PHP_EOL, FILE_APPEND); 
    } 

    to ... 
    <?php 
    }else{ 
    if(isset($name, $email, $website)){ 
    file_put_contents($file, $data . PHP_EOL, FILE_APPEND); 
    echo "<b>Your submission has been sent.</b>"; 
    } 

    and adding it to the html div area