Re: One last try at this!
| From: | Jim Lucas | Date: | Thu, 18 Jan 2007 01:02:12 +0000 |
| Subject: | Re: One last try at this! | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-247283@lists.php.net to get a copy of this message | ||
Beauford wrote:
This is what I am trying to do, and for the most part it works, but it also may be causing some of my other problems. If $event contains invalid characters, I am returning a string that says "Invalid Characters" So $result now contains the value 'Invalid Characters'. Then $formerror['event'] = $result - is self explanatory. If there are no errors nothing is returned and $result should contain anything. But this doesn't always seem to be the case. This is one of the problems I am having. This is the code in a nutshell. if($result = ValidateString($event)) { $formerror['event'] = $result; function ValidateString($string) { if(!preg_match("/^[-A-Za-z0-9_.' ]+$/", $string)) { return "Invalid Characters"; } Thanks In your regex you have a "." this will match anythingtry this: <plaintext><?php function ValidateString($string) { if ( preg_match("/[^a-zA-Z0-9\_\.\' -]+/", $string) ) { return "Invalid Characters"; } return false; } $formerror = array(); $formerror['firstAttempt'] = 'first attempt'; $formerror['secondAttempt'] = 'second attempt'; $event = "A-Z and a-z plus 0-9 and an '_' are allowed."; if ( ( $result = ValidateString($event) ) !== false ) { $formerror['firstAttempt'] = $result; } $event = "But bad chars like !@#$ and %^&* are not allowed."; if ( ( $result = ValidateString($event) ) !== false ) { $formerror['secondAttempt'] = $result; } var_dump($formerror); ?> Jim Lucas
$result has had-----Original Message----- From: Jim Lucas [mailto:lists@cmsws.com] Sent: January 17, 2007 4:36 PM To: Jay Blanchard Cc: Beauford; PHP Subject: Re: [PHP] One last try at this! Jay Blanchard wrote:What if the intension was to fail if the result of ValidateString() was false?? Then it should be writen as such. if ( ( $result = ValidateString($event, "2") ) !== FALSE ) {[snip]equalityThe second condition of each if statement does not containchecking, it sets the $result to ValidateString($event, "2"). That should be if($result == ValidateString($event, "2")) or if($result === ValidateString($event, "2"))$formerror['event'] = $result;} [/snip] Hmmm.....did you test that? $result = ValidateString($event, "2") is always TRUE,
something assigned to it unless the function ValidateStringreturns a
FALSE. The OP never provided the code for the function so we just don't know. Also, the OP forgot to run subsequent conditions in an elseif check, instead he used 3 if statements that will beexecuted each time.
At one point he mentioned changing ValidateString() to return false on an error. At least that is what I thought he said. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php