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'; ?>