PHP单页表单验证HTML-表单未验证

PHP单页表单验证HTML-表单未验证,php,html,Php,Html,PHP部分,其中变量被初始化并设置为空。以及post方法和isset函数 函数似乎是正确的,运行代码时没有错误。但是,当用户提交所有内容时,不会处理任何内容。这只是代码的一小部分 <?php //define variables and set them to empty values $fname_error= $phone_error= $address1_error= $address2_error= $city_error= $state_error= $zipcod

PHP部分,其中变量被初始化并设置为空。以及post方法和isset函数

函数似乎是正确的,运行代码时没有错误。但是,当用户提交所有内容时,不会处理任何内容。这只是代码的一小部分

<?php


//define variables and set them to empty values    

$fname_error= $phone_error= $address1_error= $address2_error= $city_error= $state_error= $zipcode_error= "";

$fname= $phone= $address1= $address2= $city= $state= $zipcode= "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["fname"])) {
        $fname_error = "Missing";
    }
    else {
        $fname = test_input($_POST["fname"]);
        //now we check to see that the name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/",$fname)) {
            $fname_error = "Please use letters and white space only";
        }
    }

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

?>

Html部分:

                               <div class="userinput">
                                    <label for="fname"><b>First Name</b></label>
                                    <input type="text" name="fname" value="<?php 
                                         echo $fname ?>">
                                    <span class="error">
                                        <?php echo $fname_error;?></span>
                                </div>

名字

关闭条件请求\u方法。 您的代码应该如下所示:

 <!DOCTYPE HTML>  
  <html>
   <head>
    <style>
        .error {color: #FF0000;}
    </style>
</head>
<body>  

    <?php
  //define variables and set them to empty values    

    $fname_error = $phone_error = $address1_error = $address2_error = $city_error = $state_error = $zipcode_error = "";

    $fname = $phone = $address1 = $address2 = $city = $state = $zipcode = "";
    //flag to validate and allow SQL insert if true
    $valid=true;
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if (empty($_POST["fname"])) {
            $fname_error = "Missing";
            $valid=false;
        } else {
            $fname = test_input($_POST["fname"]);
            //now we check to see that the name only contains letters and whitespace
            if (!preg_match("/^[a-zA-Z ]*$/", $fname)) {
                $valid=false;
                $fname_error = "Please use letters and white space only";
            }
        }
    }
    //filter your input for security reason
    function test_input($data) {
        $data1 = trim($data);
        $data2 = stripslashes($data1);
        $data3 = htmlspecialchars($data2);
        return $data3;
    }
    if($valid){
        //Add you insert SQL
    }
    ?>

    <h2>PHP Form Validation Example</h2>
    <p><span class="error">* required field</span></p>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">  
        <label for="fname"><b>First Name</b></label>
        <input type="text" name="fname" value="<?php echo $fname ?>">
        <span class="error">
            <?php echo $fname_error; ?></span>
        <br><br>

        <input type="submit" name="submit" value="Submit">  
    </form>

    <?php
    //For testing porpuses:
    echo "<h2>Your Input:</h2>";
    echo $fname;
    ?>

</body>

.错误{color:#FF0000;}
PHP表单验证示例
*必填字段


函数测试输入前缺少}当用户单击页面底部的提交按钮时,不会保存和提交任何输入或运行函数(如果语句、测试输入等)。单击提交时不会发生任何事情。然而,当用户没有输入任何内容或使用此if(strtoupper($\u SERVER['REQUEST\u METHOD'])===='POST')的语法无效时,应该会弹出一条错误消息,这可能是因为您的PHP抛出了一些您在屏幕上看不到的ERORR。临时激活错误报告:
错误报告(E_ALL);ini设置(“显示错误”,1)。此外,您还应该处理
preg\u match(..)
调用成功时发生的情况。尝试了所有这些建议后,什么也没发生。这就好像它甚至没有注册php部分一样。也许我忘了什么或者我的动作不对。