Documentació de la pràctica 4.1: diferència entre les revisions
Cap resum de modificació |
|||
| Línia 80: | Línia 80: | ||
El codi HTML tindrá dues parts: la primera en cas que hi hagi una galeta definida i la segona en cas que no hi hagi cap galeta definida. | El codi HTML tindrá dues parts: la primera en cas que hi hagi una galeta definida i la segona en cas que no hi hagi cap galeta definida. | ||
Per comprovar si hi ha alguna galeta definida, realitzarem un condicional que comprovi la variable $te_galetes | Per comprovar si hi ha alguna galeta definida, realitzarem un condicional que comprovi la variable $te_galetes | ||
Revisió del 14:47, 16 des 2025
Creació de la galeta
Sempre que en una pàgina web s’incloguin galetes, totes les seves gestions s’han de fer abans del codi HTML. És per això que el codi comença directament amb la creació de la galeta.
La galeta es crea quan el formulari d’entrada (de tipus POST) rep els dos valors, el nom i cognom.
// En el moment que el formulari s'envia com a POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['nom']) && isset($_POST['cognom'])) { // Comprovem que els dos camps tinguin un valor
$nom = trim($_POST['nom']); // Assignem les variables als valors entrats
$cognom = trim($_POST['cognom']); // Assignem les variables als valors entrats
Seguidament, creem una variable que el seu valor serà els segons de la caducitat de la galeta
// Temps de caducitat: 1 hora (per la creació de les galetes) $temps_caducitat = 3600;
I crearem una galeta amb les següents condicions:
- Nom: "nom"
- valor: Variable $nom definida anteriorment
- Caducitat: 3600 segons
- Ruta: Arrel (/)
// Creem una galeta de nom "nom", el valor és la variable $nom, el temps de caducitat ("time" és l'hora d'ara + el temps desitjat) i la ubicació (l'arrel)
setcookie('nom', $nom, time() + $temps_caducitat, '/');
A més, crearem una altre galeta pel cognom
// Creem una galeta de nom "cognom", el valor és la variable $cognom, el temps de caducitat ("time" és l'hora d'ara + el temps desitjat) i la ubicació (l'arrel)
setcookie('cognom', $cognom, time() + $temps_caducitat, '/');
Finalment, per tal de que prengui efecte el valor de la galeta, haurem de refrescar la pàgina. Ho realitzarem mitjançant una redirecció a la pròpia pàgina (com si fos un F5)
// Un cop s'envia el formulari, s'ha de refrescar la pàgina. Indiquem que es redirigeix a la mateixa pàgina (un F5)
header('Location: ' . $_SERVER['PHP_SELF']);
El codi sencer per la creació de la galeta és el següent:
// En el moment que el formulari s'envia com a POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['nom']) && isset($_POST['cognom'])) { // Comprovem que els dos camps tinguin un valor
$nom = trim($_POST['nom']); // Assignem les variables als valors entrats
$cognom = trim($_POST['cognom']); // Assignem les variables als valors entrats
// Temps de caducitat: 1 hora (per la creació de les galetes)
$temps_caducitat = 3600;
// Creació de galetes
// Creem una galeta de nom "nom", el valor és la variable $nom, el temps de caducitat ("time" és l'hora d'ara + el temps desitjat) i la ubicació (l'arrel)
setcookie('nom', $nom, time() + $temps_caducitat, '/');
// Creem una galeta de nom "cognom", el valor és la variable $cognom, el temps de caducitat ("time" és l'hora d'ara + el temps desitjat) i la ubicació (l'arrel)
setcookie('cognom', $cognom, time() + $temps_caducitat, '/');
// Un cop s'envia el formulari, s'ha de refrescar la pàgina. Indiquem que es redirigeix a la mateixa pàgina (un F5)
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
}
Esborrament de la galeta
Seguidament, haurem de definir com s'elimina la galeta. Això es realitzarà quan es premi el botó d'esborrar les galetes.
Per esborrar una galeta únicament cal especificar el nom de la galeta, indicar un valor "buit" i un temps negatiu, indicant que ja ha caducat
setcookie('nom', '', time() - 3600, '/'); // La cookie "nom" agafa un valor "buit" i amb un temps de caducitat negatiu (ja ha caducat)
setcookie('cognom', '', time() - 3600, '/'); // La cookie "nom" agafa un valor "buit" i amb un temps de caducitat negatiu (ja ha caducat)
I a l'igual que amb la creació de la galeta, per tal de que prengui efecte sobre la pàgina principal, haurem de refrescar-la
// Redirecció a la mateixa pàgina, un "F5"
header('Location: ' . $_SERVER['PHP_SELF']);
El codi sencer per l'esborrament de la galeta és el següent:
// Processament d'esborrat de galetes
if (isset($_GET['esborrar'])) { // En el moment que premem el botó esborrar
setcookie('nom', '', time() - 3600, '/'); // La cookie "nom" agafa un valor "buit" i amb un temps de caducitat negatiu (ja ha caducat)
setcookie('cognom', '', time() - 3600, '/'); // La cookie "nom" agafa un valor "buit" i amb un temps de caducitat negatiu (ja ha caducat)
// Redirecció a la mateixa pàgina, un "F5"
header('Location: ' . $_SERVER['PHP_SELF']);
exit;
}
Pàgina inicial segons l'existència de galetes
Abans d'escriure codi HTML, hem de definir una variable boleana que comprova si hi ha galeta definida o no.
// Comprova si existeixen galetes $te_galetes = isset($_COOKIE['nom']) && isset($_COOKIE['cognom']); // Si la cookie "nom" i "cognom" tenen algun valor, retorna "True", en cas contrari, "False" ?>
En aquest punt ja hem definit tots els aspectes per la gestió de les galetes i podem començar a crear el codi HTML
El codi HTML tindrá dues parts: la primera en cas que hi hagi una galeta definida i la segona en cas que no hi hagi cap galeta definida.
Per comprovar si hi ha alguna galeta definida, realitzarem un condicional que comprovi la variable $te_galetes
<?php if ($te_galetes){ ?>
En cas que hi hagi una galeta definida, mostrarà el nom i cognom, juntament amb un botó per esborrar la galeta
<h1>Benvingut de nou, <?php echo htmlspecialchars($_COOKIE['nom'] . ' ' . $_COOKIE['cognom']); ?></h1>
<form method="get">
<button type="submit" name="esborrar" value="1">Esborreu les galetes</button>
</form>
En cas que no hi hagi cap galeta definida (i la variable $te_galetes és fals), mostrarà el formulari per introduir el nom i cognom
<h1>Introdueix el nom i cognoms</h1>
<form method="post">
<label>Nom:</label><br>
<input type="text" name="nom" required> <br><br>
<label>Cognom:</label><br>
<input type="text" name="cognom" required> <br><br>
<button type="submit">Desa</button>
</form>
El codi sencer del que es mostra a la pàgina, incloent-hi la condició de les galetes, és el següent:
<?php if ($te_galetes){ ?>
<h1>Benvingut de nou, <?php echo htmlspecialchars($_COOKIE['nom'] . ' ' . $_COOKIE['cognom']); ?></h1>
<form method="get">
<button type="submit" name="esborrar" value="1">Esborreu les galetes</button>
</form>
<?php } else { ?>
<h1>Introdueix el nom i cognoms</h1>
<form method="post">
<label>Nom:</label><br>
<input type="text" name="nom" required> <br><br>
<label>Cognom:</label><br>
<input type="text" name="cognom" required> <br><br>
<button type="submit">Desa</button>
</form>
<?php }; ?>
Tal i com està escrit el codi, podem veure que el condicional es pot dividir en tres "seccions" de PHP. Això permet escriure el codi HTML natiu i no mitjançant PHP mitjançant echos constantment. Tot i que el codi PHP es "tanca" sense haver acabat un condicional, no afecta al funcionament del codi per com l'interpreta PHP.
Si fóssim l'intérpret de PHP, ho veuríem així, tot i estar en "seccions" separades:
<?php if ($te_galetes){
..........
php } else {
..........
};