Foros del Web » Programando para Internet » PHP »

Validar ñ y acentos

Estas en el tema de Validar ñ y acentos en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/12/2009, 05:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 15 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
  #2 (permalink)  
Antiguo 01/12/2009, 06:16
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Validar ñ y acentos

tienes que ver que en el meta de la pagina tengas utf8 tambien, para las contraseñas los mejor son los hash como md5
  #3 (permalink)  
Antiguo 01/12/2009, 06:18
 
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Validar ñ y acentos

Los tengo en la 2 linea

header('Content-Type:text/html; charset=UTF-8');

gracias
  #4 (permalink)  
Antiguo 01/12/2009, 07:18
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: Validar ñ y acentos

¿Y si le aplicas utf_encode?

Código PHP:
$enyes utf_encode("ñ"); 
Así te pasa por alto las eñes y tildes (creo). Salu2!

PD: http://php.net/manual/en/function.utf8-encode.php
  #5 (permalink)  
Antiguo 01/12/2009, 07:23
Avatar de Fairy_Boy  
Fecha de Ingreso: octubre-2009
Ubicación: Kokiri Forest
Mensajes: 235
Antigüedad: 14 años, 6 meses
Puntos: 5
Respuesta: Validar ñ y acentos

Tercera opc:
Y s cambias charset=UTF-8 por charset=ISO-8859-1 ??
Saludos!
  #6 (permalink)  
Antiguo 01/12/2009, 08:49
 
Fecha de Ingreso: octubre-2008
Mensajes: 87
Antigüedad: 15 años, 6 meses
Puntos: 0
Sonrisa Respuesta: Validar ñ y acentos

Ninguna de las opciones me ha solucionado el problema pero si me han dado buenas ideas.

Parece que al sustituir los caracteres especiales que si permito usar, y luego valido, la cosa funciona...por el momento que era un poco la idea de Claw aunq la funcion a usar es preg_replace.

Gracias a todos por la ayuda
  #7 (permalink)  
Antiguo 09/10/2010, 13:36
 
Fecha de Ingreso: enero-2004
Mensajes: 207
Antigüedad: 20 años, 3 meses
Puntos: 1
Respuesta: Validar ñ y acentos

ya puedes utilizar header('Content-Type:text/html; charset=UTF-8'); que seguirá sin funcionarte.

La solución está en usar htmlspecialchars en lugar de htmlentities, de esa forma nos protegemos igualmente de la inyección de código malicioso pero sin que afecte a los acentos y otros caracteres especiales en UFT-8
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 05:08.