简体   繁体   中英

Basic Form Validation Check Number?

In this script I am checking if fields are not empty and email address is syntactically correct. How to add a text input at the bottom of my form for a basic sum question, eg (2+5)= I want to add a validation element to my current script to check if this equals 7.

if (empty($name) || empty($phone) || empty($email) || empty($enquiry))
{
    echo "    * Sorry all fields are required.";
}
elseif(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $email)) 
{
    print "<p>Sorry the email address you entered looks like it's invalid.</p>";
}
else
{
    mail($to, $sub, $mes, $headers);
    print "<p>Thank you ".$name." for contacting us.<br /><br />We will be in touch shortly.</p>"; 
}

1 If your session is not started use in the very first line

session_start();

2 Before form is shown. Add this code. Also remember that session start must be also in file where validation is.

 $numa =  rand(1,5);
 $numb =  rand(0,4);
 $_SESSION['valid_res'] = $numa+$numb;

  echo "<p>To submit form please solve this equatation $numa + $numb = ?";
  echo '<input type="text name="result_val" />';

3 In validation functions you should check

  if(intval($_POST['resul_val']) != $_SESSION['valid_res'])
  {
     echo "sorry you put wrong result in validation form";
  }

However, if I were you I'd use RECAPTCHA

If you are just wanting to validate a static sum, eg you know it is always going to be ( 2 + 5 ) = 7

Then you could just write a simple function to check the posted value.

// this being your posted value;
$validate = 7; 

function SumCheck($value){

    if ( 2 + 5 == $value ){
        return true;
    }
    else{
        return false;
    }

}

Then change your initial line to;

if (empty($name) || empty($phone) || empty($email) || empty($enquiry) || !SumCheck($validate))

However, I would suggest using RECAPTCHA as Robert Podwika has suggested.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM