0

I am creating a whitelist if you will for a user to input data. I am getting stuck on the elseif statements.

This is my code :

public function is_valid_data($data)
   {

     if(strlen($data > 9))
     {
       $this -> set_message('is_valid_data', 'Field needs to be less than 9 characters');
       return FALSE;
     }
     elseif(strlen($data < 9))
     {
       $this -> set_message('is_valid_data', 'Field can not be under 9 characters');
       return FALSE;
     }
     elseif((substr($str, 0, 1) !== 'testing') || (substr($str, 0, 1) !== 'test'))
     {
       $this -> set_message('is_valid_data', 'Please re-submit data!');
       return FALSE;
     }
     elseif(!preg_match("/^[0-9]/", $str))
     {
       $this -> set_message('is_valid_data', 'Please dont forget about the numbers!');
       return FALSE;
     }
     else
     {
       return TRUE;
     }

   }

For some reason even if $data is 9 characters the first if statements goes through, then the second one fails and I keep getting 'Field can not be under 9 characters' even though the $data is exactly 9 characters. I am returning false because in another script I have the function call is_valid_data($data) and if this function returns a false then it will return the error to the user. If it returns true then the data is valid and we can continue

I can't seem to shake this issue.

user2406611
  • 35
  • 1
  • 6
  • 1
    You want to compare the result of `strlen($data)` to 9, you have the comparison inside the function call right now: `strlen($data) > 9` is not the same as `strlen($data < 9)` - see the difference? – Paolo Bergantino May 21 '13 at 17:45
  • Yea... I'm a noob I didn't even notice the issue :( Thanks. – user2406611 May 21 '13 at 17:51

4 Answers4

3
if(strlen($data) > 9)

instead of

if(strlen($data > 9))
Micha Schwab
  • 786
  • 1
  • 6
  • 21
0

When you're using $data < 9 it means it should be smaller then 9, if you want it to allow 9 as well then you'll need <= smaller than or equal to.

user2019515
  • 4,495
  • 1
  • 29
  • 42
0

I think you are checking the conditions wrong. What you need is replace the

if(strlen($data > 9))

with

if(strlen($data) > 9)

The same syntctical problem is also present in the second if statement. What you might want is to replace

elseif(strlen($data < 9))

by

elseif(strlen($data) < 9)
Bhashit Parikh
  • 3,121
  • 23
  • 24
0

There are a few things wrong with that code what is $str is this a member of Class is it a global i need to know these things in order to help. Thanks

BigDave
  • 81
  • 2
  • 9