Logo

Documentation

/home/vhsh1501/documentation.benjamin-bruant.com/wp-content/themes/zetheme/single.phpsingle

PHP Forms GET

Apprendre le PHP : Chapitre 13, Traitement des formulaires

GET

apparition des données dans l’url

Création du formulaire dans jeu.php :

<?php
$aDeviner = 250;
require 'header.php';
?>
<form action="/jeu.php" method="GET">
    <input type="number" name="chiffre" placeholder="entre et 1000">
    <button type="submit">Devinez</button>
</form>
<?php require 'footer.php'; ?>

Affichage de la super globale $_SERVER:

<pre>
    <?php print_r($_SERVER) ?>
</pre>
 Array
(
    [DOCUMENT_ROOT] => /home/benjamin/3-Programmation/tutorielPHP
    [REMOTE_ADDR] => ::1
    [REMOTE_PORT] => 59600
    [SERVER_SOFTWARE] => PHP/8.4.17 (Development Server)
    [SERVER_PROTOCOL] => HTTP/1.1
    [SERVER_NAME] => localhost
    [SERVER_PORT] => 8000
    [REQUEST_URI] => /jeu.php?chiffre=500 // <= l'URL est affichée dans le tableau REQUEST_URI
    [ ...

Affichage de la super globale $_GET :

<pre>
    <?php var_dump($_GET) ?>
</pre>
    array(1) {
  ["chiffre"]=>
  string(3) "500" //!\  <= type string
}
$_GET

    array(1) {
  ["chiffre"]=>
  string(3) "250"   <= l'entrée utilisateur est stockée dans un tableau 
}

Le résultat apparaît dans l’URL :http://localhost:8000/jeu.php/?chiffre=250

Récupération de la valeur entrée avec l’attribut value et la variable $_GET et ajout de la fonctionhtmlentities() pour empêcher des entrées malveillantes via le type string :

<?php
$aDeviner = 250;
require 'header.php';
?>

<form action="/jeu.php" method="GET">
    <input type="number" name="chiffre" placeholder="entre et 1000" value="<?= htmlentities($_GET['chiffre']) ?>"> //!\ <= Utiliser htmlentities() pour éviter des entrées malveillantes
    <button type="submit">Devinez</button>
</form>
<?php require 'footer.php'; ?>

Simplification et amélioration de la maintenabilité par la séparation logique/affichage et l’utilisation d’une fonction d’affichage dynamiquemessage()appelée dans functions.php par require :

function message(array $array, int $index, string $classes) {
    echo "<div class='$classes'>$array[$index]</div>";
}
<?php
require 'header.php';

$aDeviner = 250;
$value = null;
$message = [
    'Votre chiffre est trop grand',
    'Votre chiffre est trop petit',
    "Bravo, vous avez deviné le chiffre <strong>$aDeviner</strong>"
];
if (isset($_GET['chiffre'])) {
   if ($_GET['chiffre'] > $aDeviner) {
        message($message, 0, 'alert alert-danger');
    } elseif ($_GET['chiffre'] < $aDeviner) {
        message($message, 1, 'alert alert-danger');
    } else {
        message($message, 2, 'alert alert-success');
    }
    $value = (int)$_GET['chiffre'];
}
?>

<form action="/jeu.php" method="GET">
    <div class="form-group">
        <input type="number" name="chiffre" placeholder="entre et 1000" value="<?= $value ?>">
    </div>
    <button type="submit" class="btn btn-primary">Devinez</button>
</form>
<?php require 'footer.php'; ?>