Documentació de la pràctica 4.1: diferència entre les revisions
Es crea la pàgina amb «== Documentació del codi == 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. El codi sencer per la creació de la galeta és el següent:<pre> // En el moment que el formulari s'envia com a POST if ($_SERVER['REQUEST_MET...». |
Cap resum de modificació |
||
| Línia 80: | Línia 80: | ||
</form> | </form> | ||
<?php }; ?> | <?php }; ?> | ||
</pre>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 | </pre>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:<pre> | Si fóssim l'intérpret de PHP, ho veuríem així, tot i estar en "seccions" separades:<pre> | ||
Revisió del 14:29, 16 des 2025
Documentació del codi
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.
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;
}
}
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;}
Per últim, 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
<!-- Mostrem el nom i el cognom, a més d'un formulari amb un botó per esborrar les cookies -->
<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> <!-- Botó per esborrar la cookie --> </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> <!-- Mostrem un formulari per introduir el nom i els cognoms --> <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){ ?> <!-- En cas que hi hagi galetes definides (te_galetes = True) mostrarà el següent:-->
<!-- Mostrem el nom i el cognom, a més d'un formulari amb un botó per esborrar les cookies --> <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> <!-- Botó per esborrar la cookie --> </form> <?php } else { ?> <!-- En cas que no hi hagi galetes definides mostrarà el següent--> <h1>Introdueix el nom i cognoms</h1> <!-- Mostrem un formulari per introduir el nom i els cognoms --> <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 {
..........
};