Ejercicios (sesiones) - Cabeceras - Soluciones

En esta página se muestran una parte de las soluciones de los ejercicios Cabeceras. La solución completa se puede descargar de la página de soluciones.

Redirecciones

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 1 - Formulario 1

cabeceras-01-2.php

Cabeceras 2 - Formulario 2

cabeceras-02-1.php

cabeceras-02-2.php

Cabeceras 3 - Formulario 3

cabeceras-03-1.php

cabeceras-03-2.php

Cabeceras 4 - Formulario 4

cabeceras-04-1.php

cabeceras-04-2.php

Cabeceras 5 - Formulario 5

cabeceras-05-1.php

cabeceras-05-2.php

Tipos de archivos

Cabeceras 11 - Hoja de estilo

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: hsl($color, 100%, 80%);\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: hsl($color, 100%, 30%);\n";
print "  color: hsl($color, 100%, 60%);\n";
print "}\n";
print "\n";

?>
footer {
    border-top: black 1px solid;
    margin-top: 2em;
}

Cabeceras 12 - Imagen

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>";

?>