phphtmlserver-side-validation

Server side error message display from process page to index page in php


I have to display a server-side validation error message which is working perfectly if I write both codes(HTML and PHP) on a single page.

Now I have index.php and process.php pages. I have to pass server-side validation error message from process.php to index.php. Without using Ajax. would you help me in this?

index.php

<?php

include('../../db/connection.php');
$fname_error="";
$email_error="";
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form action="process.php" method="post">
        <input type="text" name="fname" value="<?php if(isset($fname)){echo $fname;} ?>">
         <span class="error"><?php echo $fname_error;?></span>

        <input type="email" name="email" value="<?php if(isset($email)){echo $email;}?>">
        <span class="error"><?php echo $email_error;?></span>

        <input type="submit" name="submit">
    </form>

</body>
</html>

Process.php

<?php

include('../../db/connection.php');
if (isset($_POST['submit'])) {

    $fname=trim($_POST['fname']);
    $email=trim($_POST['email']);

    if (empty($fname)) {
        $fname_error="Name is empty";
    }

    else
        {
        if ($fname<3) {
        $fname_error="Please enter minimum 3 character";
    }
}

    if (empty($email)) {
        $email_error="Email field is empty";
    }
    else
        {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          $email_error="Invalid email format"; 

    }
    }


    // insert code here
}
?>

Solution

  • Use SESSIONS to achive this. Try following Code:

    index.php

    <?php
    session_start();
    include('../../db/connection.php');
    $fname_error= $_SESSION['fname'];
    $email_error= $_SESSION['email_error'];
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="process.php" method="post">
            <input type="text" name="fname" value="<?php if(isset($fname)){echo $fname;} ?>">
             <span class="error"><?php echo $fname_error;?></span>
    
            <input type="email" name="email" value="<?php if(isset($email)){echo $email;}?>">
            <span class="error"><?php echo $email_error;?></span>
    
            <input type="submit" name="submit">
        </form>
    
    </body>
    </html>
    
    <?php
        unset($_SESSION['fname']);
        unset($_SESSION['email_error']);
    ?>
    

    process.php

    <?php
    session_start();
    include('../../db/connection.php');
    if (isset($_POST['submit'])) {
    
        $fname=trim($_POST['fname']);
        $email=trim($_POST['email']);
    
        if (empty($fname)) {
            $_SESSION['fname'] ="Name is empty";
            header('location:index.php');
        }
    
        else
            {
            if ($fname<3) {
            $_SESSION['fname'] ="Please enter minimum 3 character";
            header('location:index.php');
        }
    }
    
        if (empty($email)) {
            $_SESSION['email_error'] ="Email field is empty";
            header('location:index.php');
        }
        else
            {
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
              $_SESSION['email_error']="Invalid email format"; 
              header('location:index.php');
    
        } 
    }
    
    
        // insert code here
    }
    ?>