2016-05-18 109 views
1

我是新來的PHP。目前我正在關注本網站上的教程:tutoialspoint。該代碼也在該網站上。顯示在網頁上的PHP代碼

我面臨的問題是行66上的行爲標記。我因爲它而在我的表單頁上獲得了額外的字符。另外,當我提交表單時,它會轉到「未找到」頁面。 form page submission page

我可以通過留下行動標籤空白來解決這個問題。但是,我想知道爲什麼這個錯誤發生在默認代碼中。

<html> 
    <head> 
     <style> 
     .error {color: #FF0000;} 
     </style> 
    </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"]); 

       // check if e-mail address is well-formed 
       if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
        $emailErr = "Invalid email format"; 
       } 
      } 

      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"]); 
      } 
     } 

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

     <h2>Absolute classes registration</h2> 

     <p><span class = "error">* required field.</span></p> 

     <form method = "post" action = ">?php 
     echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
     <table> 
      <tr> 
       <td>Name:</td> 
       <td><input type = "text" name = "name"> 
        <span class = "error">* <?php echo $nameErr;?></span> 
       </td> 
      </tr> 

      <tr> 
       <td>E-mail: </td> 
       <td><input type = "text" name = "email"> 
        <span class = "error">* <?php echo $emailErr;?></span> 
       </td> 
      </tr> 

      <tr> 
       <td>Time:</td> 
       <td> <input type = "text" name = "website"> 
        <span class = "error"><?php echo $websiteErr;?></span> 
       </td> 
      </tr> 

      <tr> 
       <td>Classes:</td> 
       <td> <textarea name = "comment" rows = "5" cols = "40"></textarea></td> 
      </tr> 

      <tr> 
       <td>Gender:</td> 
       <td> 
        <input type = "radio" name = "gender" value = "female">Female 
        <input type = "radio" name = "gender" value = "male">Male 
        <span class = "error">* <?php echo $genderErr;?></span> 
       </td> 
      </tr> 

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

     </table> 

     </form> 

     <?php 
     echo "<h2>Your given values are as:</h2>"; 
     echo $name; 
     echo "<br>"; 

     echo $email; 
     echo "<br>"; 

     echo $website; 
     echo "<br>"; 

     echo $comment; 
     echo "<br>"; 

     echo $gender; 
     ?> 

    </body> 
</html> 
+3

更改'>?'爲'<?'的'<形式方法=「post」action =「>?php echo htmlspecialchars($ _ SERVER [」PHP_SELF「]);?>」> – Thamilan

回答

3

這個代碼 <form method = "post" action = ">?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

<form method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
1

你的形式看起來應該像這樣 <form method = "post" action = "<?= htmlspecialchars($_SERVER["PHP_SELF"]) ?>">