GROS PB POUR ENVOYER FORMULAIRE SUR EMAIL

Résolu/Fermé
axelandre Messages postés 35 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 22 septembre 2010 - 23 août 2007 à 21:07
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 - 25 août 2007 à 00:32
Bonsoir à tous,

Je planche sur un pb que je n'arrive pas à résoudre.

En fait j'ai créé un formulaire qui permet de recevoir les informations saisies par le visiteur sur une boite email.

mais au moment de la vérification des erreurs de saisie éventuelles, il m'indique : Parse error: parse error in d:\site_pkr\pages\envoi_adhesion.php on line 93

Le truc c'est qu'à cette ligne la c'est la fin de tout mon code ( la ligne après la balise </html>).

Et la je vois pas le délire!

Merci d'avance pour vos réponses.

Ma page vérification :

<html>
<head></head>
<body>
<?
//
// DEBUT Fonction de contrôle du mail PHP-UNIX
function check_mail($Email) {
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $Email)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$Email)) ) {
$host = explode('@', $Email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}
// FIN Fonction de contrôle du mail
$MailTo = "****@hotmail.fr"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailCc = "autre-mail@domaine.com"; // adresse à laquelle sera envoyé un communiqué
$MailSubject = "Sujet du message"; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = "From: expediteur@nom_domaine.com"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
$MailBody = '';
/* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */

$Envoi = 1; //initialisation de la variable envoi à 1
$Pseudo = $_POST['Pseudo'];
if ($Pseudo == ""){ //nom du champ1
echo("Vous n'avez pas complété le champ 1.<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Ton pseudo : $Pseudo\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
$Prenom = $_POST['Prenom'];
if ($Prenom == ""){
echo("Tu n'as pas complété le champ prénom.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Ton prénom : $Prenom\n";
}
$Age = $_POST['Age'];
if ($Age == ""){
echo("Tu n'as pas complété le champ Age<br>");
$Envoi = 0;
}
else {
$MailBody .= "Ton age : $Age\n";
}
$Email = $_POST['Email'];
if ($Email == ""){
echo("Tu n'as pas complété le champ ton email<br>");
$Envoi = 0;
}
else {
if (check_mail($Email)) {
$MailBody .= "Mail : $Email\n";
}
else {
echo("L'adresse e-mail du champ 4 n'est pas valide<br>");
$Envoi = 0;
}
if ($LieuHabitation == ""){
echo("Tu n'as pas complété le champ ta ville de résidence<br>");
$Envoi = 0;
}
else {
$MailBody .= "Ton age : $LieuHabitation\n";
}
if ($Pays == ""){
echo("Tu n'as pas complété le champ ton pays<br>");
$Envoi = 0;
}
else {
$MailBody .= "Ton age : $Pays\n";
}
if ($Envoi == 0) echo("<p> </p><p> </p><p align=\"center\"><a href=\"adhesion.php\"><strong>Retour</strong></a></p>");
//Envoi du message

if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
//mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires."); echo("<p> </p><p> </p><p align=\"center\"><a href=\"formulaire.htm\"><strong>Retour</strong></a></p>"); //affichage d'un message de confirmation.
}
?>
</body>
</html>
A voir également:

11 réponses

dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
24 août 2007 à 11:14
Salut.

Tout d'abord une remarque : tu ouvres le code php en utilisant <? qui nécessite une certaine configuration du serveur php (au moins pour php5) alors que <?php passe partout.

Une astuce : tu testes toutes tes valeurs comme ça : if($Prenom == "").
Tu connais la fonction empty ?
if(empty($Prenom)) te renvoie vrai si c'est vide, faux sinon.

Bref, ce ne sont que des détails.

Passons à ton problème : tu as oublié de fermer un else !

// ...
// en haut, c'est bon !

else
{
	if (check_mail($Email))
	{
		$MailBody .= "Mail : $Email\n";
	}
	else
	{
		echo("L'adresse e-mail du champ 4 n'est pas valide<br>");
		$Envoi = 0;
	}
	if ($LieuHabitation == "")
	{
		echo("Tu n'as pas complété le champ ta ville de résidence<br>");
		$Envoi = 0;
	}
	else
	{
		$MailBody .= "Ton age : $LieuHabitation\n";
	}
	if ($Pays == "")
	{
		echo("Tu n'as pas complété le champ ton pays<br>");
		$Envoi = 0;
	}
	else
	{
		$MailBody .= "Ton age : $Pays\n";
	}
	if ($Envoi == 0)
	{
		echo("<p> </p><p> </p><p align=\"center\">
		<a href=\"adhesion.php\"><strong>Retour</strong></a></p>");
	}
	//Envoi du message

	if ($Envoi == 1)
	{ //vérification que la variable envoi est bien à 1
		mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
		//mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué 
		echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
		echo("<p> </p><p> </p><p align=\"center\">
		<a href=\"formulaire.htm\"><strong>Retour</strong></a></p>"); 
		//affichage d'un message de confirmation.
	}
} // <<<<<========= celui-là, tu l'avais oublié !!!! ;-)


Donc c'est normal, le code continuait et attendait la suite...

@+
0
Lol ok!
effectivement c normal!

Mais par contre maintenant il m'indique une erreur qui est Fatal error: Call to undefined function: checkdnsrr()

Elle se trouve au début du code, ce sont les trois lignes If(checkdnsrr ($host[1].'......

Merci en tout cas pour la reponse à mon premier problème et merci d'avance pour la prochaine (enfin j'espère!).
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
24 août 2007 à 20:34
Tu travailles sur ta propre machine pour des tests ?

http://www.manuelphp.com/php/function.checkdnsrr.php

Cette fonction n'est pas disponible sur les machines Windows.

La plupart des hébergeurs sont sous UNIX, donc cette fonction est généralement disponible en situation réelle.

;-)

@+
0
Oui je fais mes testes sur ma machine en local!

mais la ca y est j'ai confirmation d'accès à un domaine que j'ai eu gratis!

Donc du coup si je mets cette page sur le net (via mon hébergeur) cette fonction fonctionnera c'est ça?
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
24 août 2007 à 22:08
Si ce n'est pas un hébergement Windows, oui, il y a de fortes chances pour que cela fonctionne.

@+
0

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

Posez votre question
c'est cool alors.
est-ce quand cas de problème je pourrai te demander encore une fois de l'aide???
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
24 août 2007 à 22:13
Pas de souci.

Si tu le souhaites, tu peux me contacter par mail via http://viadresse.com?06041987

Je te répondrai et te donnerai mon adresse mail directe et/ou msn (je ne les laisse pas trainer sur les forums pour éviter le spam).

@+
0
Génial!

Merci beaucoup !

Alors @+
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
24 août 2007 à 22:49
Ça marche ! :)

@+
0
Comment ça?

tu as essayé via un serveur linux???

Et je crois que j'ai fait une connerie sur mon nouveau ftp chez mon nouvel hébergeur
En fait d'origine dans le ftp de base il y avait des dossier genre htdoc, error,...

Et pris d'un coup de folie je me suis, je vais faire le menage la dedans et du coup j'ai TOUT viré pour ensuite insérer mes dossiers.

le truc c'est que lorsque je lance l'adresse de mon site une page me sort : erreur 404(ou 401) !

je crois que je suis dans la merde!

Tu vois pas ce que ca peut-être par hasard?
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
24 août 2007 à 23:31
Nan nan, je disais "ça marche" dans le sens "OK", pour conclure quoi ! ^^

Mais il n'empêche que je suis certain que la fonction marche nickel sur un hébergement UNIX (je m'en sers sur mon site hébergé chez free (Apache / UNIX), et ça marche super !).

Pour ce qui est de tes dossiers supprimés, je crois qu'il va falloir que tu leur demandes quels étaient ces dossiers.

htdocs doit contenir les pages de ton site.
error doit certainement contenir tes pages d'erreur personnalisées (404, 403 etc...).

...

D'ailleurs, d'après ces dossiers, je serais tenté de dire que l'hébergement se fait sur un serveur apache. Ça augmente les chances d'être en hébergement UNIX. :)

Bonne continuation.
0
Re Génial pour ta confirmation du fonctionnement de la fonction!

Bon ben pour ce qui est des dossiers supprimés je vais faire le nécessaire pour qu'il me les remette!

J'ai déconné quand même sur le coup.

Et je pense que le serveur est linux, j'en suis même sur maintenant.

Merci pour tout.

Et en cas de problème je pourrai donc te recontacter via ce post???
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
25 août 2007 à 00:13
Oui, pas de problème, il remontera dans la liste de mes interventions et je le verrai ! ;-)

