Re: One last try at this!
| From: | Jim Lucas | Date: | Thu, 18 Jan 2007 01:10:20 +0000 |
| Subject: | Re: One last try at this! | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-247284@lists.php.net to get a copy of this message | ||
Jim Lucas wrote:
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) {In your regex you have a "." this will match anything try this: <plaintext><?php function ValidateString($string) {if(!preg_match("/^[-A-Za-z0-9_.' ]+$/", $string)) { return "Invalid Characters"; } Thanksif ( preg_match("/[^a-zA-Z0-9\_\.\' -]+/", $string) ) { return "Invalid Characters"; } return false;} $formerror = array(); forgot to say that all you need to do to get rid of the default values is remove the following two lines
$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-----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:[snip]equalityThe second condition of each if statement does not contain$result has hadchecking, it sets the $result to ValidateString($event, "2"). That should be if($result == ValidateString($event, "2")) or if($result === ValidateString($event, "2"))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 ) {$formerror['event'] = $result;} [/snip] Hmmm.....did you test that?$result = ValidateString($event, "2") is always TRUE,something assigned to it unless the function ValidateStringreturns aFALSE. 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