if($_POST['oculto']){
if($form_errors = validate_form()){
show_form($form_errors);
} else {
process_form();
}
} else {
show_form();
}
/* La función que valida los datos del formulario enviados en metodo Post. */
function validate_form(){
$errors = array(); /* El array que recoge los errores. */
/* VALIDAMOS EL CAMPO NUMERO DNI/NIF */
if ($_POST['doc'] == 'DNI') {
if(strlen(trim($_POST['dni'])) == 0){
$errors [] = "Número DNI/NIF: <font color='#FF0000'>Campo Obligatorio.</font>";
}
elseif (!preg_match('/^[\d]+$/',$_POST['dni'])){
$errors [] = "Número DNI/NIF: <font color='#FF0000'>Sólo Números.</font>";
}
elseif (strlen(trim($_POST['dni'])) < 8){
$errors [] = "Número DNI/NIF: <font color='#FF0000'>Más de 7 Carácteres.</font>";
}
}
/* VALIDAMOS LA LETRA DE CONTROL DEL DNI */
/* DEFINO EL ALGORITMO PARA EL CALCULO DE LA LETRA CONTROL DEL DNI */
$letras = 'TRWAGMYFPDXBNJZSQVHLCKE'; /* Array escalar. */
$dni = $_POST['dni']; /*Variable que contiene el número de dni. */
$indice = intval($_POST['dni'])%23; /* Variable que contiene el entero de aplicar la operación matematica al número. */
$letra = $letras[$indice]; /* Variable que nos devuelve la posición dentro del array. */
/* FIN DEL ALGORITMO DE DEFINICION DEL LA LETRA CONTROL DEL DNI */
/* Validamos la letrita. */
if ($_POST['doc'] == 'DNI') {
/* Si no hay letra */
if(strlen(trim($_POST['ldni'])) == 0){
$errors [] = "Letra DNI: <font color='#FF0000'>Campo obligatorio.</font>";
}
/* Si se hay caracteres no autorizados. */
elseif (!preg_match('/^[^0-9@#$&%<>:"·\(\)=¿?!¡\[\]\{\};,:\.\*]+$/',$_POST['ldni'])){
$errors [] = "Letra Control DNI: <font color='#FF0000'>Solo texto</font>";
}
/* Si son minusculas. */
elseif (!preg_match('/^[^a-z]+$/',$_POST['ldni'])){
$errors [] = "Letra Control DNI: <font color='#FF0000'>Solo mayusculas</font>";
}
/* SI LA LETRA NO ES LA CORRECTA. */
elseif (trim($_POST['ldni'] != $letra)){
$errors [] = "Letra Control DNI: <font color='#FF0000'>Letra no correcta. $letra is ok.</font>";
}
}
/* Retorna los errores en un array. */
return $errors;
}
/* Se llamará la función show_form con el retorno de $errors si es pertinente. */
function show_form($errors=''){
if($_POST['oculto']){
$defaults = $_POST;
} else {
/* Nos retorna el formulario en caso de error, con lo valores hemos escrito*/
/* PEj: <input type='text' name='dni' size=12 maxlength=8 value='".$defaults['dni']."' />*/
$defaults = array ( 'doc' => '',
'dni' => '',
'ldni' => '');
}
/* Si hay errores se imprime la tabla en pantalla. */
if ($errors){
print(" <div width='90%' style='float:left'>
<table align='left' style='border:none'>
<th style='text-align:left'>
<font color='#FF0000'>* SOLUCIONE ESTOS ERRORES:</font><br/>
</th>
<tr>
<td style='text-align:left'>");
for($a=0; $c=count($errors), $a<$c; $a++){
print("<font color='#FF0000'>**</font> ".$errors [$a]."<br/>");
}
print("</td>
</tr>
</table>
</div>
<div style='clear:both'></div>");
}
}
Formulario y validación de todos los documentos españoles, COSECHA PROPIA:
No hay comentarios:
Publicar un comentario
Gracias por vuestros aportes.