Sessions php et formulaire svp

Fermé
aldo - 8 sept. 2008 à 16:02
 rico - 25 sept. 2008 à 21:28
Bonjour,

J'ai réalisé un petit formulaire dans le but de récupérer les emails de mes visiteurs avec 2 champs: prénom et email.

Jusqu'ici tout va bien le script marche bien, seulement ayant insérer dans le code php une vérification des 2 champs j'ai un petit problème.

En effet quand php vérifie une erreur ou un champ vide celui ci indique au visiteur par un message qu'il manque soit le prénom ou que l'email est invalide.
Si tel est le cas dans ce message d'avertissement un lien de retour au formulaire est disponible.

Donc mon problème est lorsque je clic sur ce lien les 2 champs du formulaire réapparaissent vides, il faut alors tout retaper.

J'aimerai savoir comment faire pour conserver les champs remplis pour que le visiteur n'ai pas à tout retaper de nouveau.

En cherchant j'ai trouvé que les sesions php seraient une bonne solution à mon problème, mais voila je n'arrive pas à savoir où et comment les placer dans mon code avec 1 fichiers html et 1 php que voici:




Le formulaire "contact.html":

<html>
<body>


<form method="post" action="email.php">


<p align="center">
Votre Prénom <br /> <input type="text" name="prenom" size="40"/><br /><br />


Votre E-mail <br />
</font> <input type="text" name="email" size="40">
</p>

<p align="center">
<input type="submit" value="Envoyer" />
</p>

</form>
</body>
</html>


Le fichier php "email.php":


<?php


$prenom = $_POST['prenom'];
$email= $_POST['email'];


$mon_email = 'monsite.com'; # L'adresse e-mail pour savoir qui s'est inscrit
$sujet = 'inscription'; # Sujet du mail a envoyer au nouvel inscrit
$message = " Bonjour $prenom,bla bla.....


# Partie pour valider l'adresse e-mail
$atom = '[-a-z0-9!#$%&\'*+\\/=?^_`{|}~]'; // caractères autorisés avant l'arobase
$domain = '([a-z0-9]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine)


if (preg_match('/\A\s*\Z/', $prenom)) { // test du prenom
die('Veuillez inscrire votre prénom merci<a href=http://monsite.com/contact.html><br>Retour au formulaire</a>');
} elseif (!preg_match($email)) { // test de l'adresse e-mail
die("Votre adresse email $mail est invalide veuillez recommencer merci<a href=http://www.monsite.com/contact.html><br>Retour au formulaire");

}


$msg .= $message;


mail($email, $sujet, $msg,
"Reply-to: $mon_email\r\nFrom: $mon_email");
mail($mon_email, "Nouvel inscrit: $prenom", "\n
Un nouvel inscrit: $prenom

E-mail: $email\n\n" ,
"Reply-to: $mon_email\r\nFrom: $mon_email");

?>

Quelqu'un pourrait-il m'aiguiller ou aurait une autre idée que les sessions
Merci d'avance pour votre aide
A voir également:

15 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
8 sept. 2008 à 16:14
Bonjour

Il faut tout d'abord enregistrer les valeurs tapée dans le champ

Dans ta page php il faut ajouter au debut

session_start();
$_SESSION["PRENOM"] = $_POST['prenom'];
$_SESSION["EMAIL"] = $_POST['email'];

Ensuite il va falloir mettre un peu de php dans ton formulaire

<?PHP
session_start();
?>
<html>
<body>


<form method="post" action="email.php">


<p align="center">
Votre Prénom <br /> <input type="text" name="prenom" size="40" value='<?PHP echo $_SESSION["PRENOM"] ?>' /><br /><br />


Votre E-mail <br />
</font> <input type="text" name="email" size="40" value='<?PHP echo $_SESSION["EMAIL"] ?>' />
</p>

<p align="center">
<input type="submit" value="Envoyer" />
</p>

</form>
</body>
</html>

Evidement il faut le renommer en contact.php
0
Bonjour Mimiste et merci pour ta réponse rapide je vais essayer ca tout de suite et je te tiens au courant.
0
Et bien voila qui est fait wow ca marche impec merci beaucoup un vrai coup de génie.

Une dernière question si par exemple il y a un problème de serveur et qu'une erreur s'est produite pendant l'envoi du formulaire est-il possible de l'indiquer au visiteur ?

Encore merci
0
Je veux dire par là un problème d'envoi au serveur.

