Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/12/2009, 05:53
dibuga
 
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 16 años, 6 meses
Puntos: 0
Exclamación Validar ñ y acentos

Hola a todos:
He leido y probado casi todo lo referente que he encontrado en el foro (al menos lo que entendia un poco la idea), pero no logro que reconozca la ñ ni los acentos.

mi código es:

primera opción del foro:

Código PHP:
require ('conexionInc.php');
header('Content-Type:text/html; charset=UTF-8');
$nombre=$_POST["nombre"];
$usuario=$_POST["nom"];
$password=$_POST["pass"];


//conecto con la BD
$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location:  $redir?error_login=0"));
mysql_select_db("$sql_db");

//////////////////////////////////////////////////////// 
//valido si los datos del nuevo usuario son correctos


    //miro si tiene el tamaño adecuado y se ha introducido datos
     
if ( (strlen($usuario)===0) || (strlen($usuario)>20) ){
        
        
header("Location:P_altaUser.php?error=0&nombre=$nombre");
        exit();
      }
    
//miro si todos sus caracteres del login son los permitidos
     
$permitidos ="a-zA-Z0-9._ÁÉÍÓÚáéíóú";
      
       if (!
ereg("^[$permitidos]{1,20}$",$usuario)){
            
header("Location:P_altaUser.php?error=1&nombre=$nombre");
            exit();
          }
.....
......... 
No reconoce ni la ñ ni los acentos

En la segunda opción desisto de los acentos pero por lo menos que reconozca la letra ñ:

opción2:
Código PHP:
....
.........
//miro si tiene el tamaño adecuado y se ha introducido datos
     
if ( (strlen($usuario)===0) || (strlen($usuario)>20) ){
        
        
header("Location:P_altaUser.php?error=0&nombre=$nombre");
        exit();
      }
    
//miro si todos sus caracteres del login son los permitidos
     
$permitidos =htmlentities("abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ0123456789._");
      
       for (
$i=0$i<strlen($usuario); $i++){
         
$car=substr(htmlentities($usuario),$i,1);
          if (
strpos($permitidos,$car)===false){
          
//no puede ser == pq sino car "a" devuelve 0 q es =false y con === tb debe coincidir el tipo
            
header("Location:P_altaUser.php?error=1&nombre=$nombre");
            exit();
          }
        }
.........
............ 
En esta opción despues de mucho toquetear me reconoce la ñ pero al calcular su longitud el caracter ñ lo cuenta como 2 ¿¿¿??????
No sé que pasa¡¡¡¡ y tampoco vale ya que distorsiona el tamaño y no reconoce acentos.

Lo que realmente me gustaría es que funcionara la opción 1 (reconozca la ñ y acentos) pero me conformo con que reconozca la ñ.

¿Alguien puede ayudarme? ya no sé ni que hacer.

Muchas gracias