Bonjour,
Ayant réalisé un formulaire (nom, prénom, téléphone, e-mail et message), j'essaie d'améliorer mon code de départ. Trois champs sont requis : le nom, le mail et le message que doit laisser l'internaute. J'ai placé une regex pour vérifier le format du n° de tél. Cependant, lorsque je décide de ne rien mettre dans le champ "téléphone" (et l'internaute est en droit de ne rien mettre à cet endroit car le champ n'est pas requis), le message qui annonce le mauvais "format" du téléphone apparaît (hors, j'ai spécifié au début du code que le cas à traiter était celui où la variable qui est censé accueillir le n° de tél. était spécifiée, donc contenant une donnée).
Quelqu'un aurait-il une idée de la source du problème ?
Le code :
Ayant réalisé un formulaire (nom, prénom, téléphone, e-mail et message), j'essaie d'améliorer mon code de départ. Trois champs sont requis : le nom, le mail et le message que doit laisser l'internaute. J'ai placé une regex pour vérifier le format du n° de tél. Cependant, lorsque je décide de ne rien mettre dans le champ "téléphone" (et l'internaute est en droit de ne rien mettre à cet endroit car le champ n'est pas requis), le message qui annonce le mauvais "format" du téléphone apparaît (hors, j'ai spécifié au début du code que le cas à traiter était celui où la variable qui est censé accueillir le n° de tél. était spécifiée, donc contenant une donnée).
Quelqu'un aurait-il une idée de la source du problème ?
Le code :
<?php
if (isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['telephone']) && isset($_POST['mail']) && isset($_POST['texte'])) //on vérifie que la variable 'mail' contient une donnée
{
// On rend inoffensives les balises HTML que le visiteur a pu rentrer
$_POST['nom'] = htmlspecialchars($_POST['nom']);
$_POST['prenom'] = htmlspecialchars($_POST['prenom']);
$_POST['telephone'] = htmlspecialchars($_POST['telephone']);
$_POST['mail'] = htmlspecialchars($_POST['mail']);
$_POST['texte'] = htmlspecialchars($_POST['texte']);
//si le téléphone n'a pas été rentré sous la forme imposée par la regex, un script l'annonce, puis l'internaute est redirigé vers le formulaire
if (!preg_match("#^0[1-9]([-. ]?[0-9]{2}){4}$#", $_POST['telephone']))
{
?>
<script>
alert("le téléphone n'est pas valide ! Veuillez le saisir à nouveau.");
document.location.replace('contact.html');
</script>
<?php
}
//si le mail n'a pas été rentré sous la forme imposée par la regex, un script l'annonce, puis l'internaute est redirigé vers le formulaire
if (!preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
{
?>
<script>
alert("l'adresse mail n'est pas valide ! Veuillez la saisir à nouveau sous la forme aa@a.aa (de 2 à 4 lettres après le point)");
document.location.replace('contact.html');
</script>
<?php
}
?>
<script>
alert("Votre demande a été prise en compte.");
document.location.replace('site_machinTruc.html');
</script>
<?php
}
?>