Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/04/2006, 04:43
Avatar de uamistad
uamistad
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
empty() trabaja bien, el problema es que a veces se le confunde con isset().

Viendo el bosque en lugar del árbol, ¿no sería mejor enviar mensajes personalizados según el tipo de casilla que llenó mal?

Por ejemplo, el siguiente código imprime: Todo bien !

En pocas líneas se validaron los datos y no sólo eso, sino que el mensaje de error no es general, sino que dice exáctamente qué está mal.

Código PHP:
<?
<html>
<
head><title>Ejm.</title></head>
<
body>
<?
//voy a suponer los siguientes datos de entrada
$nombre "México";
$ap1 "Cámaras";
$ap2 "Digitales";
$email "[email protected]";

/////// V A L I D A N D O    L O S    D A T O S ////////
$lat "a-zA-Z0-9áéíóúüñÁÉÍÓÚÜÑ"//caracteres latinos alfanuméricos
$mensajes ""//almacenemos los mensajes de error

//checando que el nombre tenga al menos 3 caracteres de longitud
if ( !ereg("^[$lat]{3,}$",$nombre) ) $mensajes .= "<li>El nombre debe contener al menos 3 caracteres alfanuméricos.";

//checando que ap1 tenga al menos 3 caracteres de longitud
if ( !ereg("^[$lat]{3,}$",$ap1) ) $mensajes .= "<li>El AP_01 debe contener al menos 3 caracteres alfanuméricos.";

//checando que ap2 tenga al menos 3 caracteres de longitud
if ( !ereg("^[$lat]{3,}$",$ap2) ) $mensajes .= "<li>El AP_02 debe contener al menos 3 caracteres alfanuméricos.";

//checando que el email tenga un formato válido
if ( !ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]{2,5}$",$email) ) $mensajes .= "<li>El email no es válido, favor de verificar.";


////////////// T O M A    D E    D E C I S I C I O N E S //////////////
if( !empty($mensajes) ){ //hubo errores

    //mostremos los errores en forma de lista
    
$mensajes "<ul>".$mensajes."</ul>";
    echo 
$mensajes;
  }
else{ 
//todo en orden
    
echo "Todo bien !";
    
//$insert=mysql_query("insert into ......    
}
?>
</body></html>
?>
Pero... ¿qué pasa si en lugar de [email protected] escribió correohotmail.com?
Entraría en el if() e imprimiría: El email no es válido, favor de verificar.

¿qué pasa si en lugar de México escribió mx?
Entraría en el if() e imprimiría: El nombre debe contener al menos 3 caracteres.


ADEMÁS INCREMENTA LA SEGURIDAD
En este ejemplo, no sólo se logró lo que se buscaba, sino que además incrementa la seguridad de la aplicación. Nota que si alguien quiere insertar por ejemplo TAGS de HTML, no se lo va a permitir.
__________________
"Di no al Internet Explorer" -Proverbio Chino-