简体   繁体   English

PHP验证-表单未验证

[英]PHP validation - form not validating

I am a Java guy and started PHP. 我是Java的人,并且开始使用PHP。 This is my first question on PHP. 这是我对PHP的第一个问题。

PLaying with forms. 与表格打交道。 I didn't make it work. 我没有使它工作。 The form just not validating and silently submitting. 该表格只是不进行验证,而是默默地提交。 What could be my mistake? 我的错误可能是什么?

The error messages are not printing up. 错误消息没有打印出来。

<html>
    <head>
        <title></title>
        <link href="css/program-07.css" rel="stylesheet" type="text/css"/>
            <div id="requirements" style="margin: 0 auto; text-align:justify; width:850px;">
                <h1></h1>
        </head>
        <body>
            <nav class="sidenav">
                <header class="w3-container">
                <h3>Navigation</h3>
                </header>
                    <a href="http://lineofcode.com/itse2302-002/itse2302-002-007/">Home</a>     
                    <a href="index.php">Program07</a>
                    <a target="_blank" href="selfprocessor.php">Self Processor</a>
                    <a target="_blank" href="validatecontrols.php">Validate Controls</a>
            </nav>

            <div id="main" style="margin-left:25%">

            <?php
                echo "<h2>Requirement 01 - Datalists + Navigation</h2>";
                echo "<h3>To the left are navigation links to the files in this program, and below (not visible) datalists of the days of the week and months of the year that will be used in requirement 2.";            ?>


                    <datalist id="daysweek">
                        <option value="Monday">
                        <option value="Tuesday">
                        <option value="Wednesday">
                        <option value="Thursday">
                        <option value="Friday">
                        <option value="Saturday">
                        <option value="Sunday">
                    </datalist>

                    <datalist id="monthsyear">
                        <option value="January">
                        <option value="February">
                        <option value="March">
                        <option value="April">
                        <option value="May">
                        <option value="June">
                        <option value="July">
                        <option value="August">
                        <option value="September">
                        <option value="October">
                        <option value="November">
                        <option value="December">
                    </datalist>

            <?php           
                echo "<hr>";

                echo "<h2>Requirement 02 - Datalists</h2>";
                echo "<h3>The two datalists from above are now incorporated into a form that the user can see and interact with.</h3>";
                echo "Input a day of the week and a month of the year.";
            ?> 
                    <form action="daymonth.php" method="get">
                      <input list="daysweek" name="days">
                        <datalist id="day">
                          <option value="Monday">
                          <option value="Tuesday">
                          <option value="Wednesday">
                          <option value="Thursday">
                          <option value="Friday">
                          <option value="Saturday">
                          <option value="Sunday">
                        </datalist>

                        <input list="monthsyear" name="months">
                            <datalist id="month">
                                <option value="January">
                                <option value="February">
                                <option value="March">
                                <option value="April">
                                <option value="May">
                                <option value="June">
                                <option value="July">
                                <option value="August">
                                <option value="September">
                                <option value="October">
                                <option value="November">
                                <option value="December">
                              </datalist>
                        <input type="submit">
                    </form>

            <?php                 
                echo "<hr>";

                echo "<h2>Requirement 03 - Form Processor</h2>";
                echo "<h3>A form processor file named daymonth was created for the form data in requirement 2.  A function called test_input checks the data for safety.</h3>";

                echo "<hr>";

                echo "<h2>Requirement 04 - Favorites Form</h2>";
                echo "<h3>This form includes required fields.</h3>";

                $nameErr = $movieErr = $foodErr = $seasonErr = "";
                $name = $movie = $food = $season = $comment = "";

                if ($_SERVER["REQUEST_METHOD"] == "POST") {
                   if (empty($_POST["name"])) {
                     $nameErr = "Please tell us your name!";
                   } else {
                     $name = test_input($_POST["name"]);
                   }

                   if (empty($_POST["movie"])) {
                     $movieErr = "Please tell us your favorite movie!";
                   } else {
                     $email = test_input($_POST["movie"]);
                   }

                   if (empty($_POST["food"])) {
                     $foodErr = "Please tell us your favorite food!";
                   } else {
                     $website = test_input($_POST["food"]);
                   }

                    if (empty($_POST["season"])) {
                     $seasonErr = "Please tell us your favorite season!";
                   } else {
                     $gender = test_input($_POST["season"]);
                   }

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

            ?>
                <p><span class="error">* required field.</span></p>
                <form method="post" action="favorites.php"> 
                    Name: <input type="text" name="name">
                    <span class="error">* <?php echo $nameErr;?></span>
                    <br><br>
                    Favorite Movie: <input type="text" name="movie">
                    <span class="error">* <?php echo $movieErr;?></span>
                    <br><br>
                    Favorite Food: <input type="text" name="food">
                    <span class="error">* <?php echo $foodErr;?></span>
                    <br><br>
                    Favorite Season:
                    <input type="radio" name="season" value="Spring">Spring
                    <input type="radio" name="season" value="Summer">Summer
                    <input type="radio" name="season" value="Fall">Fall
                    <input type="radio" name="season" value="Winter">Winter
                    <span class="error">* <?php echo $seasonErr;?></span>
                    <br><br>
                    Comments:<br />
                    <textarea name="comment" rows="5" cols="40"></textarea>
                    <br><br>
                    <input type="submit" name="submit" value="Submit"> 
                </form>

               <?php     
                echo "<hr>";

                echo "<h2>Requirement 05 - </h2>";
                echo "<h3></h3>";


                echo "<hr>";

                echo "<h2>Requirement 06 - </h2>";
                echo "<h3></h3>";


                echo "<hr>";

                echo "<h2>Requirement 07 - </h2>";
                    echo "<h3></h3>";


                echo "<hr>";

                echo "<h2>Requirement 08 - </h2>";
                echo "<h3></h3>";

                echo "<hr>";

                echo "<h2>Requirement 09 - </h2>";
                echo "<h3></h3>";


                echo "<hr>";


            ?>
                </div>
            </div>
        </body>
</html>

And my favorites.php 还有我的收藏夹

<head>
    <title>Program 07 - Nicola Stewart</title>
    <link href="css/program-07.css" rel="stylesheet" type="text/css"/>
        <div id="daymonth" style="margin: 0 auto; text-align:justify; width:850px;">
</head>

<body>
    <nav class="sidenav" style="width:25%">
        <header class="w3-container">
        <h3>Navigation</h3>
        </header>
        <a href="http://lineofcode.com/itse2302-002/itse2302-002-007/">Home</a>     
        <a href="index.php">Program07</a>           
  </nav>

    <div id="main" style="margin-left:25%">

        <h2>Requirement 04 - Favorites Form</h2>

        <header class="container">
        <h1>Welcome!</h1>
        </header>
        <div class="container">

        <?php
            $name = $movie = $food = $season = $comment = "";

            if ($_SERVER["REQUEST_METHOD"] == "POST") {
                $name = test_input($_POST["name"]);
                $movie = test_input($_POST["movie"]);
                $food = test_input($_POST["food"]);
                $season = test_input($_POST["season"]);
                $comment = test_input($_POST["comment"]);

            }

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

            echo "<h2>You selected:</h2>";
            echo "<h3>";
            echo "<br>";
            echo $name;
            echo "<br>";
            echo $movie;
            echo "<br>";
            echo $food;
            echo "<br>";
            echo $season;
            echo "<br>";
            echo $comment;
            echo "</h3>";
        ?>

        </div>
    </div>

</body>

You are posting your form data to favorites.php 您正在将表单数据发布到favorites.php

<form method="post" action="favorites.php"> ... </form>

Change it to: 更改为:

<form method="post" action="index.php"> ... </form>

Or move your form validation to favorites.php 或将您的表单验证移至favorites.php

If you want to display your form again, I suggest you move the code in charge of the form's HTML to a file by itself (ie form.php ) and then you can do the following in both index.php and favorites.php : 如果要再次显示表单,建议您将负责表单HTML的代码本身移到文件中(即form.php ),然后可以在index.phpfavorites.php执行以下操作:

include 'form.php'

Note that when you include a PHP file in another, the variables are shared, meaning that you can use/override the variables. 请注意,当您在另一个文件中包含一个PHP文件时,这些变量是共享的,这意味着您可以使用/覆盖这些变量。

(You can also do the include for the header and footer of the website) (您也可以对网站的页眉和页脚进行包含)

EDIT (Answering comment) Update test_data() : 编辑(回答评论)更新test_data()

function test_input($index) {
  if (isset($_POST[$index])) {  // make sure that the index exists in $_POST
    $data = $_POST[$index];
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
  }
  return null;  // or any default value
}

You can use it like so: 您可以这样使用它:

$season = test_input("season");

Personal favorite for getting data from a POST or GET: 从POST或GET获取数据的个人收藏夹:

filter_input() filter_input()

$season = filter_input(INPUT_POST, 'season', FILTER_SANITIZE_SPECIAL_CHARS);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM