Webmaster Hub: Créer un formulaire de contact php anti-spam (captcha) - Webmaster Hub

Voir le contenu

  • (6 Pages)
  • +
  • 1
  • 2
  • 3
  • 4
  • Dernière »
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

Créer un formulaire de contact php anti-spam (captcha) Noter le sujet : -----

#21 Utilisateur non-connecté   byc 

  • Voir le blog
  • Groupe : Membre
  • Messages : 10
  • Inscrit : 08-novembre 06
  • Genre:Homme
  • Localisation:Ile de France

Posté 15 novembre 2006 - 15:50

Vu que ça intéresse pas mal de monde, voici les explications en détails :

1) Télécharger la source : ici

2) faire un include du fichier en question
<?php 
include_once("antispam.php");
?>

3) insérer le calcul en faisant un simple appel à une fonction
<?php 
echo "<form id='formulaire' action='".$_SERVER["PHP_SELF"]."'method='post'>"
;
[...]
antispam_ins();
echo "<input type='submit' value='Envoyer' />";
echo "</form>";
?>

4) Vérifier si le résultat est correct
<?php 
if(antispam_check() == false)
{
	echo "Résultat incorrect, veuillez réessayer !";
}
else
{
	[...] envoi du mail et/ou insertion du formulaire dans la base de données.
}
?>

Aussi simple que ça :)
0

#22 Utilisateur non-connecté   alphega 

  • Groupe : Hubmaster
  • Messages : 272
  • Inscrit : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

Posté 15 novembre 2006 - 19:31

Merci beaucoup byc, c'est excellent, ça marche parfaitement :)
Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique PC Entraide / CNETFrance.
0

#23 Utilisateur non-connecté   Norbert_404 

  • Groupe : Membre
  • Messages : 18
  • Inscrit : 12-novembre 06

Posté 15 novembre 2006 - 21:27

Wow chouette !!!

Merci à byc pour son code !!!
Au moins ça résout le probléme d'accéssibilité !
J'utilise pour mes sites le formulaire de contact proposé sur les publications du hub: Un "Mailer" pour votre site web

Donc en ajoutant le code de Byc j'obtiendrai ceci :

[b]<?php
include_once("antispam.php");
?>[/b]
<?php
// Dans la ligne qui suit, remplacer webmaster_AT_domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "webmaster_AT_domaine.tld";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
        $etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"
]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));

        }
        // --- test de la validité des champs saisis ---
        if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
                 $erreur="Saisissez votre adresse email...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[
0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["message"])) {
// le message est vide
                 $erreur="Saisissez un message...";
        }
        else {
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
                 $etat="ok";
        }
}
else {
// --- le formulaire n'a pas été soumis ---
           $etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
</head>
<body>
<h1>Contacter le webmaster</h1>
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
         }
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
        <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p><label for="titre">Titre de message (facultatif):</label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p><label for="message">Message (obligatoire):</label><br />
        <textarea name="message" id="message" cols="40" rows="5"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>
[b]antispam_ins();[/b]
        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
[b]<?php
if(antispam_check() == false)
{
    echo "Résultat incorrect, veuillez réessayer !";
}
else
{
    [...] envoi du mail et/ou insertion du formulaire dans la base de données.
}
?>[/b]
   </form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"
],$entete)){
// mail envoyé
                echo "Votre message a été envoyé.<br />\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez..
.</a>\n";
        }
}
?>
</body>
</html>


et je met antispam.php dans le même répertoire que la page php du formulaire ?

J'ai juste ???
PS: Je veux pas me faire passer pour un boulet, je débute dans le php, désolé...
0

#24 Utilisateur non-connecté   alphega 

  • Groupe : Hubmaster
  • Messages : 272
  • Inscrit : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

Posté 15 novembre 2006 - 22:06

Tu as essayé Norbert_404 ?

Pour ma part, j'ai plutot fait comme ça, ça marche bien:

