0

How to use PHP to check form field for specific value?

The value '7' would need to be inserted or else the form field will be invalid; so invalid with all other numbers then 7.

if(empty($_POST['captcha']))
{
    $this->add_error("Did you solve the captcha?");
    $ret = false;
}

Works to check if any value -- but I need to specify, must be 7.

if(strlen($_POST['captcha']) =!7) // tried this but form completely died or disappeared
{
    $this->add_error("Did you solve the captcha?");
    $ret = false;
}
Dr Upvote
  • 8,023
  • 24
  • 91
  • 204

2 Answers2

2

There are two things to note here:

  1. You shouldn't use empty() here, because "0" is considered empty as well and it seems like it could be the answer of an equation; use isset() instead to just check whether the value is part of the request.

  2. You're trying to check the length of $_POST['captcha'] instead of comparing its value.

So:

if (!isset($_POST['captcha']) || $_POST['captcha'] != 7) {
    $this->add_error('Did you solve the captcha?');
    $ret = false;
}
Ja͢ck
  • 170,779
  • 38
  • 263
  • 309
1

You have two problems:

=! should be !=. See comparison operators.

if(strlen($_POST['captcha']) != 7)

You also need to turn on error reporting.

Community
  • 1
  • 1
John Conde
  • 217,595
  • 99
  • 455
  • 496