Re: One last try at this!

From: 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) {
    if(!preg_match("/^[-A-Za-z0-9_.' ]+$/", $string)) {
    return "Invalid Characters";
}    Thanks
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";
    }
    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]
       
The second condition of each if statement does not contain
equality
checking, 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,       
$result has had
something assigned to it unless the function ValidateString
returns 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 be
executed 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
    


« previous php.general (#247284) next »