Page 1 sur 1

Formulaire vide

Posté : 15 janv. 2014, 19:05
par marcetienn
Bonjour à tous,

J'ai créé un formulaire html qui est ensuite traité en PHP. Il permet deux choses :

- L'accès à un contenu uniquement si le bon mot de passe à été donné dans le formulaire

- L'envoi d'un mail vers le webmaster pour dire qui s'est connecté avec le premier mot de passe (il y en a deux, mais on s'en fiche ici)

J'ai bien mis une vérification pour être sur que les champs ne sont pas vides (j'ai d'ailleurs fait ça sur le formulaire directement en html avec REQUIRE mais aussi avec PHP.

J'ai testé et ça fonctionne très bien, si je ne rempli pas un champ, ou si je ne mets pas une adresse mail valide, ou l'un des deux codes, ça ne passe pas.

Pourtant, parfois, certains mails m'arrivent sans le contenu des variables, je ne comprends vraiment pas pourquoi.

Voici mon code html :
<form method="POST" action="traitement.php">
<table align="center" style="margin:auto; text-align:center">
<tr>
<td>Votre E-Mail : </td><td><input type="email" required name="email" /></td>
</tr>
<tr>
<td>Code d'accès : </td><td><input type="password" required name="password" /></td>
</tr>
</table>
<input type="submit" value="Connexion" />
</form>
</td>
</tr>
</table>
et mon traitement php :
<?php
header('Content-type: text/html; charset=UTF-8');
$verifmail="!^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-zA-Z]{2,4}$!";
  
if (!$_POST['email'] OR !$_POST['password']): ?>
Il faut renseigner tous les champs
<?php elseif (!preg_match($verifmail,$_POST['email'])): ?>
Veuillez insérer une adresse mail valide
<?php elseif ($_POST['password'] == "test1" OR $_POST['password'] == "test2"): ?>
//ici ma page html avec son contenu accessible //uniquement si l'on a entré l'un des 2 mots de passe
<?php else: ?>
Le mot de passe est erroné, veuillez recommencer
<?php endif; ?>
<?php if ($_POST['password'] == "test1")
{
 $headers ='From: "TEST"<TEST>'."\n";
        $headers .='Reply-To: ' .$_POST['email']."\n";
         $headers .='Content-Type: text/plain; charset="utf-8"'."\n";
         $headers .='Content-Transfer-Encoding: 8bit';
 
         mail('[email protected]', 'test', 'test ' .$_POST['email'] , $headers);
}
?>
Merci pour votre aide !
PS : j'ai déjà posté sur le site du zéro, mais hélas sans résultat pour l'instant, donc excusez la doublette !

Re: Formulaire vide

Posté : 17 janv. 2014, 15:13
par Mazarini
Peut être qu'en deplacant if ($_POST['password'] == "test1") et le traitement dans la partie qui affiche la page.

En effet, le mail est envoyé même sans adresse mail. On doit avoir l'affichage du message pour l'adresse mail absente et l'envoi du mail.

Re: Formulaire vide

Posté : 17 janv. 2014, 18:12
par marcetienne
Bonjour, et merci de votre réponse

Oui c'est une très bonne idée, ça évitera l'envoi de mail en cas de vide.

Mais quoi qu'il en soit, ça ne résoudra pas le problème de base, à savoir : Comment font ces visiteurs pour entrer sans mail valide ?
Car en base de données, lorsque je vérifie, le champ est bien vide

Re: Formulaire vide

Posté : 17 janv. 2014, 18:14
par marcetienne
oui car j'oubliais de dire que j'ai aussi un petit script qui ajoute l'utilisateur en base de donnée, placé au même endroit que l'endroit du mail

Je vais essayer de le mettre aussi dans la page html du contenu

Re: Formulaire vide

Posté : 18 janv. 2014, 14:21
par marc-etienne
Voilà j'ai fait le changement, maintenant j'attends quelques jours, le temps de voir si l'erreur se reproduit