<?php 
include_once("antispam.php");
?>

<?php
// Dans la ligne qui suit, remplacer webmaster_AT_domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "webmaster_AT_domaine.tld";
// Rajout alphega: Dans cette ligne remplacer example.com par le nom de votre site. Utile si vous avez plusieurs formulaires.
$titre_cache = "Depuis le site example.com";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
        $etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"
]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));

        }
        // --- test de la validité des champs saisis ---
        if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
                 $erreur="Saisissez votre adresse email...";
        }
        elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[
0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["message"])) {
// le message est vide
                 $erreur="Saisissez un message...";
        }
		elseif (antispam_check() == false) {
// l'addition est fausse
                 $erreur="Résultat incorrect, veuillez réessayer !";
        }
        else {
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
                 $etat="ok";
        }
}
else {
// --- le formulaire n'a pas été soumis ---
           $etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
</head>
<body>
<h1>Contacter le webmaster</h1>
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
         if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
                         echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
         }
?>
        <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
        <p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
        <input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
        if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p><label for="titre">Titre de message (facultatif):</label><br />
        <input type="text" size="40" name="titre" id="titre" value="<?php
        if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
                echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
        }
        ?>" />
        </p>
        <p><label for="message">Message (obligatoire):</label><br />
        <textarea name="message" id="message" cols="40" rows="5"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?></textarea>
        </p>
		<p>Résultat du calcul:</p>
		<?php antispam_ins(); ?>
        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
        </form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
		$entete .= "Return-Path: ". $email_webmaster . "\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
                echo "Votre message a été envoyé.<br />\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";
        }
        else {
// erreur lors de l'envoi du mail
                echo "Un problème s'est produit lors de l'envoi du message.\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez..
.</a>\n";
        }
}
?>
</body>
</html>


En plus du calcul vérificateur, j'ai aussi inclus la modif du "return path" et la ligne qui permet d'identifier d'où vient le formulaire (à completer soi meme, juste après la ligne de l'adresse email).

ps: pour les longs codes à mettre sur le forum, tu peux utiliser la balise:
[codebox][/codebox]

Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique PC Entraide / CNETFrance.
0

#25 Utilisateur non-connecté   Norbert_404 

  • Groupe : Membre
  • Messages : 18
  • Inscrit : 12-novembre 06

Posté 15 novembre 2006 - 22:45

Bonsoir !
Oui j'a essayé mais j'obtiens un message d'érreur du type :
"Parse error, unexpected...."
J'ai compris cette érreur

Je vais tester le code que tu viens de me montrer... merci ;-)

Citation

ps: pour les longs codes à mettre sur le forum, tu peux utiliser la balise:

Oui je sais. J'ai fait exprés de ne pas mettre mmon code entre les balises codes afin d'utiliser le gras pour trouver rapidement le code ajouté...

a+

[Edit captain_torche]J'ai moi-même ajouté les balises adéquates, et tu peux constater que la mise en gras est conservée
0

#26 Utilisateur non-connecté   Norbert_404 

  • Groupe : Membre
  • Messages : 18
  • Inscrit : 12-novembre 06

Posté 16 novembre 2006 - 13:48

Bon je vous tiens au courant :
J'ai pas encore testé le code car mon hébergeur fait face actuellement à de gros problèmes techniques... :(
0

#27 Utilisateur non-connecté   Norbert_404 

  • Groupe : Membre
  • Messages : 18
  • Inscrit : 12-novembre 06

Posté 16 novembre 2006 - 17:36

ça y est ! j'ai fait un essai : ça marche nickel !!!
Donc merci à Byc et Alphega !!! :thumbsup:
Juste une question : comment spécifier dans le php une et une taille particuliére, du verdana par exemple ?
0

#28 Utilisateur non-connecté   byc 

  • Voir le blog
  • Groupe : Membre
  • Messages : 10
  • Inscrit : 08-novembre 06
  • Genre:Homme
  • Localisation:Ile de France

