Funcions
Funció campBuit
La funció campBuit verifica que un camp tingui un valor introduit.
La funció rep dos paràmetres, el nom del camp que es vol comprovar i l’array on s’emmagatzema tots els errors que es mostren a l’usuari. Com volem que els valors de l'array es comparteixin entre la funció i el codi principal, fem un pas per referència.
// Validar si un camp està buit
function campBuit($nomCamp, &$errors) { // Esperem el camp i l'array de valors. Com volem que els valors de l'array es comparteixin, fem un pas per referència.
if (empty($_POST[$nomCamp])) { // Si el camp indicat està buit
$errors[] = "El camp $nomCamp és buit."; // Afegim a l'array d'errros el següent missatge
return true;
}
return false;
}
Funció validarDNI
La funció validarDNI verifica que el DNI introduït tingui un valor vàlid.
La funció rep un sol paràmetre, el qual és el DNI.
// Validar DNI
function validarDNI($dni): bool { // Espera un DNI d'entrada
$dni = strtoupper(trim($dni)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
if (preg_match('/^[0-9]{8}[A-Z]$/', $dni)) { // Comprova que hi ha 8 números seguit d'una lletra
$lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el DNI
$num = substr($dni, 0, 8); // Extreu els primers 8 caràcters de $DNI (números)
$lletra = substr($dni, -1); // Extreu l'últim caràcter del DNI (lletra)
return $lletra === $lletres[$num % 23]; //
}
return false;
/* Expresió regular '/^[0-9]{8}[A-Z]$/'
^ = inici de la cadena
[0-9]{8} → exactament 8 digits (del 0 al nou)
[A-Z] = una lletra majúscula
$ = fin de la cadena
*/
}
Funció validarNIE
La funció validarNIE verifica que el NIE introduït tingui un valor vàlid.
La funció rep un sol paràmetre, el NIE.
// Validar NIE
function validarNIE($nie): bool { // Espera un NIE d'entrada
$nie = strtoupper(trim($nie)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
if (preg_match('/^[XYZ][0-9]{7}[A-Z]$/', $nie)) { // Comprova que el DNI tingui una lletra X,Y o Z + 7 números + una lletra
$lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el NIE
$numeroInicial = str_replace(['X','Y','Z'], ['0','1','2'], $nie[0]); // Converteix cada lletra en un nombre: X = 0, Y = 1, Z = 2
$numero = $numeroInicial . substr($nie, 1, 7); // Concatena el número de la primera lletra amb la resta del NIE
$lletra = substr($nie, -1); // Agafa la lletra (la que queda, la del final)
return $lletra === $lletres[$numero % 23];
}
return false;
}
Funció validarPassaport
La funció validarPassaport verifica que el passaport introduït tingui un valor vàlid.
La funció rep un sol paràmetre, el passaport.
// Validar Passaport
function validarPassaport($passaport): bool { // Espera un passaport
$passaport = strtoupper(trim($passaport)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
if (preg_match('/^[A-Z]{3}[0-9]{6}[A-Z]$/', $passaport)) { // Ha d'haber-hi 3 lletres, seguit de 6 números i acabar amb una lletra
return true;
}
return false;
}
Funció esMajorEdat
La funció esMajorEdat verifica que la data de naixement impliqui que l’usuari sigui major d’edat.
La funció rep un sol paràmetre, la data de naixement.
// Validar si és major d'edat
function esMajorEdat($dataNaix): bool { // Espera una data
$dataNaix = new DateTime($dataNaix); // Creem un objecte DateTime a partir de la data oferta
$avui = new DateTime(); // Creem un objecte DateTime a partir de la data d'avui
return $avui->diff($dataNaix)->y >= 18; // Es calcula la diferencia entre les dues dates i es retornen tres valors: y = anys, m = messos i d = dies. Es fa la comparació amb el valor y (que son els anys de diferència)
// Retorna true o false. Si l'operació es veritat (major o igual a 18), retorna true, si no, retorna false
}
Funció validarTelefon
La funció validarTelefon verifica que el telèfon tingui un valor vàlid
La funció rep un sol paràmetre, el número de telèfon.
// Validar telèfon
function validarTelefon($tel): bool {
return preg_match('/^[0-9]{9}$/', $tel); // El telèfon ha de tenir 9 números
// Si preg_match coincideix amb el patró, retorna true, si no, false
}
Funció codiPostalValid
La funció codiPostalValid verifica que el codi postal sigui vàlid.
La funció rep un sol paràmetre, el codi postal.
// Validar codi Postal
function codiPostalValid($codi_postal) {
// El codi ha de ser exactament 5 dígits
if (preg_match('/^[0-9]{5}$/', $codi_postal) == false) { // Si el codi postal no té 5 dígits
return false;
}
// Valors possibles de codis postals a Espanya: 01000 - 52999
$num = intval($codi_postal); // Converteix el codi postal (que és una string) a número per poder treballar amb intervals
if ($num >= 01000 && $num <= 52999){ // Si el nombre està entre el 01000 i el 52999
return true;
} else { // Si el nombre no està en aquest interval
return false;
}
}
Funció tractarCadena
La funció tractarCadena té l’objectiu de sustituir tots els caràcters especials (accents, dièresi, etc), treure tots els possibles espais (tant al principi, final o entremig) i convertir-ho tot a minúscules.
La funció rep un sol paràmetre, la cadena a tractar.
// Passar una cadena a minúscules sense espais i sense caràcters especials
function tractarCadena($cadena){
$cadena = str_replace(
['á','à','ä','â','ã','Á','À','Â','Ä','Ã',
'é','è','ë','ê','É','È','Ê','Ë',
'í','ì','ï','î','Í','Ì','Ï','Î',
'ó','ò','ö','ô','õ','Ó','Ò','Ö','Ô','Õ',
'ú','ù','ü','û','Ú','Ù','Ü','Û',
'ñ','Ñ'],
['a','a','a','a','a','A','A','A','A','A',
'e','e','e','e','E','E','E','E',
'i','i','i','i','I','I','I','I',
'o','o','o','o','o','O','O','O','O','O',
'u','u','u','u','U','U','U','U',
'n','N'],
$cadena
);
$cadena = str_replace(' ', '', strtolower(trim($cadena)));
return $cadena;
}