Tu peux aussi me contacter par message privé sur cette page si c'est urgent (il faut que tu sois connecté pour pouvoir envoyer un MP).

@+
0
ok

Bon ben tu t'y connais en requete sql via une page php???
Et ton lien que tu m'as filé m'amène sur ton profil, c'est normal???
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
25 août 2007 à 00:27
Concernant les requêtes sql, je pense que je peux aider.

Le lien que je t'ai donné t'emmène effectivement sur mon profil.

Lorsque tu seras connecté sur CCM en tant que membre, ce qui n'est pas le cas actuellement (tu postes en invité alors que tu es pourtant membre CCM, tu as du te déconnecter), tu auras une zone de messagerie interne qui s'affichera en bas de mon profil.

@+
0
lol
ok!

Bon ben je vais me connecter alors car les requetes sql c'est plus l'ordre du post!

A de suite
0
dcanl Messages postés 2999 Date d'inscription mercredi 7 septembre 2005 Statut Contributeur Dernière intervention 3 juin 2013 470
25 août 2007 à 00:32
Il n'empêche que tu peux créer une nouvelle discussion pour demander des explications sur les requêtes sql.

Je ne suis pas seul sur le forum ! (heureusement d'ailleurs ^^)

@+

PS : je mets le statut de cette discussion à [Résolu], je pense que tu es d'accord ?
0