La validación la hago primero al lado del cliente, y si el cliente no tiene activado Javascript, utilizo PHP, el código es el siguiente:
Código PHP:
$usuario=trim(htmlentities(mysql_real_escape_string($_REQUEST['usuario'])));
$contrasena=trim(htmlentities(mysql_real_escape_string($_REQUEST["contrasena"])));
$email=trim(htmlentities(mysql_real_escape_string($_REQUEST["email"])));
$nombre=trim(htmlentities(mysql_real_escape_string($_REQUEST["nombre"])));
$apellidos=trim(htmlentities(mysql_real_escape_string($_REQUEST["apellidos"])));
$direccion=trim(htmlentities(mysql_real_escape_string($_REQUEST["direccion"])));
$provincia=trim(htmlentities(mysql_real_escape_string($_REQUEST["provincia"])));
$poblacion=trim(htmlentities(mysql_real_escape_string($_REQUEST["poblacion"])));
$cp=trim(htmlentities(mysql_real_escape_string($_REQUEST["cp"])));
$telefono=trim(htmlentities(mysql_real_escape_string($_REQUEST["telefono"])));
//Declaramos un array que recoja los errores
$recoger_errores=array();
echo "<noscript>";
//Ejecutamos la función validar con sus parámetros
validar($usuario, $contrasena, $email, $nombre, $apellidos, $direccion, $poblacion, $cp, $telefono);
function validar($usuario, $contrasena, $email, $nombre, $apellidos, $direccion, $poblacion, $cp, $telefono){
/*Si algún usuario está en blanco, se añade el error al array*/
if($usuario=="" || $contrasena=="" || $email=="" || $nombre=="" || $apellidos="" || $direccion=="" || $poblacion="" || $cp="" || $telefono){
$recoger_errores[]="Debes completar todos los campos";
}
/*Esto mide la longitud de los números*/
if(strlen($cp)!=5){
$recoger_errores[]="El código postal deben ser 5 caracteres";
}
if(strlen($telefono)!=9){
$recoger_errores[]="El teléfono deben ser 9 caracteres";
}
/*Esto se encarga de ver si se trata de un número entero*/
if(filter_var($cp, FILTER_VALIDATE_INT)===false){
$recoger_errores[]="El codigo postal debe ser un número";
}
if(filter_var($telefono, FILTER_VALIDATE_INT)===false){
$recoger_errores[]="El teléfono debe ser un número";
}
/*Finalemte le mostramos al usuario los errores recorriendo el array*/
var_dump($recoger_errores);
}
echo "</noscript>";
"
pero si llamo a la función antes de la última línea directamente no me la ejecuta y el usuario puede introducir datos erróneos tan campante.
¿Qué está fallando?.
Un saludo.