Checking the registration form in PHP

I have this simple form to submit, it will be redirected to submit.php, if there are errors, it displays error messages on submit.php. Now I want the error messages displayed on the form page.

<html>
<head>
<? require_once('lib.php'); ?>
</head>
<body>
<form name="my-form" id="my-form" method="post" action="submit.php">
        Your name:
        <input name="name" value="" size="30" maxlength="255" />
        Your email:
        <input name="email" value="" size="30" maxlength="255" />
        Your favourite color:
            <select name="fav_color">
                <option value="">-select please-</option>
                <option value="Black">Black</option>
                <option value="White">White</option>
                <option value="Blue">Blue</option>
                <option value="Red">Red</option>
                <option value="Yellow">Yellow</option>
            </select>
        Your comment:
        <textarea name="comment" rows="6" cols="35"></textarea>
    <input type="submit" value="Submit" />         
</form>
</body>
</html>
<?php

require_once('lib.php');

function getErrors($postData,$rules){

  $errors = array();

  // validate each existing input
  foreach($postData as $name => $value){

    //if rule not found, skip loop iteration
    if(!isset($rules[$name])){
        continue;       
    }

    //convert special characters to HTML entities
    $fieldName = htmlspecialchars($name);

    $rule = $rules[$name];

    //check required values
    if(isset($rule['required']) && $rule['required'] && !$value){
        $errors[] = 'Field '.$fieldName.' is required.';
    }

    //check field minimum length
    if(isset($rule['minlength']) && strlen($value) < $rule['minlength']){
         $errors[] = $fieldName.' should be at least '.$rule['minlength'].' characters length.';    
    }

    //verify email address     
    if(isset($rule['email']) && $rule['email'] && !filter_var($value,FILTER_VALIDATE_EMAIL)){
      $errors[] = $fieldName.' must be valid email address.';
    }

    $rules[$name]['found'] = true;

  }


  //check for missing inputs
  foreach($rules as $name => $values){
    if(!isset($values['found']) && isset($values['required']) && $values['required']){
      $errors[] = 'Field '.htmlspecialchars($name).' is required.';
    }

  }

  return $errors;
}

$errors = getErrors($_POST,$validation_rules);

if(!count($errors)){
  echo 'Your form has no errors.';
}
else{  
  echo '<strong>Errors found in form:</strong><ul><li>';
  echo join('</li><li>',$errors);
  echo '</li></ul><p>Correct your errors and try again.</p>';
}
?>

How this php code displays error messages on one page. I want to display these error messages on form.php page. Someone help me do this.

+5
source share
3 answers

This article describes your solution.

script (, validate.php) . , script (JSON, XML, , ). Else - .

, "" , AJAX validator.php, .

. .

+3

, php-:

if(isset($_POST['submit'])){
    //php code here
}

PHP- html. .

PHP, :

echo '<style>.style1 {display: none }</style>";

:

echo '<div class="highlight"><p class="textcenter"><h5>You have successfully registered for blah blah blah.</h5></p><p>Thank you!</p><style>.style1 {display: none }</style>";

, , body - stlye1.

, html, , .

+1

, .

, PHP. (submit.php). , . submit.php, . "", , , , . , " ". , . , , URL- . $_GET, , .

Please remember to clear / delete data before inserting into the database.

Hope this helps.

<?php 
    //if the form has been submitted
    if (isset($_POST['submit'])){

        //extract data submitted through the form and assign date to variables
        $name = $_POST['name'];
        $email = $_POST['email'];
        $favoriteColor = $_POST['fav_color'];
        $comment = $_POST['comment'];

        //pattern against which to check email validity
        $good_email = "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}";

        //if provided data is valid (email especially) and no form field has been left empty display "everything is okay" 
        if(strlen($name) > 0 && strlen($email) > 0 && preg_match("/$good_email/", $email, $regs) && strlen($favoriteColor) > 0 && strlen($comment) > 0){
            echo "Everything is okay";
        }
        //otherwise redirect the user back to the form and indicate errors that they need to correct
        else{

            //build an error message string where the user is shown where the issue is
            $error_message = "There are errors with your form."; //starting point for the error message 

            //if message has been left empty let the user know that the name is required
            if(strlen($name) == 0){
                $error_message .= "<br/>Name is required";
            }
            //if the email is left empty let the user know that an email is required 
            if(strlen($email) == 0){
                $error_message .= "<br/>Email is required";
            }
            //if the email does not match the pattern ($good_email) let the user know that the email they have supplied is invalid 
            if(!(preg_match("/$good_email/", $email, $regs))){
                $error_message .= "<br/>Email is not valid";
            }
            //if the a favorite color has not been selected let the user know that they need to select a favorite color
            if(strlen($favoriteColor) == 0){
                $error_message .= "<br/>Favorite color can not be left empty";
            }
            //if the comment is left empty let the user know that comment is required
            if(strlen($comment) == 0){
                $error_message .= "<br/>Comment is required";
            }
            //if any field is left empty or the email is invalid redirect the user back to the form along with the data they submitted 
            header("Location: submit.php?&submittedName=$name&error=$error_message&submittedEmail=$email&submittedColor=$favoriteColor&submittedComment=$comment");
        }
    }
    //if no submission display the form
    else{
?>
<html>
<head>

</head>
<body>

<?php
    //display the error message 
    //error message is passed through the url
    if (isset($_GET['error']))
    {
        echo "<p style='color:red'>".$_GET['error']."</a>";
    }
?>
<form name="my-form" id="my-form" method="post" action="submit.php">
        Your name:
        <input name="name" value="<?php if($_GET['error']) { echo $_GET['submittedName'];} //if there been an error with form submission display the name the user prevously submitted ?>" size="30" maxlength="255" />
        Your email:
        <input name="email" value="<?php if($_GET['error']) { echo $_GET['submittedEmail'];} //if there been an error with form submission display the email the user prevously submitted ?>" size="30" maxlength="255" />
        Your favorite color:
            <select name="fav_color">
                <option value="">-select please-</option>
                <option value="Black">Black</option>
                <option value="White">White</option>
                <option value="Blue">Blue</option>
                <option value="Red">Red</option>
                <option value="Yellow">Yellow</option>
            </select>
        Your comment:
        <textarea name="comment" rows="6" cols="35"><?php if($_GET['error']) { echo $_GET['submittedComment'];} //if there been an error with form submission display the comment the user prevously submitted ?></textarea>
    <input type="submit" value="Submit" name="submit"/>         
</form>
</body>
</html>
<?php
}
?>
0
source

All Articles