Posté 16 novembre 2006 - 20:39

On ne peut pas spécifier la taille d'une police de caractères en PHP, par contre tu peux utiliser CSS en faisant par exemple <span style='font-size: 16px;'>ton mot</span>. J'ai utilisé la balise span, ça peut être <div>, <p>, etc... et tu peux mettre aussi à la place de "style='font-size: 16px;'" "class='toto'" ou "id='toto'" (où toto sera défini sur ta feuille CSS). Si tu souhaites en savoir plus sur le CSS, je te conseille de faire un tour sur Alsacreations.
0

#29 Utilisateur non-connecté   Norbert_404 

  • Groupe : Membre
  • Messages : 18
  • Inscrit : 12-novembre 06

Posté 17 novembre 2006 - 15:37

Meric pour le lien vers alsacréation !!! ;)
Pour peaufiner mon formulaire, je souhaite inclure une checkbox ou une boite déroulante avec "oui" (valeur par défaut) et "non" comme valeurs possibles pour donner le choix au visituer de s'inscrire à ma newsletter.
Je souhaite récupérer dans l'email son message - ce qui est normal - mais également une valeur comme "newsletter : oui" afin de m'indiquer que la personne souhaite s'inscrire...

J'ai trouvé un code php pour cela mais je tourne autour du pot pour le faire fonctionner :

<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<p><label for="email_expediteur">Your email :</label><br />
<input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="titre">Subject :</label><br />
<input type="text" size="40" name="titre" id="titre" value="<?php
if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="message">Your message :</label><br />
<textarea name="message" id="message" cols="40" rows="5"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?></textarea>
</p>
<p><label for="newsletter">Newsletter :</label>
[b]<input type="checkbox" name="newsletter[]" value="yes"><?php
if (isset($_POST["newsletter"])){
echo "Choix utilisateur : ",$choix,"<br>";
}
?>[/b]
<p>Résultat du calcul:</p>
<?php antispam_ins(); ?>
<p><input type="submit" name="envoyer" value="Send" />
</p>
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "Return-Path: ". $email_webmaster . "\n";
$entete .= "MIME-Version: 1.0";
if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"],"][
b],$_POST["newsletter"],[/b]$entete)){
// mail envoyé
echo "Your message has just been sent !<br />\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Click here to send another message</a>\n";
}
else {
// erreur lors de l'envoi du mail
echo "Your message couldn't be sent.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Please, try again.</a>\n";
}
}
?>

Ce message a été modifié par NorSeb : 17 novembre 2006 - 15:58

0

#30 Utilisateur non-connecté   k0ntakt 

  • Voir le blog
  • Groupe : Membre
  • Messages : 4
  • Inscrit : 09-décembre 06

Icône de message  Posté 09 décembre 2006 - 01:31

Bonsoir,
Super script byc :thumbsup:

Par contre, 2 questions :

- si je ne mets pas mes fichiers à la racine (contact.php et antispam.php), le formulaire me dit que le message est bien parti mais il n'est est rien, il n'arrive pas à destination. Ne peut-on pas déporter ces 2 fichiers dans un autre répertoire ?

