使用单独的html和php文件提交之前的PHP表单验证

时间:2016-03-20 17:44:29

标签: php html

我正在做一项任务,我需要使用单独的html和php文件,但我无法理解如何验证我的表单输入,因为我发现所有示例都有html和php在一个文件中。

我一直关注w3schools上的例子:http://www.w3schools.com/php/php_form_validation.asp

我的w3_example.html:

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

<?php
// define variables and set to empty values
function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>

<h2>PHP Form Validation Example</h2>
<p><span class="error">* required field.</span></p>
<form method="post" action="w3_example.php"> 
   Name: <input type="text" name="name">
   <span class="error">* <?php echo $nameErr;?></span>
   <br><br>
   E-mail: <input type="text" name="email">
   <span class="error">* <?php echo $emailErr;?></span>
   <br><br>
   Website: <input type="text" name="website">
   <span class="error"><?php echo $websiteErr;?></span>
   <br><br>
   Comment: <textarea name="comment" rows="5" cols="40"></textarea>
   <br><br>
   Gender:
   <input type="radio" name="gender" value="female">Female
   <input type="radio" name="gender" value="male">Male
   <span class="error">* <?php echo $genderErr;?></span>
   <br><br>
   <input type="submit" name="submit" value="Submit"> 
</form>

</body>
</html>

我的w3_example.php:

<!DOCTYPE HTML> 
<html>
<head>
</head>
<body> 

<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
     $nameErr = "Name is required";
   } else {
     $name = test_input($_POST["name"]);
   }

   if (empty($_POST["email"])) {
     $emailErr = "Email is required";
   } else {
     $email = test_input($_POST["email"]);
   }

   if (empty($_POST["website"])) {
     $website = "";
   } else {
     $website = test_input($_POST["website"]);
   }

   if (empty($_POST["comment"])) {
     $comment = "";
   } else {
     $comment = test_input($_POST["comment"]);
   }

   if (empty($_POST["gender"])) {
     $genderErr = "Gender is required";
   } else {
     $gender = test_input($_POST["gender"]);
   }
}




echo "<h2>Your Input:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $website;
echo "<br>";
echo $comment;
echo "<br>";
echo $gender;

?>
</body>
</html>

我现在在此行上收到“调用未定义函数test_input()”错误$ name = test_input($ _ POST [“name”]);在w3_example.php中

1 个答案:

答案 0 :(得分:4)

  

只是小费!因为你按照我的想象学习,所以一直关心你的学习地点。 w3schools没有很好的质量   码。从示例中使用http://php.net/manual/en/tutorial.forms.php   这是官方的PHP文档。他们的示例代码,评论   等等远远好于w3schools。

我再次检查了您的示例代码:

创建2个文件:

  1. index.html / index.php(在此示例中,如果它是.html或.php格式,则不关心。
  2. handler.php
  3. 您的第一个文件: index.html / index.php

    <!DOCTYPE HTML>
    <html>
    <head>
    </head>
    <body>
    
    <h2>PHP Form Validation Example</h2>
    <form method="post" action="handler.php">
       Name: <input type="text" name="name">
       <br><br>
       E-mail: <input type="text" name="email">
       <br><br>
       Website: <input type="text" name="website">
       <br><br>
       Comment: <textarea name="comment" rows="5" cols="40"></textarea>
       <br><br>
       Gender:
       <input type="radio" name="gender" value="female">Female
       <input type="radio" name="gender" value="male">Male
       <br><br>
       <input type="submit" name="submit" value="Submit">
    </form>
    
    </body>
    </html>
    

    您的第二个文件: handler.php

    <?php
    // define variables and set to empty values
    $name = $email = $gender = $comment = $website = "";
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
       $name = test_input($_POST["name"]);
       $email = test_input($_POST["email"]);
       $website = test_input($_POST["website"]);
       $comment = test_input($_POST["comment"]);
       $gender = test_input($_POST["gender"]);
    }
    
    function test_input($data) {
       $data = trim($data);
       $data = stripslashes($data);
       $data = htmlspecialchars($data);
       return $data;
    }
    
    echo "<h2>Your Input:</h2>";
    echo $name;
    echo "<br>";
    echo $email;
    echo "<br>";
    echo $website;
    echo "<br>";
    echo $comment;
    echo "<br>";
    echo $gender;
    ?>
    

    此选项会在表单中以不同的页面URL显示您的输入。

    那会有效!

    顺便说一下,我真的不喜欢那个糟糕的示例代码。 请使用:

    <?php
    // define variables and set to empty values
    $name = $email = $gender = $comment = $website = "";
    
    if (isset($_POST["submit"])){
           $name = test_input($_POST["name"]);
           $email = test_input($_POST["email"]);
           $website = test_input($_POST["website"]);
           $comment = test_input($_POST["comment"]);
           $gender = test_input($_POST["gender"]);
    
            echo "<h2>Your Input:</h2>";
            echo $name;
            echo "<br>";
            echo $email;
            echo "<br>";
            echo $website;
            echo "<br>";
            echo $comment;
            echo "<br>";
            echo $gender;
    
        }
    
    function test_input($data) {
       $data = trim($data);
       $data = stripslashes($data);
       $data = htmlspecialchars($data);
       return $data;
    }
    

    而不是

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
       $name = test_input($_POST["name"]);
       $email = test_input($_POST["email"]);
       $website = test_input($_POST["website"]);
       $comment = test_input($_POST["comment"]);
       $gender = test_input($_POST["gender"]);
    }