Vérification données saisies par utilisateur, alerte avant validation
Bonjour,
j'ai un formulaire dans lequel les utilisateurs vont entrer leur coordonnées GPS à la main (pour le moment on en est là).
Voici le code en question
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
<form method="post" action="ecrire_horloge.php">
<h1>Mes données : </h1>
<!-- liste déroulante des identités -->
<label><h3>Choisir un nom : </h3><br />
<select name="identite">
<option value="1">Toto</option>
<option value="2">Titi</option>
<option value="3">Tutu</option>
</select>
</label>
<br />
<h3>Déterminer le lieu.</h3>
<p>Je suis
<!-- lieu libre de remplissage -->
<input
type="text"
id="lieu"
name="lieu"
placeholder="à la maison"
title="lieu où vous vous trouvez"
required
minlength="2"
maxlength="128"
size="40"
></p>
(Entrez un texte de lieu pour compléter la phrase « Je suis » sous une forme lisible de type « à la cantine », « chez Bidule », « dans le métro », « sur le chemin du travail », etc.)
<br />
<br />
<h3>Coordonnées GPS</h3>
<p>Latitude :
<input
type="text"
id="latitude"
name="latitude"
placeholder="50.17"
title="latitude"
required
minlength="1"
maxlength="32"
size="32"
>
, longitude :
<input
type="text"
id="longitude"
name="longitude"
placeholder="3.47"
title="longitude"
required
minlength="1"
maxlength="32"
size="32"
></p>(uniquement des chiffres, le séparateur doit être un point et non une virgule)
<br />
<i>-- > On peut obtenir ses latitude et longitude sur googleMaps (choisir le lieu puis clic droit, c'est le premier de la liste) ou OpenStreetMaps (choisir le lieu, clic droit afficher l'adresse, les coordonnées s'affichent à droite)</i>
<br />
<h3><input type="submit" value="envoyer mes données" /></h3>
</form> |
Ce qui me pose problème c'est qu'en cas de mauvais remplissage de ces coordonnées GPS, ça déconne plus loin dans ma page d'affichage sur carte OSM. En outre, la latitude doit être comprise en -90 et 90 et la longitude -180 et 180 (sinon, ça déconne aussi)
Donc je voudrais pouvoir filtrer en amont.
J'ai trouvé un tuto qui explique comment détecter si le contenu d'une variable est bien numérique et si elle est comprise entre telle et telle valeur.
Voici un exemple de ce code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <?php
$tests = array(
"42",
"1337",
"ohlala",
"1,5",
"1.5",
);
// TEST NUMÉRIQUE OU PAS
foreach ($tests as $element)
{
if (is_numeric($element))
{
echo var_export($element, true) . " est numérique <br />";
}
else
{
echo var_export($element, true) . " N'est PAS numérique <br />";
}
}
// TEST BONNE VALEUR
foreach ($tests as $element)
{
if (is_numeric($element))
{
if ($element < 180 && $element > -180)
{
echo var_export($element, true) . " est entre -180 et 180 <br />";
}
else
{
echo var_export($element, true) . " est en dehors des limites <br />";
}
}
}
?> |
Dont le résultat à l'affichage est
'42' est numérique
'1337' est numérique
'ohlala' N'est PAS numérique
'1,5' N'est PAS numérique
'1.5' est numérique
'42' est entre -180 et 180
'1337' est en dehors des limites
'1.5' est entre -180 et 180
Donc il filtre bien.
Avec ce type de filtre, je serai capable de l'implémenter dans dans la cible du formulaire (ecrire_horloge.php) et refuser de récupérer les données qui ne sont pas correctes et éventuellement afficher une alerte genre « vos données lat-lon sont mauvaises, on ne les a pas prises en compte » (voire même un message plus précis disant « la valeur n'est pas dans les limites untel » « ce n'est pas des chiffres » « vous avez laissé une virgule, un espace, » etc.
Toutefois, si cela me prémunira d'avoir des données corrompues dans mon xml, je ne suis pas tout à fait satisfait.
Je voudrais que cette alerte puisse s'afficher dans le formulaire html, AVANT que la personne ne clique sur le bouton submit, pour qu'elle puisse corriger son texte. Mais est-ce réalisable ? Et comment ?