Aller au contenu

Des paramètres dans l'URL

Rappelons que la méthode HTTP la plus utilisée est la méthode GET.

Nous allons faire ici quelques requêtes http avec la méthode GET et l'ajout de paramètres pour le code PHP dans l'URL.

Attention

Pour les tests, vous ne pouvez pas a priori ici utiliser repl.it ou autres sites d'exécution du php. Si vous n'avez pas vos codes serveur, visualisez le résultat dans les liens qui seront donnés.

Vous pouvez aussi chercher par vous-mêmes des espaces serveurs gratuits sur le web le temps de faire vos tests. Vous pouvez consulter cette page.

Il est possible également que votre fournisseur d'accès internet vous offre un peu d'espace disque sur serveur dans le contrat.

Le plus simple est évidemment de se servir de l'espace serveur qui vous a été attribué au lycée.

Exercice 1

Écrire une page carre.php contenant le texte suivant:

<!DOCTYPE html>
<html lang="fr">

    <head>
        <meta charset="utf-8">
        <title> paramètres  </title>
    </head>

<body>

<?php

    $nombre = $_GET['entier'];
    $carre = $nombre * $nombre;
    echo "Le carré de $nombre est $carre."

?>

</body>
</html>
  1. Déposez par ftp cette page carre.php sur votre espace serveur.
  2. Ouvrez un navigateur et accèdez à cette page. Qu'affiche-t-elle?
  3. Ajoutez maintenant à la fin de l'URL le texte "?entier=6". Qu'affiche maintenant votre page? Comment expliquez-vous cela?
Une réponse

Un exemplaire de la page se trouve ici.

Lorsqu'on ouvre la page à l'aide de son URL, on obtient:

Le carré de est 0. 

Après avoir ajouté "?entier=6" à la fin de l'URL, on obtient:

Le carré de 6 est 36. 

$_GET est une variable (dite variable super globale) de PHP, cette variable est un tableau associatif qui récupère les variables passées dans l'URL (on utilise en fait la méthode GET du protocole HTTP).

Info

Un tableau associatif est proche de ce que l'on appelle dictionnaire en langage python

Lorsque l'URL se termine par "?entier=6", $_GET['entier'] a alors pour valeur 6 et le script affiche son carré.

Note

Lorsque vous ajoutez "?entier=6" en fin d'URL et appuyez sur entrée, on rappelle que le recalcul de la page n'est pas fait en local sur votre machine. L'appui sur entrée crée une nouvelle requête HTTP, le serveur reçoit cette requête, calcule la page et la renvoie à votre machine
(consultez le code source de la page avec l'url sans paramètre puis avec paramètre).

Requêtes http

Rappelons que l'on peut observer les requêtes http avec firefox: touche F12 puis sélectionner l'onglet réseau.

Lorsqu'on ouvre la page sans paramètre avec ce lien, on observe une requête http, méthode GET, sur un fichier carre.php.

Si l'on ajoute ensuite ?entier=6 à la fin de l'URL et que l'on valide, on observe cette fois une requête http, méthode GET, sur un fichier carre.php?entier=6.

Dans les deux cas, observez le type de la réponse (champ Content-Type de la réponse): ce type est text/html. Encore une fois, plus trace de php côté client, le fichier html est fabriqué côté serveur.

Exercice 2

Écrire la page couleur.php suivante:

<!DOCTYPE html>
<html lang="fr">

    <head>
        <meta charset="utf-8">
        <title> paramètres  </title>

        <style>
        <?php
            echo 'p{color:' . $_GET['couleur1'] . '; border: 2px solid '. $_GET['couleur2'] . ';}';
        ?>
        </style>

    </head>

<body>

<p>Un paragraphe captivant.</p>

</body>
</html>

Note

On a utilisé le point . pour concaténer des chaînes de caractères.

Déposez cette page par ftp sur votre espace serveur.

Cherchez sur la toile comment passer deux paramètres dans l'url et faites afficher le texte en orange et le cadre en vert.

Une réponse

Un exemplaire de la page.

L'URL de la page se terminera par "couleur.php?couleur1=orange&couleur2=green".

On utilise donc & (caractère esperluette) pour séparer les paramètres.

Exercice 3

Créez une page html avec le contenu suivant:

<!DOCTYPE html>
<html lang="fr">


<head>
    <meta charset="utf-8">
    <title> rectangle coloré  </title>
    <style>
    p{width: 10px; height:10px; background-color: pink;}
    </style>
</head>



<body>
    <p></p>
</body>
</html>

En déduire une page php qui affichera n carrés de même couleur. Le nombre n et la couleur seront passés en paramètre de l'url.

Réponse

Un code possible pour cette page:

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8">
    <title> rectangle coloré  </title>
    <style>
        p{width: 10px; height:10px;}
        <?php
            echo 'p{background-color:' . $_GET['couleur'] . ';}';
        ?>
    </style>
</head>



<body>

<?php
    $n = $_GET['n'];
    for($i = 1; $i <= $n; $i += 1){
        echo '<p></p>';
    }
?>
</body>
</html>

Vous pouvez tester une telle page ici.
On ajoutera par exemple ?couleur=orange&n=10 à l'URL.