- comme Norbert_404, je souhaiterait récupérer une autre variable au niveau du formulaire (en faite, dans une liste déroulante, l'internaute à le choix entre 2 destinataires possibles), et utiliser la varibale ainsi récupérée pour définir l'adresse du destinataire (équivalent à $email_webmaster) mais j'y arrive pas :(
<select name="email_destinataire" id="email_destinataire">
<option  selected="selected" value="">choix</option> 
<option value="lui_AT_domaine.com">LUI</option>
<option value="elle_AT_domaine.com">ELLE</option>		
</select>


J'essaie de récupérer la variable au niveau du traitement du formulaire soumis sans erreur ainsi :
$email_destinataire = $_POST["email_destinataire"];


Puis j'envoie le mail avec cette fonction :
@mail($_POST["email_destinataire"],$_POST["sujet"],
$_POST["message"],$entete)


Quelqu'un pour m'éclairer ? :blush:

Ce message a été modifié par k0ntakt : 09 décembre 2006 - 01:34

0

#31 Utilisateur non-connecté   Keroin 

  • Groupe : Hubmaster
  • Messages : 170
  • Inscrit : 17-avril 06
  • Genre:Homme
  • Localisation:Rouen

Posté 10 décembre 2006 - 05:53

Ce script est excellent et les ajouts antispam via calcul et anti-injections semblent fonctionner à la perfection. Je viens de l'installer sur mon nouvel annuaire et c'est exactement ce que je cherchais. Merci aux participants de ce topic pour leur contribution :clap: :thumbup:
- Le Keroinsite et son Forum : Assistance en informatique et téléphonie.
- Annuaire Keroinsite : Annuaire généraliste avec liens en dur,URL Rewriting, validation manuelle,...
0

#32 Utilisateur non-connecté   byc 

  • Voir le blog
  • Groupe : Membre
  • Messages : 10
  • Inscrit : 08-novembre 06
  • Genre:Homme
  • Localisation:Ile de France

Posté 12 décembre 2006 - 13:34

Norbert, tu as rajouté des crochets à ta valeur name de ton checkbox, tu dois les retirer. voilà ce que ça donne :
<input type="checkbox" name="newsletter" value="yes" />
<?php
if(isset($_POST["newsletter"]))
{
		echo "Choix utilisateur : ".$_POST["newsletter"]."<br />";
?>


Kontakt, le fichier antispam.php tu peux le mettre dans le répertoire que tu veux, suffit que tu changes le chemin de ton include lorsque tu fais appel à ce fichier, en fonction bien entendu de l'endroit où tu mettras contact.php. Si le formulaire n'est pas expédié ou inséré dans ta base de données, c'est qu'il y a une erreur dans ton code lorsque tu fais appel à la fonction mail() ou sur ton insert pour ta bdd. Sinon pour ton 2eme problème, essai d'enlever le id="email_destinataire" à ton select, et pour l'execution de ta fonction mail, enleve l'arobase du debut et met un point virgule à la fin (je connais pas cet methode avec l'arobase donc jsuis pas sûr).

Merci Keroin et les autres :)

Ce message a été modifié par byc : 12 décembre 2006 - 13:35

0

#33 Utilisateur non-connecté   k0ntakt 

  • Voir le blog
  • Groupe : Membre
  • Messages : 4
  • Inscrit : 09-décembre 06

Icône de message  Posté 16 décembre 2006 - 14:32

Ok pour le placement des fichiers, mais par contre pour le passage de la variable email_destinataire, je n'y arrive tjrs pas :(

Comme tu me l'as indiqué, j'ai supprimé l'id
Mais quand je veux modifier la fonction mail, j'ai un Parse error: syntax error, unexpected ';'

Le code (je suis parti de ta base avec quelques modifs...) :
<?php
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$email_destinataire = $_POST["email_destinataire"];
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "Return-Path: ".$_POST["email_destinataire"]. "\n";
$entete .= "MIME-Version: 1.0";
if (mail($email_destinataire,$_POST["sujet"]."(via formulaire du site)",$_POST["message"],$entete);)
{
// mail envoyé
include('envoieOK.php'); //J'appelle ici une page qui confirme l'envoie
//echo "Votre message a été envoyé.<br />\n";
//echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";
}
else {
// erreur lors de l'envoi du mail
include('envoieKO.php'); // J'appelle ici une page qui indique une erreur
//echo "Un problème s'est produit lors de l'envoi du message.\n";
//echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...<
/a>\n";
}
}
?>


Une idée :?:
0

