8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je m'essaie au langage PHP.
J'ai créer un formulaire de contact en jquery // nom/ mail // message //envoyez.

J'y ai attribué ( un code PHP trouver sur le net) via la balise :


<form action="envoi.php" method="post" enctype="application/x-www-form-urlencoded" name="formulaire">
</form>


Une fois la case "envoyez" cliquée je suis redirigée vers une page blanche qui m'indique "email envoyé cliquez ici pour être redirigé vers page d'accueil... "

Comment puis-je éviter ce processus???

Je vous joins le code PHP à cet effet :

Merci d'avance à ceux qui pourront peut-être solutionner mon problème.






<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php 
$nom=$HTTP_POST_VARS['nom']; 
$mail=$HTTP_POST_VARS['mail']; 
$objet=$HTTP_POST_VARS['objet']; 
$message=$HTTP_POST_VARS['message']; 

/////voici la version Mine 
$headers = "MIME-Version: 1.0\r\n"; 

//////ici on détermine le mail en format text 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 

////ici on détermine l'expediteur et l'adresse de réponse 
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer [langue]HP"; 

$subject="$objet"; 
$destinataire="jsaintgal@yahoo.fr"; 
$body="$message"; 
if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a été envoyé<br>"; 
} else { 
echo "Une erreur s'est produite"; 
} 
?></p>
<p align="center">Vous allez bientot etre redirigé vers la page d'acceuil<br>
Si vous n'etes pas redirigé au bout de 5 secondes cliquez <a href="http://www.gorgodzn.com">ici 
</a></p>

 

</body>
</html>


Modifié par gorgo (29 Mar 2009 - 23:33)
que voudrais tu réellement ? rediriger sans que l'internaute ne soit informé ?

dans ce cas :


<?php
$nom=$HTTP_POST_VARS['nom'];
$mail=$HTTP_POST_VARS['mail'];
$objet=$HTTP_POST_VARS['objet'];
$message=$HTTP_POST_VARS['message'];

/////voici la version Mine
$headers = "MIME-Version: 1.0\r\n";

//////ici on détermine le mail en format text
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";

////ici on détermine l'expediteur et l'adresse de réponse
$headers .= "From: $nom <$mail>\r\nReply-to : $nom <$mail>\nX-Mailer langue HP";

$subject="$objet";
$destinataire="jsaintgal@yahoo.fr";
$body="$message";
if (mail($destinataire,$subject,$body,$headers)) {
header("location:http://www.gorgodzn.com");
} else {
echo "Une erreur s'est produite";
}
?>



Vires tout ton code et mets celui-ci à la place ... désormé, il sera redirigé sauf si le mail n'est pas envoyé ...

Pour spécifier l'url du renvoi c'est dans la fonction header("location:.......");
Si tu veux le transférer même si le mail produit une erreur,

remplace la fin par :


$body="$message";
mail($destinataire,$subject,$body,$headers);
header("location:http://www.gorgodzn.com");
?>


Dans tous les cas, il ne faut strictement aucun vide, (saut de ligne, espace, ....) avant la première <? sinon, tu vas obtenir une erreur avec la fonction header() ...

Voila ... @+

au fait, normalement, tu devrai pouvoir changer $HTTP_POST_VARS par $_POST ce serait mieux ... sauf si ton serveur à plus de ... 6/7 ans (10 ?)

BonCode Smiley cligne
Salut gorgo,

en tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

upload/1-code.gif

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que l'Aide (dont le lien est fourni lors de l'inscription) contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.

Bonne continuation Smiley smile
Merci pour ces indications!

Je souhaite nénamoins garder le message d'erreur!!

Puis-je alors apporter une balise <p>, <div> ou autre pour positionnement via CSS le message codé en php sur ma page ??? :


if (mail($destinataire,$subject,$body,$headers)) { 
echo "Votre mail a été envoyé<br>"; 
} else { 
echo "Une erreur s'est produite"; 
}
Thanks !

Pour ce qui est de ta question je t'invite à faire ce qui est suggéré par Nours312 : à savoir faire une redirection vers une page de confirmation lorsque l'envoi s'est bien passé et un message d'erreur dans l'autre cas. L'avantage de la redirection étant de ne pas soumettre le mail à nouveau en cas de réaffichage de la page (typiquement en faisant un simple F5). Le fait de passer par une page de confirmation et de ne pas rediriger directement sur la page d'accueil (par exemple) est de fournir un "diagnostic" de ce qui s'est passé à ton visiteur...

