Jump to content
Larry Ullman's Book Forums

Recommended Posts

Larry, in your 4th edition of PHP and MySQL for Dynamic Web Sites, you use several times the FILTER_VALIDATE_INT filter with the filter_var() function in order to validate form input as positive integers (that is, natural numbers excluding zero, depending on whether you count zero as a natural number).

 

To accomplish this you write in your book:

filter_var($var, FILTER_VALIDATE_INT, array('min_range' => 1))

 

However, according to the PHP function reference, the third argument passed to the filter_var() function needs to be an associative array named $options. Inside this array you should then create another array and define the options there. So you would write:

 

filter_var($var, FILTER_VALIDATE_INT, array('options' => array('min_range' => 1)))

 

You can also establish the 'max_range' option for this type of filter. A complete list of available filters to be used with filter_var() can be found here. Options to be established for validate filters can be found here.

 

I have tested this in PHP 5.3.8 (can someone test using other PHP versions?) and when using the approach specified in the book, PHP ignores the third argument (it does not complain strangely enough) and will accept negative numbers (not zero however).

Share this post


Link to post
Share on other sites

Sorry for the delay. I meant to get to this before my vacation (on it now), but didn't. My immediate answer is that I've been using filter_var() for years now and never once had to create a subarray indexed at "options". I want to confirm that it's not behaving properly before giving an official answer. But this has not been a problem or requirement for me in the past.

Share this post


Link to post
Share on other sites

Again, sorry for the delay. Back from vacation and I just tested this. I see what you're saying in the PHP manual but it works either way:

 

$var = 0;
if (filter_var($var, FILTER_VALIDATE_INT, array('min_range' => 1))) {
echo 'passed';
} else {
echo 'did not pass';
}

or

$var = 0;
if (filter_var($var, FILTER_VALIDATE_INT, array('options' => array('min_range' => 1)))) {
echo 'passed';
} else {
echo 'did not pass';
}

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...