#34 Utilisateur non-connecté   captain_torche 

  • Danacol / Orangina rouge
  • Icône
  • Voir le blog
  • Groupe : Admin
  • Messages : 5 983
  • Inscrit : 08-février 06
  • Genre:Homme
  • Localisation:rue des Landes, Chatou

Posté 16 décembre 2006 - 14:36

Enlève le point-virgule de cette ligne :
if (mail($email_destinataire,$_POST["sujet"]."(via formulaire du site)",$_POST["message"],$entete);)

0

#35 Utilisateur non-connecté   Yoav 

  • Groupe : Inactif
  • Messages : 51
  • Inscrit : 20-décembre 06
  • Genre:Homme
  • Localisation:Jérusalem

Icône de message  Posté 20 décembre 2006 - 16:01

Bonjour,

J'utilise votre formulaire de contact mais j'ai un petit soucis. Je l'ai intégré dans une page existante e mon site mais ça ne marche pas bien. Il y a des moments où il n'y a plus les graphismes mais après avoir envoyer un message ils reviennent ... je ne comprends pas bien.

Voici mon script : contact.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
		"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
	<head>
<title>Eretz.be | Contacter le Webmaster</title>
<META NAME="description" CONTENT="Site de Yoav avec des sous domaines consacrés entre autre à Primo Levi ou à l'Athénée Maïmonide de Bruxelles et à son émission de radio ! ">
<META NAME="keywords" CONTENT="Primo, Levi, Rheims, Yoav, Juif, Etudiant, Israel, Sioniste, 
EEIB, EI, EIB, Juive, Athénée, Maimonide, Ecole, Maternelle, thora, torah, site, sion ,sioniste, Sionsite, sioniste, talmud, talmud, casher, cacher, Casher, Cacher, tanach, Tanach, David, roi david, Magen, Magen David,
Magen David Adom, Adom, il, Il, IL, KKl, kkl, Mossad, Israel, Israël, israeli, Tali, tali, ">
<META NAME="subject" CONTENT="Eretz.be">
<META NAME="author" CONTENT="Yoav Rheims">
<META NAME="copyright" CONTENT="© Eretz.be | Yoav Rheims">
<META NAME="revisit-after" CONTENT="30 days">
<META NAME="identifier-url" CONTENT="http://www.eretz.be">
<META NAME="publisher" CONTENT="Yoav Rheims">
<META NAME="Robots" CONTENT="all">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />



<!-- DEBUT DU SCRIPT -->
<script language="Javascript">
/*
SCRIPT EDITE SUR L'EDITEUR Javascript
[url="http://www.editeurjavascript.com"]http://www.editeurjavascript.com[/url]
URL du script : [url="http://www.editeurjavascript.com/scripts/scripts_textes_1_80.php"]http://www.editeurjavascript.
com/scripts/s...textes_1_80.php[/url]
*/
texteAff = "Bienvenue sur Eretz.be !";
place = 0;
tempoLong = 100;
function EJSAnimEtat2()
	{
	texteTemp1 = texteAff.substring(0,place);
	texteTemp2 = texteAff.substring(place,place+1);
	texteTemp2 = texteTemp2.toUpperCase();
	texteTemp3 = texteAff.substring(place+1,texteAff.length);
	window.status = texteTemp1 + texteTemp2 + texteTemp3;
	if (place>texteAff.length)
		{
		place=0;
		tempoLong=1000;
		}
	if (place==0)
		tempoLong=100;
	place++;
	tempoAnimEtat2 = setTimeout("EJSAnimEtat2()",tempoLong)
	}
function EJSAnimEtat2Break()
	{
	window.status = "";
	clearTimeout(tempoAnimEtat2);
	}
