Formularios en PHP
Formularios en PHP
Indice de contenido
1. Introducción 4. Validación
1. Introducción
<html>
<body>
<form action="formpost.php" method="post">
Nombre: <input type="text" name="nombre"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
Cuando un usuario rellena los datos y hace click en enviar, los datos del formulario
se envían para ser procesados al archivo formpost.php. Los datos se envían a través
de HTTP con el método HTTP Post.
Una vez los datos están en formpost.php pueden mostrarse, guardarse en una base
de datos o lo que se necesite. En formpost.php vamos a mostrarlos con echo:
<html>
<body>
Hola <?php echo $_POST["nombre"]; ?><br>
Tu email es: <?php echo $_POST["email"]; ?>
</body>
</html>
Lo mismo se puede conseguir con el método HTTP GET:
<html>
<body>
<form action="formget.php" method="get">
Nombre: <input type="text" name="nombre"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Enviar">
</form>
</body>
</html>
Ahora el archivo donde recibimos los datos es formget.php:
<html>
<body>
Hola <?php echo $_GET["nombre"]; ?><br>
Tu email es: <?php echo $_GET["email"]; ?>
</body>
</html>
Estos han sido dos ejemplos muy sencillos para ver el funcionamiento básico de
un formulario. Siempre que se crean formularios hay que tener muy en cuenta
la seguridad, y para ello se utiliza la validación de formularios.
2. GET y POST
$_GET y $_POST son variables superglobales que forman arrays de keys y values,
donde los keys son los nombres del formulario (atributo "name") y los values son los
datos de entrada de los usuarios. El hecho de que sean superglobals hace que
sean accesibles desde el script independientemente del ámbito.
3. Tipos de elementos
Elemento Descripción
input
Caja de texto donde se muestran asteriscos en lugar de los caracteres escritos
type="password"
input
Cajas seleccionables que permite escoger múltiples opciones
type="checkbox"
input type="radio" Cajas seleccionables en grupos que sólo permiten escoger una opción
Los 10 tipos de elementos más importantes para los formularios HTML con
PHP son:
4. Validación
El siguiente es un sencillo formulario algo más complejo con los siguiente datos:
Nombre, Contraseña, Educacion, Nacionalidad, Idiomas, Email y Sitio web:
<h2>Formulario:</h2>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
Nombre:
<input type="text" name="nombre" maxlength="50"><br>
Contraseña:
<input type="password" name="password"><br>
Educacion:
<select name="educacion">
<option value="sin-estudios">Sin estudios</option>
<option value="educacion-obligatoria" selected="selected">Educación
Obligatoria</option>
<option value="formacion-profesional">Formación profesional</option>
<option value="universidad">Universidad</option>
</select> <br>
Nacionalidad:
<input type="radio" name="nacionalidad" value="hispana">Hispana</input>
<input type="radio" name="nacionalidad" value="otra">Otra</input><br>
Idiomas:
<input type="checkbox" name="idiomas[]" value="español"
checked="checked">Español</input>
<input type="checkbox" name="idiomas[]" value="inglés">Inglés</input>
<input type="checkbox" name="idiomas[]" value="francés">Francés</input>
<input type="checkbox" name="idiomas[]" value="aleman">Alemán</input><br>
Email:
<input type="text" name="email"><br>
Sitio Web:
<input type="text" name="sitioweb"><br>
// Botón de enviar
<input type="submit" name="submit" value="Enviar">
</form>
</body>
</html>
En este ejemplo todas las acciones de validar, enviar y recibir datos se hacen en el
mismo archivo form.php.
Primero vamos a crear un filtrado común para todos los campos con la
función filtrado():
Todos los campos anteriores son opcionales. La validación más básica consiste
en exigir que se rellene un campo, y comprobaremos también que el email tiene
un formato de email, que el sitio web es una URL correcta y
que password tiene un mínimo de 5 caracteres. Las validaciones de
formatos pueden realizarse mediante expresiones regulares o con filtros. Siempre
que sea posible, es mejor utilizar los filtros de PHP.
<UL>
<?PHP IF(ISSET($ERRORES)){
FOREACH ($ ERRORES AS $ ERROR ){
ECHO "< LI > $ ERROR </ LI >";
}
}
?>
</UL>
5. Subida de archivos
Valo
Error Significado
r
UPLOAD_ERR_NO_TMP_DI
6 Falta la carpeta temporal
R
$directorioSubida = "uploads/";
$max_file_size = "51200";
if(isset($_POST["submit"]) && isset($_FILES['imagenes'])){
$nombres = $_FILES['imagenes']['name'];
$temporales = $_FILES['imagenes']['tmp_name'];
$tipos = $_FILES['imagenes']['type'];
$errores = $_FILES['imagenes']['error'];
// Iteramos sobre los arrays creados
for ($i = 0; $i < count($temporales); $i++){
if(move_uploaded_file($temporales[$i], $directorioSubida.$nombres[$i])){
echo "Se ha subido {$nombres[$i]} correctamente <br>";
} else {
echo "Ha habido algún error al subir algún archivo";
}
}
}