Friday 15 February 2013

Why my PHP validation doesn't check for the existing email address in the database? -



Why my PHP validation doesn't check for the existing email address in the database? -

i have basic registration form jaquery validation inputs , php validation check existing email address. however, if type same email address , submit several times, don't validation messages , email gets stored within database. cannot understand why happen, don't think have errors in code.

here php validation:

public function register_post(){ $register = new register(); $register->loadfrompost(); $valid_error = array(); if($register->is_value_exist('email', $register->email)){ $valid_error[] = 'email taken'; } $regexp = "/^[^0-9][a-z0-9_]+([.][a-z0-9_]+)*[@][a-z0-9_]+([.][a-z0-9_]+)*[.][a-z]{2,4}$/"; if (!preg_match($regexp, $register->email)) { $valid_error[] = "not valid email"; } $var_array = array($register->first_name, $register->last_name); $regexp = "/^[a-za-z]{2,16}+$/"; foreach($var_array $var){ if (!preg_match($regexp, $var)) { $valid_error[] = "not valid input value first name or lastly name"; } } if(count($valid_error) == 0) { $hash = membership::hash($register->password); $register->password = $hash['password']; $register->hash = $hash['salt']; } $register->save(); $redirect_url = site_url . "home/index"; redirect($redirect_url); }

your save , redirect called because aren't in if condition. alter to:

if(count($valid_error) == 0) { $hash = membership::hash($register->password); $register->password = $hash['password']; $register->hash = $hash['salt']; $register->save(); $redirect_url = site_url . "home/index"; redirect($redirect_url); }

these 3 lines should called when there no validation errors. need create way send valid_errors user when don't redirected, know why.

since commented on it...as regexs e-mails, take here: http://www.regular-expressions.info/email.html. aren't allowing + or % or . -- etc.

php validation email

No comments:

Post a Comment