window.onload = EJSAnimEtat2;
window.onunload = EJSAnimEtat2Break;
		</script><!-- FIN DU SCRIPT -->
	
	
	
	
	</head>
	<body >
		<div id="conteneur">
			<div id="header">
				<img src="images/header.jpg" alt="header" width="800" height="136" />
				<div id="menu">
					<div><a href="http://www.eretz.be/">Accueil</a></div>
					<div><a href="http://maimo.eretz.be/forum/ici/">Forum</a></div>
					<div><a href="http://www.eretz.be/maimo.htm">Athénée Maïmonide</a></div>
					<div><a href="http://primo-levi.eretz.be/">Primo Levi</a></div>
					<div><a href="http://www.eretz.be/divers.htm">Divers</a></div>
				</div>
			</div>
			<div id="body">
				<div id="left">
					<div class="shout_titre">
						:: Naviguation ::
					</div>
					<div class="shout">
						-: <a href="http://www.eretz.be/">Accueil</a> :-<br/>
						-: <a href="http://maimo.eretz.be/forum/ici/">Forum</a> :-<br/>
						-: <a href="http://www.eretz.be/maimo.htm">Athénée Maïmonide</a> :-<br/>
						-: <a href="http://primo-levi.eretz.be/">Primo Levi</a> :-<br/>
						-: <a href="http://www.eretz.be/contact.php">Contact</a> :-
					</div>
					<img src="images/9.jpg" style="float:left;" alt="" width="177" height="64" />
					
					<br/>
					<div class="shout_titre">
						
					</div>
					<div class="shout">
						<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input name="tax" value="0" type="hidden"><input name="ah" value="0" type="hidden">
<input name="currency_code" value="EUR" type="hidden"><input name="no_note" value="1" type="hidden"><input name="no_shipping" value="1" type="hidden"><input name="item_name" value="Donation" type="hidden"><input name="business" value="yoavrheims_AT_gmail.com" type="hidden"><input name="cmd" value="_xclick" type="hidden">
<input name="lc" value="FR" type="hidden">
<p>
<input src="https://www.paypal.com/fr_FR/i/btn/x-click-but04.gif" name="submit" alt="VALIDER" border="0" height="31" type="image" width="80"></p>
						</form>
						<div align="center">

