En esta página se muestran una parte de las soluciones de los ejercicios Cabeceras.
Si lo prefiere, puede descargar unas posibles soluciones completas de estos ejercicios.
Estos ejercicios están formados por dos páginas:
En la segunda página se puede utilizar la estructura de recogida y comprobación de datos vista en el tema anterior (variable $controlOk por cada $control recibido, etc.). En realidad, si sólo se recibe un control, esa estructura no es necesaria y el programa se puede simplificar. Por eso, en los cuatro primeros ejercicios se ofrecen dos versiones de la segunda página, una sin la estructura de recogida y comprobación de datos y otra con la estructura completa. Sin embargo en el ejercicio quinto, en el que el formulario contiene dos controles, entonces sí que es conveniente incluir la estructura completa.
Por otro lado, a partir del ejercicio 2, la primera página (el formulario) recibe datos de la segunda página. Por tanto, la primera página debe incluir la función recoge() y mostrar en caso necesario los datos. En estos ejercicios, la primera página no necesita comprobar los datos recibidos: simplemente, si se reciben, se muestran, y si no se reciben, no se muestran.
En esos ejercicios en los que ambas páginas reciben y envían datos, se recomienda hacer cada ejercicio siguiendo el recorrido de la aplicación. Es decir:
cabeceras-01-2.php
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el nombre
$nombre = recoge("nombre");
// Comprobamos el nombre. Si es vacío volvemos al formulario
if ($nombre == "") {
header("Location:cabeceras-01-1.php");
exit;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 1 (Resultado)</h1>
<?php
// Mostramos el nombre
print " <p>Su nombre es <strong>$nombre</strong>.</p>\n";
print "\n";
?>
<p><a href="cabeceras-01-1.php">Volver al formulario.</a></p>
// ...
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el nombre
$nombre = recoge("nombre");
$nombreOk = false;
// Comprobamos el nombre. Si es vacío, volvemos al formulario
if ($nombre == "") {
header("Location:cabeceras-01-1.php");
exit;
} else {
$nombreOk = true;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 1 (Resultado)</h1>
<?php
// Si el nombre es correcto, lo mostramos
if ($nombreOk) {
print " <p>Su nombre es <strong>$nombre</strong>.</p>\n";
print "\n";
}
?>
<p><a href="cabeceras-01-1.php">Volver al formulario.</a></p>
// ...
cabeceras-02-1.php
<?php
print " <p>\n";
print " <label>Escriba su nombre: <input type=\"text\" name=\"nombre\" size=\"20\" maxlength=\"20\"></label>\n";
print " </p>\n";
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el aviso
$aviso = recoge("aviso");
print " <p>\n";
print " <label>Escriba su nombre: <input type=\"text\" name=\"nombre\" size=\"20\" maxlength=\"20\"></label>\n";
// Si hemos recibido un aviso, lo mostramos
if ($aviso != "") {
print " <span class=\"aviso\">$aviso</span>\n";
}
print " </p>\n";
print "\n";
?>
// Si hemos recibido un aviso, lo mostramos
if ($aviso == "") {
print " <p>\n";
print " <label>Escriba su nombre: <input type=\"text\" name=\"nombre\" size=\"20\" maxlength=\"20\"></label>\n";
print " </p>\n";
} else {
print " <p>\n";
print " <label>Escriba su nombre: <input type=\"text\" name=\"nombre\" size=\"20\" maxlength=\"20\"></label>\n";
print " <span class=\"aviso\">$aviso</span>\n";
print " </p>\n";
}
print " <p>\n";
print " <label>Escriba su nombre: <input type=\"text\" name=\"nombre\" size=\"20\" maxlength=\"20\"></label>\n";
print " <span class=\"aviso\">$aviso</span>\n";
print " </p>\n";
print "\n";
cabeceras-02-2.php
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el nombre
$nombre = recoge("nombre");
// Comprobamos el nombre. Si es vacío volvemos al formulario enviando un aviso
if ($nombre == "") {
header("Location:cabeceras-02-1.php?aviso=No ha escrito su nombre");
exit;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 2 (Resultado)</h1>
<?php
// Mostramos el nombre
print " <p>Su nombre es <strong>$nombre</strong>.</p>\n";
print "\n";
?>
<p><a href="cabeceras-02-1.php">Volver al formulario.</a></p>
// ...
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el nombre
$nombre = recoge("nombre");
$nombreOk = false;
// Comprobamos el nombre. Si es vacío, volvemos al formulario enviando un aviso
if ($nombre == "") {
header("Location:cabeceras-02-1.php?aviso=No ha escrito su nombre");
exit;
} else {
$nombreOk = true;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 2 (Resultado)</h1>
<?php
// Si el nombre es correcto, lo mostramos
if ($nombreOk) {
print " <p>Su nombre es <strong>$nombre</strong>.</p>\n";
print "\n";
}
?>
<p><a href="cabeceras-02-1.php">Volver al formulario.</a></p>
// ...
cabeceras-03-1.php
<?php
print " <p>\n";
print " <label>Escriba su edad (entre 18 y 130 años): <input type=\"text\" name=\"edad\" size=\"5\" maxlength=\"3\"></label>\n";
print " </p>\n";
print "\n";
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el aviso
$aviso = recoge("aviso");
print " <p>\n";
print " <label>Escriba su edad (entre 18 y 130 años): <input type=\"text\" name=\"edad\" size=\"5\" maxlength=\"3\"></label>\n";
// Si hemos recibido un aviso, lo mostramos
if ($aviso != "") {
print " <span class=\"aviso\">$aviso</span>\n";
}
print " </p>\n";
print "\n";
?>
cabeceras-03-2.php
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos la edad
$edad = recoge("edad");
$edadOk = false;
// Comprobamos la edad. Si detectamos un error, volvemos al formulario enviando el aviso correspondiente
if ($edad == "") {
header("Location:cabeceras-03-1.php?aviso=No ha escrito su edad");
exit;
} elseif (!is_numeric($edad)) {
header("Location:cabeceras-03-1.php?aviso=No ha escrito su edad como número");
exit;
} elseif (!ctype_digit($edad)) {
header("Location:cabeceras-03-1.php?aviso=No ha escrito su edad como número entero");
exit;
} elseif ($edad < 18 || $edad > 130) {
header("Location:cabeceras-03-1.php?aviso=Su edad no está entre 18 y 130 años");
exit;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 3 (Resultado)</h1>
<?php
// Mostramos la edad
print " <p>Su edad es <strong>$edad</strong> años.</p>\n";
print "\n";
?>
<p><a href="cabeceras-03-1.php">Volver al formulario.</a></p>
// ...
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos la edad
$edad = recoge("edad");
$edadOk = false;
// Comprobamos la edad. Si detectamos un error, volvemos al formulario enviando el aviso correspondiente
if ($edad == "") {
header("Location:cabeceras-03-1.php?aviso=No ha escrito su edad");
exit;
} elseif (!is_numeric($edad)) {
header("Location:cabeceras-03-1.php?aviso=No ha escrito su edad como número");
exit;
} elseif (!ctype_digit($edad)) {
header("Location:cabeceras-03-1.php?aviso=No ha escrito su edad como número entero");
exit;
} elseif ($edad < 18 || $edad > 130) {
header("Location:cabeceras-03-1.php?aviso=Su edad no está entre 18 y 130 años");
exit;
} else {
$edadOk = true;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 3 (Resultado)</h1>
<?php
// Si la edad es correcta, la mostramos
if ($edadOk) {
print " <p>Su edad es <strong>$edad</strong> años.</p>\n";
print "\n";
}
?>
<p><a href="cabeceras-03-1.php">Volver al formulario.</a></p>
// ...
cabeceras-04-1.php
<?php
print " <p>\n";
print " <label>Escriba su edad (entre 18 y 130 años): <input type=\"text\" name=\"edad\" size=\"5\" maxlength=\"3\"></label>\n";
print " </p>\n";
print "\n";
?>
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el aviso y la edad
$aviso = recoge("aviso");
$edad = recoge("edad");
print " <p>\n";
print " <label>Escriba su edad (entre 18 y 130 años): <input type=\"text\" name=\"edad\" ";
// Si hemos recibido la edad, la incluimos en el control
if ($edad != "") {
print "value=\"$edad\" ";
}
print "size=\"5\" maxlength=\"3\"></label>\n";
// Si hemos recibido un aviso, lo mostramos
if ($aviso != "") {
print " <span class=\"aviso\">$aviso</span>\n";
}
print " </p>\n";
print "\n";
?>
cabeceras-04-2.php
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos la edad
$edad = recoge("edad");
// Comprobamos la edad. Si detectamos un error, volvemos al formulario enviando el aviso correspondiente y la edad
if ($edad == "") {
header("Location:cabeceras-04-1.php?aviso=No ha escrito su edad&edad=$edad");
exit;
} elseif (!is_numeric($edad)) {
header("Location:cabeceras-04-1.php?aviso=No ha escrito su edad como número&edad=$edad");
exit;
} elseif (!ctype_digit($edad)) {
header("Location:cabeceras-04-1.php?aviso=No ha escrito su edad como número entero&edad=$edad");
exit;
} elseif ($edad < 18 || $edad > 130) {
header("Location:cabeceras-04-1.php?aviso=Su edad no está entre 18 y 130 años&edad=$edad");
exit;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 4 (Resultado)</h1>
<?php
// Mostramos la edad
print " <p>Su edad es <strong>$edad</strong> años.</p>\n";
print "\n";
?>
<p><a href="cabeceras-04-1.php">Volver al formulario.</a></p>
// ...
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos la edad
$edad = recoge("edad");
$edadOk = false;
// Comprobamos la edad. Si detectamos un error, volvemos al formulario enviando el aviso correspondiente y la edad
if ($edad == "") {
header("Location:cabeceras-04-1.php?aviso=No ha escrito su edad&edad=$edad");
exit;
} elseif (!is_numeric($edad)) {
header("Location:cabeceras-04-1.php?aviso=No ha escrito su edad como número&edad=$edad");
exit;
} elseif (!ctype_digit($edad)) {
header("Location:cabeceras-04-1.php?aviso=No ha escrito su edad como número entero&edad=$edad");
exit;
} elseif ($edad < 18 || $edad > 130) {
header("Location:cabeceras-04-1.php?aviso=Su edad no está entre 18 y 130 años&edad=$edad");
exit;
} else {
$edadOk = true;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 4 (Resultado)</h1>
<?php
// Si la edad es correcta, la mostramos
if ($edadOk) {
print " <p>Su edad es <strong>$edad</strong> años.</p>\n";
print "\n";
}
?>
<p><a href="cabeceras-04-1.php">Volver al formulario.</a></p>
// ...
cabeceras-05-1.php
<?php
print " <table>\n";
print " <tbody>\n";
print " <tr>\n";
print " <td><label for=\"nombre\">Escriba su nombre:</label></td>\n";
print " <td><input type=\"text\" name=\"nombre\" size=\"20\" maxlength=\"20\" id=\"nombre\"></td>\n";
print " </tr>\n";
print " <tr>\n";
print " <td><label for=\"edad\">Escriba su edad (entre 18 y 130 años):</label></td>\n";
print " <td><input type=\"text\" name=\"edad\" size=\"5\" maxlength=\"3\" id=\"edad\"></td>\n";
print " </tr>\n";
print " </tbody>\n";
print " </table>\n";
print "\n";
?>
En este código, el aviso sólo se incluye cuando se ha recibido, pero el atributo value se incluye siempre, aunque sea vacío, ya que este atributo con un valor vacío no afecta nunca a la visualización de la página.
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos la edad y el nombre y los avisos correspondientes
$nombre = recoge("nombre");
$avisoNombre = recoge("avisoNombre");
$edad = recoge("edad");
$avisoEdad = recoge("avisoEdad");
print " <table>\n";
print " <tr>\n";
print " <td><label for=\"nombre\">Escriba su nombre:</label></td>\n";
// Incluimos el nombre recibido (aunque sea en blanco) en el control
print " <td><input type=\"text\" name=\"nombre\" value=\"$nombre\" size=\"20\" maxlength=\"20\" id=\"nombre\">";
// Si hemos recibido un aviso sobre el nombre, lo mostramos
if ($avisoNombre) {
print " <span class=\"aviso\">$avisoNombre</span>";
}
print "</td>\n";
print " </tr>\n";
print " <tr>\n";
print " <td><label for=\"edad\">Escriba su edad (entre 18 y 130 años):</label></td>\n";
// Incluimos la edad recibida (aunque sea en blanco) en el control
print " <td><input type=\"text\" name=\"edad\" value=\"$edad\" size=\"5\" maxlength=\"3\" id=\"edad\">";
// Si hemos recibido un aviso sobre la edad, lo mostramos
if ($avisoEdad) {
print " <span class=\"aviso\">$avisoEdad</span>";
}
print "</td>\n";
print " </tr>\n";
print " </table>\n";
print "\n";
?>
cabeceras-05-2.php
<?php
// Función de recogida de datos
function recoge($key, $type = "")
{
if (!is_string($key) && !is_int($key) || $key == "") {
trigger_error("Function recoge(): Argument #1 (\$key) must be a non-empty string or an integer", E_USER_ERROR);
} elseif ($type !== "" && $type !== []) {
trigger_error("Function recoge(): Argument #2 (\$type) is optional, but if provided, it must be an empty array or an empty string", E_USER_ERROR);
}
$tmp = $type;
if (isset($_REQUEST[$key])) {
if (!is_array($_REQUEST[$key]) && !is_array($type)) {
$tmp = trim(htmlspecialchars($_REQUEST[$key]));
} elseif (is_array($_REQUEST[$key]) && is_array($type)) {
$tmp = $_REQUEST[$key];
array_walk_recursive($tmp, function (&$value) {
$value = trim(htmlspecialchars($value));
});
}
}
return $tmp;
}
// Recogemos el nombre y la edad
$nombre = recoge("nombre");
$edad = recoge("edad");
$nombreOk = false;
$edadOk = false;
$avisoNombre = "";
$avisoEdad = "";
// Comprobamos el nombre. Si detectamos un error, guardamos el aviso correspondiente
if ($nombre == "") {
$avisoNombre = "No ha escrito su nombre";
} else {
$nombreOk = true;
}
// Comprobamos la edad. Si detectamos un error, guardamos el aviso correspondiente
if ($edad == "") {
$avisoEdad = "No ha escrito su edad";
} elseif (!is_numeric($edad)) {
$avisoEdad = "No ha escrito la edad como número";
} elseif (!ctype_digit($edad)) {
$avisoEdad = "No ha escrito la edad como número entero";
} elseif ($edad < 18 || $edad > 130) {
$avisoEdad = "La edad no está entre 18 y 130 años";
} else {
$edadOk = true;
}
// Si hemos detectado algún error, volvemos al formulario enviando los avisos y los datos recibidos
if (!$nombreOk || !$edadOk) {
header("Location:cabeceras-05-1.php?nombre=$nombre&avisoNombre=$avisoNombre&edad=$edad&avisoEdad=$avisoEdad");
exit;
}
?>
<!DOCTYPE html>
// ...
<h1>Formulario 5 (Resultado)</h1>
<?php
// Si el nombre y la edad son correctos, los mostramos
if ($nombreOk && $edadOk) {
print " <p>Su nombre es <strong>$nombre</strong>.</p>\n";
print "\n";
print " <p>Su edad es <strong>$edad</strong> años.</p>\n";
print "\n";
}
?>
<p><a href="cabeceras-05-1.php">Volver al formulario.</a></p>
// ...
cabeceras-11-css.php
<?php
// Enviamos una cabecera para indicar al navegador que se trata de una hoja de estilo
header("Content-type: text/css");
// en vez de elegir un color al azar entre 0 y 360 he utilizado
// una fórmula para que salgan uno entre 19 valores: 0, 20, 40, etc.
$color = 20 * rand(0, 18);
$tamano = rand(100, 300) / 100;
print "body {\n";
print " background-color: hwb($color 60% 0%);\n";
print " font-family: sans-serif;\n";
print " font-size: {$tamano}rem;\n";
print "}\n";
print "\n";
print "h1 {\n";
print " padding: 0 10px 5px;\n";
print " border-radius: 10px;\n";
print " background-color: hwb($color 0% 40%);\n";
print " color: hwb($color 20% 0%);\n";
print "}\n";
print "\n";
?>
footer {
border-top: black 1px solid;
margin-top: 2em;
}
cabeceras-12-svg.php
<?php
// Enviamos una cabecera para indicar al navegador que se trata de una imagen
header("Content-type: image/svg+xml");
$radio = rand(10, 20);
$cx = rand($radio + 1, 148 - $radio);
$cy = rand($radio + 1, 148 - $radio);
print "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n";
print "<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" \n"
. " width=\"150\" height=\"150\" viewBox=\"0 0 150 150\">\n";
print " <rect fill=\"none\" stroke=\"black\" stroke-width=\"1\" "
. "x=\"1\" y=\"1\" width=\"148\" height=\"148\" />\n";
print " <circle cx=\"$cx\" cy=\"$cy\" r=\"$radio\" fill=\"black\" />\n";
print "</svg>";
?>