Home > Mobile >  My form is not working, please do tell me where it went wrong(PHP validation)
My form is not working, please do tell me where it went wrong(PHP validation)

Time:12-04

I am a newbie. I would like to know where in my code the form went wrong.

<?php

if(isset($_POST['submit'])) {
  $arrayName = array("TeacherA", "TeacherB", "TeacherC" , "TeacherD", "TeacherE");

  $minimum = 5;
  $maximum = 10;

  $name = $_POST['yourName'];
  $email = $_POST['yourEmail'];

  if(strlen($name) < $minimum) {
    echo "Your name should be longer than 5 characters";
  } 
  
  if(strlen($name) > $maximum) {
    echo "Your name should not be longer than 10 characters";
  } 
  
  if(!in_array($name,$arrayName)){
    echo "Please do register with us before you can login";
  } else {
    echo "Welcome!";
  }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Blank</title>
</head>
<body>
  <form action="form.php" method="post">
    <label>Your Name:    </label>
    <input type="text" name="yourName"> <br>

    <label for="">Your E mail:</label>
    <input type="email" name="yourEmail" id=""><br>
    
    <!-- <textarea name="yourMessage" id="" cols="30" rows="10"></textarea><br> -->
    <input type="submit" name="submit" value="submit">
  </form>
</body>
</html>

I run through the localhost, however, I could not get result that I wanted.

The result that I wanted is if I didn't enter the names in the "Your Name" field, then it should show the result:

Please do register with us before you can login

Please help as I just started begin to learn about PHP.

Thanks

CodePudding user response:

if the the "Your Name" field is empty, then its strlen($name) should be 0 and the first if statement is true and it will show Your name should be longer than 5 characters you can try this :

`<?php

 if (isset($_POST['submit'])) {

   $arrayName = array("TeacherA", "TeacherB", "TeacherC", "TeacherD", "TeacherE");

   $minimum = 5;
   $maximum = 10;

   $name = $_POST['yourName'];
   $email = $_POST['yourEmail'];

   if (empty($name)) {

     echo "Please do register with us before you can login";

   } else {

     if (strlen($name) < $minimum) {

       echo "Your name should be longer than 5 characters";

     } else {

       if (strlen($name) > $maximum) {

         echo "Your name should be less than 10 characters";

       } else {

         if (in_array($name, $arrayName)) {

           echo "Welcome!";

         } else {

           echo "Your login is not correct";

         }

       }

     }

   }

 }

?> `

i used empty() to test if the field empty and i used if-else statements because i want the script to stop if it founds a 'true' condition in your script you can use return; but that will exit the rest of your script

have a nice code :)

CodePudding user response:

Try this:

if(!isset($name)){
  echo "Please do register with us before you can login";
}
else{
  echo "Welcome";
}

And also:

<input type="text" name="yourName" required>
  • Related