Tipos de validaciones en PHP
Programación en Internet II
Tipos de validaciones en PHP
Tipo de validaciones
¿Está presente cada dato requerido?
En este “dialogo en etapas” que implican las paginas
dinámicas, este “estar esperando” en una segunda página
un dato que el usuario debería haber enviado hacia el
servidor desde una página anterior (ya sea con un enlace
que envía variables, o con un formulario), puede suceder
que el dato esperado nunca llegue, con lo cual se frustraría
el intento de usarlo.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Volvamos a analizar el código de un ejemplo anterior:
supongamos que tenemos una
formulario.html que contiene esto:
página
llamada
<form action="muestra.php" method="post">
<input type= "text" name="domisilio"/>
<input type="submit" value="Enviar"/>
</form>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Y también tenemos una página llamada muestra.php, que
es la página en la que estaremos esperando la variable
“domicilio”, para usarla:
<?php
print ("su direccion es: ");
print ($_POST["domicilio"]);
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Este esquema está dando por supuesta una situación
ideal, una forma esperada de navegar por estas dos
páginas, que no necesariamente será el camino que
seguirá todo usuario.
Damos por supuesto lo siguiente:
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
1. Que el usuario ingresará primero a formulario.html,
2. Que luego escribirá algo en el campo llamado
“domicilio”,
3. Que a continuación pulsara el botón de enviar,
4. Que recibirá instantáneamente después como repuesta
el resultado del procedimiento de la pagina
muestra.php, que le mostrara su domicilio.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Posiblemente, ese sea el comportamiento de la mayoría
de los usuarios, pero... y que pasara con las exposiciones
que no sigan ese camino ideal?
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
¿Qué pasaría si un usuario que ya utilizo estas dos paginas
y conoce las dos URL (o las guardo en sus favoritos), entra
directamente a muestra.php, sin haber pasado antes por
el formulario?
Es decir, si entra directamente al que suponíamos que iba
a ser el “segundo paso” de la serie de pasos, salteándose
el primero.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Lo que se obtendrá será un mensaje de error similar a
este:
Su domicilio es:
Notice: Undefined index: domicilio in ... etc.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Es decir, no se encuentra definido ninguna celda
llamada”domicilio” dentro de la matriz $_POST que se
estará intentando leer, en el archivo destino, cuando
ordenamos que el interprete de PHP muestre su valor con
la orden print($_POST["domicilio"]);.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Demás esta decir que los mensajes de error del intérprete
de PHP son algo que jamás debería aparecer en nuestras
páginas:
si hemos programado bien nuestro código, podríamos
evitar por completo esos errores.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Evitar eso errores es muy simple, es cuestión de
anticiparse a la posibilidad de ausencia de este dato
esperado, verificando primero si está presente el dato.
Sólo si está presente, procederemos a usarlo y, encaso
contrario, mostraremos alguna indicación para el usuario
(por ejemplo, un enlace hacia el formulario que debió
haber utilizado).
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
El problema en esta situación es que se están intentando
leer la celda $_POST["domicilio"].
Y, al no haber pasado antes por el formulario, esa celda
directamente no existe. Y no se puede leer algo que no
existe…
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Para anticiparnos a la posibilidad de ausencia de un dato
esperado, usaremos un condicional, que verifique si está
definida la variable o celda de matriz que estamos a punto
de utilizar; si está presente, en ese caso haremos uso de
ella.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Para verificar si una variable o celda de matriz se
encuentra definida, usaremos la sintaxis siguiente:
<?php
if (isset($_POST["domicilio"]) ){
print ("<p> su dirección es : ");
print ($_POST["domicilio"]);
print ("</p>");
} else {<
print ("<p>Oops! Parece que no paso por el <a
href=\"formulario.html\"> formulario</a>. por favor, pase por él y
envíenos su domicilio.</p>
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Notemos que hemos previsto las dos posibilidades:
• Que esté presente, o sea que ya sido enviado el dato
“domicilio” (en cuyo caso, lo usamos). O
• Que no haya sido proporcionado, en cuyo caso
solicitamos al usuario que pase por el formulario y lo
utilice.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Siempre utilizaremos esta validación cuando estemos
esperando que el usuario proporcione un dato, ya que es
posible que este no nos llegue.
Por esta razón, debemos anticiparnos a esa posibilidad
para no terminar en un mensaje de error.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Si queremos validar de una sola vez la llegada al servidor
de más de una variable, podemos unir con más los
nombres de esas variables (o celdas de matrices) dentro
del isset:
<?php
if
(isset($_POST["nombre"],$_POST["apellido"],$_POST["eda
d"])){
// Solo si todos estos datos están presentes, devuelve
verdadero y se ejecuta lo que este entre las llaves del if
}
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
También podríamos unir distintos isset con operadores
lógicos:
<?php
if (isset($_POST["nombre"])and
isset($_POST["apellido"])and isset $_POST["edad"])){
// Solo si todos estos datos están presentes, devuelve
verdadero y se ejecuta lo que este entre las llaves del if
}
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
La validación de “si está definido” un dato, es la más
necesaria de todas, y la usaremos siempre que esperemos
recibir un dato del lado del usuario y que, por lo tanto,
pudiera llegar a suceder que no sea proporcionado, que no
esté presente.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Si no está vacio
Otra posibilidad directamente (aunque pareciera ser igual
a la anterior, no lo es) es que el usuario si pase por el
formulario, pero lo envié hacia el servidor sin haber escrito
nada dentro del campo.
Es decir, el dato esperado si estará “definido”, habrá
llegado al servidor, pero con un valor de “nada”,
totalmente vacío.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
La diferencia entre “estar definido” y “estar vacio” es
similar a la diferencia entre el hecho de que haya llegado
una carta a nuestro buzón de correo, y que la carta este
vacía.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
• El no estar definida una variable equivale a que no nos
llego ninguna carta.
• Estar definida equivale a que llego la carta (pero todavía
puede ser que este llena o vacía, hasta que no la abramos
no la sabremos).
• Estar vacía da por sentado que llego (está definida), pero
sin contenido.
• Estar llena es la situación ideal: llego (está definida) y
tiene contenido (no está vacía).
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Validar esta posibilidad es posible mediante las
operaciones de comparación que hemos utilizado en otras
ocasiones.
Según la forma en que expresemos la condición, podemos
utilizar distintos operadores de comparación.
Podemos querer saber si algo esta vacio, y en ese caso
escribiremos así la condición:
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
<?php
if ($_POST["domicilio"] == "") {
// si es cierto, es que está vacio
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Y, en otros casos, si queremos saber si algo no está vacío,
podemos usar tanto el operador <> como el operador!=,
cualquiera de las dos:
<?php
if ($_POST["domicilio"] <> "") {
// si es cierto, es que No está vacio
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
O lo que es igual:
<?php
if ($_POST["domicilio"] != "") {
// si es cierto, es que No está vacio
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Notemos que hemos utilizado el operador de navegación!
para que la condición sea verdadera si “no es igual” a vacio
(y expresamos el valor vacio mediante “nada” entre
comillas, literalmente nada, ni siquiera un espacio vacío
entre la apertura y el cierre de las comillas).
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
De esta manera, sabremos si un dato ha sido llenado con
algún valor por el usuario antes de utilizarlo en nuestro
código.
Aplicando al ejemplo anterior, podríamos cambiar ambas
validaciones en una solo (que esté presente el dato, y que
no esté vacio) mediante un operador lógico que unas
ambas condiciones:
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
<?php
if (isset ($_POST["domicilio"]) and $_POST["domicilio"] !=""){
print ("<p> Su direcion es: ");
print ($_POST["domicilio"]);
print ("</p>");
} else {
print ("<p>Oops! Parece que no paso por el <a
href=\"formulario.html\">formulario</a>. por favor, pase y escriba
su domicilio.</p>");
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Si su valor esta dentro de un rango
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Otras
veces,
necesitaremos
comparar
valores
(generalmente numéricos) para saber si están dentro de
un rango de valores posibles.
Por ejemplo, si la variable “mes” de un formulario de un
calendario, es un número mayor a cero y menor a 13 (los
doce meses del año):
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
<?php
$mes = 10; //supongamos que esto llegaría desde un
formulario
if ($mes > 0 and $mes < = 12) {
print ("<p> Usted eligió el mes: $mes");
} else {
print ("</p> Ha elegido un mes inexistente <p/>");
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Es importante que observemos como hemos usado el
operador lógico and para definir un rango mediante la
unión de dos condiciones diferentes: que $mes sea mayor
a cero (primera condición), y que $mes sea menor o igual
a 12 (segunda condición).
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Con esos dos limites, tenemos definido un rango de
valores permitido.
Si ambas condiciones son ciertas, se ejecuta el código
envuelto entre llaves del if; en caso contrario, se ejecuta lo
envuelto entre llaves de else.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Si en vez de un único rango, se trata de una serie de rango
de valores, deberíamos utilizar una serie de else.
Si en vez de un único rango, se tratara de una serie de
rango de valores, deberíamos utilizar una serie de elseifs:
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
<?php
$total =145; // supongamos que esto llegaría desde un formulario
if ($total > 0 and $total <= 500){
if ($total <= 100){
print ("¡Muy barato! Menos de 100 pesos ...");
} elseif ($total<= 200){
print ("Buen precio, entre 101 y 200 pesos.");
} elseif ($total<= 500){
print ("Algo caro, entre 201 y 500 pesos.");
}
}else{
print ("El valor esta fuera del rango permitido de 1 a 500");
}
?>
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Notemos como estamos "anidando" distintos niveles de
condiciones:
la primera condición define el rango posible entre 1 y 500,
y solo en caso de estar dentro de ese rango, se pasa al
siguiente nivel de validación (para evaluar exactamente en
cual franja de precios se ubica).
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Esa primera condición tiene un else que comunica un
mensaje al usuario en caso de haber ingresado un total
fuera del rango permitido.
Programación en Internet II
Universidad de Guadalajara | Centro
Tipos de validaciones en PHP
Pero, una vez verificado que el valor de $total está entre 1
y 500, se procede a una serie de validaciones excluyentes,
conectadas, de las cuales solo uno de los rangos será
verdadero:
o es menor a 100, o está entre 101 y 200, o está entre 201
y 500. No hay otra posibilidad.
Programación en Internet II
Universidad de Guadalajara | Centro
Descargar

Diapositiva 1