Cela donne quelque chose comme :
if (@mail($destinataire,$subject,$body,$headers)) { 
   header("Location: confirmation.php");
} else { 
   echo "<p>Une erreur s'est produite lors de l'envoi du mail ! Veuillez réessayer.</p>";
}

Modifié par Heyoan (29 Mar 2009 - 23:47)
Effectivement... j'ai donc pris le parti de redesigner ma page envoi.PHP plutôt que de redirectionner l'envoi.

je souhaiterais néanmoins que les messages "mail envoyé" ou "erreur produite" s'affiche au coeur de ma page puisque celui sort de ma zone web! et s'affiche donc en noir sur fond noir....
pas malin pour moi

Je n'ai aucune connaissance php...
et cherche à modifier la couleur et l'emplacement du message delivré par la "balise"
if()echo{} puis-je y apporter directement comportement et couleur en php ?? ..
ou lui attribuer une "class" ou "id" pour du CSS

Je ne sais pas si je suis très claire
En cas voici la page... >> onglet : Nous contacter

http://www.gorgodzn.com/les2logis/contact.htm

Merci merci
gorgo a écrit :
Je n'ai aucune connaissance php...
et cherche à modifier la couleur et l'emplacement du message delivré par la "balise"
if()echo{} puis-je y apporter directement comportement et couleur en php ?? ..
ou lui attribuer une "class" ou "id" pour du CSS
La fonction echo permet d'écrire du "code source" (html, JavaScript, etc.) et on peut donc y mettre ce que l'on veut.

Au-delà du positionnement de ce message (via css donc) ton formulaire pose des problèmes d'accessibilité puisque JavaScript est obligatoire pour y accéder alors que tout le monde n'en dispose pas !

Pour en savoir plus lire Comment bien coder en Javascript.
Modifié par Heyoan (30 Mar 2009 - 00:10)
Merci pour lien je me pencherai de plus près sur l'article afin d'ouvrir la fonctionnalité de ce futur site qui fait l'objet d'expérimentation nouvelle.
J'ai néanmoins utilisé du jquery il me semblait que c'était un langage/bibliothèque distincte et plus "universel" que le java....

Pour ce qui est de la fonction echo, les manipulations que j'ai tentées sont incorrectes :


{ 
echo "<div style=\"position:absolute; width:...px; height:...px; z-index:29; left:blabla\">Votre mail a été envoyé </div>";
} else { 
echo "Une erreur s'est produite" 
}  


J'commence un peu à m'y perdre à vrai dire
Merci ... /merci
Modifié par gorgo (30 Mar 2009 - 00:31)
héhé problème résolu pour ce soir!!!

Merci beaucoup en tout cas!
Je consulterais les tuto' et penserai
a écrit :
aux problèmes d'accessibilité du site
bonjour,

Suite à mes requêtes d'hier je souhaite ajouter une balise case "téléphone" à mon formulaire de contact

J'ai donc ajouter à mon code html :
 <label for="phone">votre téléphone *</label>
                <textarea id="telephone" name="telephone " rows="1" cols="3"></textarea>


peut-être aurais-je du privilégier :

<label for="telephone">telephone *</label>
				<input id="telephone" type="text" name="telephone"/>




Dans quel balise du code php dois-je l'identifier afin qu'il apparaisse dans le message du mail?

$telephone =$HTTP_POST_VARS['telephone'];
$message=$HTTP_POST_VARS['telephone'];



$body="$message; $telephone";


Merci à ceux qui se pencheront sur mon problème!
Modifié par gorgo (30 Mar 2009 - 13:23)
1. évidemment, il est préférable d'utiliser le second label, qui a plus de consistance que le premier, pour un site francophone !

2. pour ajouter du contenu à ton "message" expédié par Mail, tu dois l'ajouter à la varible $message ...

=> Pour ajouter du contenu à une variable existante, tu doit le faire comme ceci :

$message .= ' votre téléphone est le : '.$_POST[telephone'].'....';

le ' . ' en php permet la concaténation des éléments ...

ex :

$var = 'Michel';
$var .=' Machin';
$var = 'Bonjour '.$var;

echo $var;
// => Bonjour Michel Machin

Voilà @+