簡體   English   中英

我有3個字段正確驗證。 提交內容正確發布到文本文件中。 然而

[英]I have 3 fields validating correctly. The submissions post to a text file correctly. However

我有3個字段正確驗證。 提交內容正確發布到文本文件中。 但是,即使單擊提交按鈕而不填寫信息,它們也會張貼--(就像我在代碼中分隔每個部分一樣)。 不應僅將2--打印到文本文件中的任何空白信息,而無需先填寫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文檔正確地開始和結束。感謝您的幫助。

如果需要全部三個輸入,請將必需輸入到html輸入中。

<Input name="email" required />

對每個輸入執行此操作。 在填寫所有字段之前,這將不允許處理表格。

很抱歉給您花時間閱讀我的帖子給您帶來不便。 我能夠通過簡單地從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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM