1

I am new to php. Currently I am following the tutorial on this website:tutoialspoint. The code is also on that website.

The problem I am facing is with the action tag on line 66. I am getting extra characters on my form page because of it. Also, when I submit the form it goes to "Not Found" page. form page submission page

I can fix this by leaving action tag blank. However, I would like to know why this error is happening with the default code.

    <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>
1
  • 3
    Change >? to <? in <form method = "post" action = ">?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> Commented May 18, 2016 at 5:25

2 Answers 2

3

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

would be

 <form method = "post" action = "<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Sign up to request clarification or add additional context in comments.

Comments

1

Your form should look like this <form method = "post" action = "<?= htmlspecialchars($_SERVER["PHP_SELF"]) ?>">

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.