Ves al contingut principal

Mètode GET

El mètode GET és el més comú i es fa servir per a sol·licitar dades d'un servidor. Els paràmetres s'envien com a part de la URL i són visibles a la barra d'adreces del navegador. La sintaxi és la següent:

URL_base?clau1=valor1&clau2=valor2

Quan un usuari fa clic a un enllaç o escriu una adreça amb paràmetres GET, el navegador envia una sol·licitud al servidor que inclou aquesta URL completa. El servidor web rep la sol·licitud i un llenguatge de programació com PHP pot accedir a aquests paràmetres a través de l'array associatiu $_GET.

Avantatges:

  • Són fàcils de compartir, ja que la URL es pot copiar i enganxar.

  • Permeten que les pàgines amb filtres o cerques siguin indexables pels motors de cerca.

  • S'utilitzen per a operacions idempotents, és a dir, sol·licituds que no canvien l'estat del servidor (com una cerca o la visualització d'un producte).

Inconvenients:

  • Limitació de grandària (al voltant de 2048 caràcters).

  • Les dades són públiques i visibles, per la qual cosa no s'han d'utilitzar mai per a informació sensible com contrasenyes o dades de targetes de crèdit.

El mètode GET exemplifica visibilitat i simplicitat

Com funciona?

Quan fas una sol·licitud GET, el navegador inclou els paràmetres com a part de l'adreça, després d'un signe d'interrogació (?). Cada parell de clau=valor es separa amb un ampersand (&).

Exemple: https://exemple.com/productes.php?categoria=roba&preu_max=50

Aquí, el servidor sap que ha de buscar productes de la categoria "roba" amb un preu màxim de "50".

<!DOCTYPE html>
<html lang="ca">
<head>
    <meta charset="UTF-8">
    <title>La nostra Botiga</title>
</head>
<body>

<h1>Llista de Productes</h1>

<?php

// Primer, comprovem si els paràmetres 'categoria' i 'preu_max' existeixen a la URL.
// Això prevé errors si algú accedeix a la pàgina sense filtres.
if (isset($_GET['categoria']) && isset($_GET['preu_max'])) {
    
    // Accedim als valors de l'array superglobal $_GET
    $categoria_filtre = $_GET['categoria'];
    $preu_maxim_filtre = $_GET['preu_max'];

    // Simulem una base de dades amb un array
    $productes = [
        ['nom' => 'Samarreta', 'categoria' => 'roba', 'preu' => 25],
        ['nom' => 'Pantalons', 'categoria' => 'roba', 'preu' => 60],
        ['nom' => 'Sabates esportives', 'categoria' => 'calçat', 'preu' => 85],
        ['nom' => 'Jaqueta texana', 'categoria' => 'roba', 'preu' => 45],
        ['nom' => 'Vestit', 'categoria' => 'roba', 'preu' => 70],
    ];

    echo "<p>Mostrant productes de la categoria **'{$categoria_filtre}'** ";
    echo "amb un preu màxim de **{$preu_maxim_filtre}€**.</p>";
    echo "<ul>";

    // Recorrem el nostre array de productes i apliquem els filtres
    foreach ($productes as $producte) {
        if ($producte['categoria'] === $categoria_filtre && $producte['preu'] <= $preu_maxim_filtre) {
            echo "<li>{$producte['nom']} ({$producte['preu']}€)</li>";
        }
    }

    echo "</ul>";

} else {
    // Si no s'han passat paràmetres, mostrem un missatge d'avís
    echo "<p>Si us plau, utilitza la URL amb paràmetres per filtrar els ";
    echo "productes, per exemple: <br><br>";
    echo "<code>https://exemple.com/productes.php?categoria=roba&preu_max=50</code></p>";
}

?>
</body>
</html>