lobogris
Usuario de Bronce
- Mensajes
- 1,537
- Puntuación de reacción
- 0
Buenas,
necesito cambiar el siguiente registro para que se acepten eñes (ñ) en los nombres de usuario y en los e-mails. Dejo el código a continuación:
Función que valida el email:
Función que comprueba los datos de registro.
He estado buscando pero no he dado con la solución, si bien he visto casos parecidos pero el código es distinto y no sé aplicarlo. La idea que tengo es que he de añadir ñÑ pero no sé donde ni en que orden.
A ver si me podéis ayudar ;P
Saludos
necesito cambiar el siguiente registro para que se acepten eñes (ñ) en los nombres de usuario y en los e-mails. Dejo el código a continuación:
Función que valida el email:
PHP:
function validateEmail($email){
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex){
$isValid = false;
} else {
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64){
// local part length exceeded
$isValid = false;
} else if ($domainLen < 1 || $domainLen > 255){
// domain part length exceeded
$isValid = false;
} else if ($local[0] == '.' || $local[$localLen-1] == '.'){
// local part starts or ends with '.'
$isValid = false;
} else if (preg_match('/\\.\\./', $local)){
// local part has two consecutive dots
$isValid = false;
} else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)){
// character not valid in domain part
$isValid = false;
} else if (preg_match('/\\.\\./', $domain)){
// domain part has two consecutive dots
$isValid = false;
} else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',str_replace("\\\\","",$local))){
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local))){
$isValid = false;
}
}
}
return $isValid;
}
Función que comprueba los datos de registro.
PHP:
function validate($params){
global $lang;
$errors=array();
if ((!@$params['username']) || (!@$params['pass1']) || (!@$params['pass2']) || (!@$params['email'])){
$errors[0] = $lang['register_all_field_required'];
} else {
// Username checks
$tmpuser = preg_replace("/[^a-zA-Z0-9_]/","",$params['username']);
if ($tmpuser!=$params['username']){
$errors[1] = $lang['register_no_special_chars'];
} else {
if ((strlen($params['username'])<5) || (strlen($params['username'])>25)){
$errors[1] = $lang['register_min_5_chars'];
} else {
$params['username'] = strtolower(mysql_real_escape_string($params['username']));
$check = mysql_query("SELECT id FROM users WHERE LOWER(username)='{$params['username']}'") or die(mysql_error());
if (mysql_num_rows($check)){
$errors[1] = $lang['register_username_taken'];
}
}
}
// password checks
if ($params['pass1']!=$params['pass2']){
$errors[2] = $lang['register_password_confirm_doesnt_match'];
} else {
if (strlen($params['pass1'])<5){
$errors[2] = $lang['register_password_min_5_chars'];
}
}
// email checks
if (!$this->validateEmail($params['email'])){
$errors[3] = $lang['register_invalid_email'];
} else {
$params['email']=strtolower(mysql_real_escape_string($params['email']));
$e = mysql_query("SELECT id FROM users WHERE LOWER(`email`)='{$params['email']}'") or die(mysql_error());
if (mysql_num_rows($e)){
$errors[3] = $lang['register_email_in_use'];
}
}
}
return $errors;
}
He estado buscando pero no he dado con la solución, si bien he visto casos parecidos pero el código es distinto y no sé aplicarlo. La idea que tengo es que he de añadir ñÑ pero no sé donde ni en que orden.
A ver si me podéis ayudar ;P
Saludos