2016-05-18 111 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"]) ?>">