<a href="http://www.xiti.com/xiti.asp?s=275038" title="Mesurez votre audience">
<script type="text/javascript">
<!--
Xt_param = 's=275038&p=';
try {Xt_r = top.document.referrer;}
catch(e) {Xt_r = document.referrer; }
Xt_h = new Date();
Xt_i = '<img width="39" height="25" border="0" ';
Xt_i += 'src="http://logv32.xiti.com/hit.xiti?'+Xt_param;
Xt_i += '&hl='+Xt_h.getHours()+'x'+Xt_h.getMinutes()+'x'+Xt_h.getSeconds();
if(parseFloat(navigator.appVersion)>=4)
{Xt_s=screen;Xt_i+='&r='+Xt_s.width+'x'+Xt_s.height+'x'+Xt_s.pixelDepth+'
x'+Xt_s.colorDepth;}
document.write(Xt_i+'&ref='+Xt_r.replace(/[<>"]/g, '').replace(/&/g, '$')+'" title="Analyse d\'audience">');
//-->
</script>
<noscript>
Mesure d'audience ROI frequentation par <img width="39" height="25"
src="http://logv32.xiti.com/hit.xiti?s=275038&p=" alt="Analyse
d'audience" /></a></noscript>

</a></div>
	<p align="center">
					</div>

<img src="images/9.jpg" style="float:left;" alt="" width="177" height="64" />
					
					<br/>
					<div class="shout_titre">
						:: Nouveautés ::
					</div>
					<div class="shout">
						
						<marquee behavior="scroll" direction="up" scrollamount="1" scrolldelay="1" onmouseover="this.stop()" onmouseout="this.start()" style="height:100px;"><span class="texte"><strong>N</strong>ouveau template !!<br/><br/><strong>R</strong>echerche un graphiste qui sache utiliser photoshop<br/><br/><strong>B</strong>ientôt de nouvelles mises à jour ... Surprises !</span></marquee>
					</div>
					<img src="images/9.jpg" style="float:left;" alt="" width="177" height="64" />
				</div>


				
				<div id="right">
					<div id="page_titre">
						:: Bienvenue sur Eretz.be ::
					</div>
					<div id="page">
<?php
include_once("antispam.php");
?>

<?php
// Dans la ligne qui suit, remplacer webmaster_AT_domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "yoav_AT_eretz.be";
// Rajout alphega: Dans cette ligne remplacer example.com par le nom de votre site. Utile si vous avez plusieurs formulaires.
$titre_cache = "Depuis le site Eretz.be";
// === traitement des données du formulaire ============================================================
if (isset($_POST["envoyer"])){
// le formulaire a été soumis
$etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
if (isset($_POST["email_expediteur"])) {
$_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"
]));
}
if (isset($_POST["titre"])) {
$_POST["titre"]=trim(stripslashes($_POST["titre"]));
}
if (isset($_POST["message"])) {
$_POST["message"]=trim(stripslashes($_POST["message"]));

}
// --- test de la validité des champs saisis ---
if (empty($_POST["email_expediteur"])) {
// il manque l'email de l'expéditeur
$erreur="Saisissez votre adresse email...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[
0-9a-z])*\.[a-z]{2,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
elseif (empty($_POST["message"])) {
// le message est vide
$erreur="Saisissez un message...";
}
elseif (antispam_check() == false) {
// l'addition est fausse
$erreur="Résultat incorrect, veuillez réessayer !";
}
else {
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
$etat="ok";
}
}
else {
// --- le formulaire n'a pas été soumis ---
$etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
</head>
<body>
<h1>Contacter le webmaster</h1>
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
<p><label for="email_expediteur">Votre adresse e-mail (obligatoire):</label><br />
<input type="text" size="40" name="email_expediteur" id="email_expediteur" value="<?php
if (!empty($_POST["email_expediteur"])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST["email_expediteur"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="titre">Titre de message (facultatif):</label><br />
<input type="text" size="40" name="titre" id="titre" value="<?php
if (!empty($_POST["titre"])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST["titre"],ENT_QUOTES);
}
?>" />
</p>
<p><label for="message">Message (obligatoire):</label><br />
<textarea name="message" id="message" cols="40" rows="5"><?php
if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
echo htmlspecialchars($_POST["message"],ENT_QUOTES);
}
?></textarea>
</p>
<p>Résultat du calcul:</p>
<?php antispam_ins(); ?>
<p><input type="submit" name="envoyer" value="Envoyer" />
</p>
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
$entete .= "Return-Path: ". $email_webmaster . "\n";
$entete .= "MIME-Version: 1.0";
if (@mail($email_webmaster,$titre_cache." / ".$_POST["titre"],$_POST["message"],$entete)){
// mail envoyé
echo "Votre message a été envoyé.<br />\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</a>\n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez..
.</a>\n";
}
}
?>
<br/>
					</div>
					<img src="images/10.jpg" style="float:left;" alt="" width="548" height="64" />
				</div>
			</div>
			<div id="footer">
				© <a href="http://www.eretz.be">Eretz.be</a> | Design by <a href="http://fluidblow.free.fr">
				<font color="#000000">FluidBlow</font></a> pour <a href="http://www.rien2net.com">
				<font color="#000000">www.rien2net.com</font></a>
			</div>
			
		</div>
		<br/>




	</body>
</html>


Il y a peut-être un problème avec l'hébergeur (one.com) mais je ne pense pas ...
Mon hébergeur est en php4.

Merci de votre solution,

Yoav

Ce message a été modifié par NorSeb : 20 décembre 2006 - 18:21

Webmaster du site www.eretz.fr

#36 Utilisateur non-connecté   Yoav 

  • Groupe : Inactif
  • Messages : 51
  • Inscrit : 20-décembre 06
  • Genre:Homme
  • Localisation:Jérusalem

Posté 21 décembre 2006 - 10:30

A mon avis il faut régler ou faire une modif dans le script ... Je vais tenter un truc mais je suis pas sûr ...
Webmaster du site www.eretz.fr

#37 Utilisateur non-connecté   alphega 

  • Groupe : Hubmaster
  • Messages : 272
  • Inscrit : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

Posté 21 décembre 2006 - 10:44

Bonjour,

Il faut surtout que tu regardes bien le script avant de l'inserer. Le code que l'on donne sur ce sujet contient le code php, le code html avec la partie <head> et la partie <body>.

Si tu fais un simple copier/coller ça ne fonctionnera pas. Mets en début de code (avant tout le reste sur ta page) les instructions php jusqu'a la ligne:
// === fin de traitement des données du formulaire =======================================================
?>


Ne mets pas cette partie là que tu as déjà sur ta page:

Citation

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de contact</title>
</head>
<body>


Mets ensuite tout le reste, sans les balises de fin </body> et </html> que tu dois déjà avoir sur ta page également.

Ce message a été modifié par alphega : 21 décembre 2006 - 10:44

Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique PC Entraide / CNETFrance.
0

#38 Utilisateur non-connecté   k0ntakt 

  • Voir le blog
  • Groupe : Membre
  • Messages : 4
  • Inscrit : 09-décembre 06

Posté 23 décembre 2006 - 13:22

Voir le messagecaptain_torche, le samedi 16 décembre 2006, 14h36, a dit :

Enlève le point-virgule de cette ligne :
if (mail($email_destinataire,$_POST["sujet"]."(via formulaire du site)",$_POST["message"],$entete);)


Effectivement, l'erreur venait de la pour la syntaxe, shame on me :blush:
Enfin, suite à ça j'ai du gratter encore quelque truc mais désormais ça fonctionne ! :P Merci beaucoup.

J'en profite pour poser une autre question :
Je voudrais les 2 mails possible dans la liste déroulante ne soit pas visibles des robots, est-ce que ce code le permet ?
				  <select name="email_destinataire" id="email_destinataire">
		   			<option value="<?php echo htmlspecialchars("lui_AT_domaine.com") ?>" />LUI</option>
		   			<option value="<?php echo htmlspecialchars("elle_AT_domaine.com") ?>"/>ELLE</option>					
				</select>

Ce message a été modifié par k0ntakt : 23 décembre 2006 - 14:17

0

#39 Utilisateur non-connecté   byc 

  • Voir le blog
  • Groupe : Membre
  • Messages : 10
  • Inscrit : 08-novembre 06
  • Genre:Homme
  • Localisation:Ile de France

Posté 25 décembre 2006 - 15:14

K0ntakt, la seule solution que je vois est de mettre le nom du contact (ou autre qui permet d'identifier à qui on envoi le mail) dans la liste déroulante. Ensuite, dans le traitement de ton formulaire, tu fais un switch et en fonction de la valeur de la boite déroulante, tu donne la valeur du destinataire à une variable pour l'envoi de ton mail.
0

#40 Utilisateur non-connecté   k0ntakt 

  • Voir le blog
  • Groupe : Membre
  • Messages : 4
  • Inscrit : 09-décembre 06

Posté 25 décembre 2006 - 19:51

Super byc, ça fonctionne très bien, simple et efficace, comme ton script antispam :thumbsup:

Une dernière chose (enfin, j'espère :hypocrite: ) : Les mails ainsi reçus sont considérés comme "spam" par le serveur. Y-a-t-il une astuce pour corriger cela ?
Merci encore ;)
0

  • (6 Pages)
  • +
  • 1
  • 2
  • 3
  • 4
  • Dernière »
  • Vous ne pouvez pas créer de sujet
  • Vous ne pouvez pas répondre au sujet

1 utilisateur(s) dans ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)