Par exemple si la connexion au serveur plante, serait-il possible d'inclure dans le script php pour qu'il indique un message du genre "une erreur s'est produite veuillez recommencer svp" ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Personne aurait une idée sur comment indiquer dans mon script
si une erreur s'est produite lors de l'envoi du message ?

Merci
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
9 sept. 2008 à 00:44
Bonsoir

Oui il suffit de recuperer le retour de la fonction mail

$resultat = mail($email, $sujet, $msg,
"Reply-to: $mon_email\r\nFrom: $mon_email");
mail($mon_email, "Nouvel inscrit: $prenom", "\n
Un nouvel inscrit: $prenom

E-mail: $email\n\n" ,
"Reply-to: $mon_email\r\nFrom: $mon_email");

if ($resultat){
echo "Mail envoyé";
} else {
echo "Erreur durant l'envoi";
}
0
Encore merci Mimiste je cherche également à savoir s'il est possible de vérifier que l'adresse e-mail saisie dans le formulaire est existente avec PHP.

Merci
0
Ce n'est pas possible de vérifier si une adresse email exsite avec php ?

Merci
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
11 sept. 2008 à 19:25
Verifier qu'un mail existe ? non ce n'est pas possible

Le seul moyen c'est (comme le font tous les sites) envoyer un mail à la personne en lui demandant de cliquer sur un lien pour valider son mail
0
Ok Mimiste euuh pourrais-tu m'aider a faire cela stp ? si tu ne veux pas je comprendrais tu m'as déja beaucoup aidé et je t'en remercie beaucoup.

Amicalement
0
Mimiste si vous acceptez de m'aider je vous fait une proposition, votre prix sera le mien.
0
Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
11 sept. 2008 à 23:57
Pas de souci

Tu utilise une base de données pour tout stocker j'imagine

Tu a donc une table qui contiens tes utilisateurs, dans cette table tu stocke les infos des utilisateurs dont le mail qu'ils ont fourni et un ID unique

Il faut rajouter 2 colonnes dans cette table : la colonne "valide" et la colonne "verifValide" par exemple

dans la colonne valide tu stockera l'etat du compte : "valide" ou bien "en attente" (par defaut)
dans la colonne verifValide tu stockera un numero aleatoire qui permettra la vérification

Maintenant il faut créer un fichier php tout simple (verifMail.php par exemple) qui execute une requete grace a 2 valeurs passé en GET : l'ID unique de l'utilisateur et le numero aleatoire

"select count(*) as NB from tableUtilisateur where ID='".$_GET['ID']."' and verifValide='"$_GET['NUM']"' "

si ce count te retourne 1 il faut que tu passe l'etat du compte en "valide" (avec une requete update) c'est que la personne aura cliqué sur le lien

Et la derniere etape consiste a créér l'envoi de ce mail de verification. Tu l'envoi avec la fonction mail classique a l'adresse qu'a indiqué la personne lorsque tu valide son inscription. Ce mail comporte en corps de message un lien du genre "http://www.site.com/verifMail.php?ID=2&NUM=19392043"
ID est l'id de la personne qui viens de s'inscrire et NUM est le numero aleatoire que tu genere et que tu enregistre dans la base en même temps

Du coup la personne reçoi ce mail et en cliquant sur le lien elle ouvre ta page verifMail.php qui execute la requete avec les valeurs en GET et valide son compte.

Si le mail n'est pas valide la personne ne reçoi jamais ce mail et ne peux pas valider son compte du coup ça force les gens a fournir une adresse valide si ils veulent pouvoir utiliser ton site


0
Bonjour,

Suite a ton post j'ai donc crée une table avec phpmyadmin avec 4 champs comme ceci:


id   prénom     email        valide          verifvalide

1 	  	             En attente       19392043


Est-ce bien cela qu'il faut faire ?

Merci
0
Ok encore merci je vais regarder ca de plus près. Non je n'utilise pas de base de donnée pour stocker, et est-il obligatoire d'en utilsée une ?

Merci
0
Bonjour,

"select count(*) as NB from tableUtilisateur where ID='".$_GET['ID']."' and verifValide='"$_GET['NUM']"' "

ceci est le code à insérer dans la page verifmail.php pour se connecter à la base de donnée ?
0
personne pour me conseiller ?

Merci
0
Bonjour,

Est ce que quelqu'un peut me dire a quoi correspond cette ligne de code SVP ?

"select count(*) as NB from tableUtilisateur where ID='".$_GET['ID']."' and verifValide='"$_GET['NUM']"' "

Merci bien
0