|
Posted by Kim Andrι Akerψ on 04/27/06 20:48
Kingo wrote:
> I have a HTML form where the user can type in certain values, but I
> only want them to able able to submit integers (0-9). I post to a PHP
> page with the following "snippit" of code (all the variables have been
> properly assigned):
>
> // Checks for illegal chars
> $illegal_chars = array("`", "~", "!", "@", "#", "$", "%", "^", "&",
> "*", "(", ")", "-", "_", "=", "+", "q", "w", "e", "r", "t", "y", "u",
> "i", "o", "p", "[", "{", "]", "}", "\\", "|", "a", "s", "d", "f", "g",
> "h", "j", "k", "l", ";", ":", "'", "\"", "z", "x", "c", "v", "b", "n",
> "m", ",", "<", ".", ">", "/", "?");
> foreach ($illegal_chars as $value) {
> if (stripos($db_mysql, $value)) { $pass1 = "f"; }
> elseif (stripos($db_postgre, $value)) { $pass2 = "f"; }
> elseif (stripos($db_oracle, $value)) { $pass3 = "f"; }
> elseif (stripos($email_basic, $value)) { $pass4 = "f"; }
> elseif (stripos($email_exchange, $value)) { $pass5 = "f"; }
> elseif (stripos($ftp_users, $value)) { $pass6 = "f"; }
> elseif (stripos($domain_subdomains, $value)) { $pass7 = "f"; }
> else {}
> }
>
> The code will not work, and I can't see why. The variables
> $pass1-pass7 aren't set after the foreach() loop, no matter what is
> in the input!
>
> Any ideas?
Have you tried using a regex?
Example:
if (preg_match($string,'/\D/') > 0) {
// contains illegal characters
}
Replace $string with the string variable you want to check. The \D
means any character that isn't a decimal digit, which is probably what
you want to check the string for.
http://php.net/preg_match
http://php.net/reference.pcre.pattern.syntax
--
Kim AndrΓ© AkerΓΈ
- kimandre@NOSPAMbetadome.com
(remove NOSPAM to contact me directly)
[Back to original message]
|