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

Aller au contenu

  • 6 Pages +
  • « Première
  • 3
  • 4
  • 5
  • 6
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

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

#81 L'utilisateur est hors-ligne   mika_do 

  • Groupe : Email Invalide
  • Messages : 15
  • Inscrit(e) : 28-avril 07

Posté 15 juillet 2007 - 18:15

Merci du script il fonctionne à merveille ;)
0

#82 L'utilisateur est hors-ligne   alphega 

  • Groupe : Hubmaster
  • Messages : 277
  • Inscrit(e) : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

  Posté 22 juillet 2007 - 13:20

Comme il y a eu quelques améliorations au fur et à mesure des discussions, que 2 méthodes sont maintenant disponibles (captcha visuel ou addition-soustraction), que cryptographp a changé de version et n'est plus compatible avec le script que j'avais adapté, je redonne ici les explications avec les 2 méthodes.

Formulaire de contact avec captcha visuel (cryptographp)

1 - Télécharger cryptographp (version 1.4)
2 - Dézipper, puis envoyer le dossier crypt et son contenu sur votre serveur
3 - Créer le fichier contact.php avec le code ci-dessous (ne pas oublier d'éditer la ligne: $email_webmaster = "webmaster_AT_domaine.tld"; pour y mettre votre email et la ligne $titre_cache = "Depuis le site example.com: "; pour personnaliser le titre de l'email)

nb: ne pas laisser d'espace ou de saut de ligne en haut de ce fichier pour éviter l'erreur "Cannot send session cookie - headers already sent by"

<?php 
 $cryptinstall="./crypt/cryptographp.fct.php";
 include $cryptinstall;
 ?>
 <?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 remplacez "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 (empty($_POST["code"])) {
// le code n'est pas saisi
$erreur="Saisissez le code de verification...";
}

else {
// --- Vérification de la validité du code captcha ---
if (chk_crypt($_POST['code']))
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
$etat="ok";
// --- Le code captcha n'est pas valide ---
else $erreur="Code de verification non valide ...";
}
}

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"]; ?>?<?php echo SID; ?>">
<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>
<?php dsp_crypt(0,1); ?>
<p><input type="text" name="code" /></p>
<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";
$ip.="Adresse IP: ". $_SERVER['REMOTE_ADDR'] . "\n";
$nav.="Navigateur: ". $_SERVER['HTTP_USER_AGENT'] . "\n\n";
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.$
nav.$_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>



Uploadez le fichier contact.php ... et c'est tout! Tester le formulaire de contact avec captcha visuel



Formulaire de contact avec captcha addition soustraction de Byc

1 - Télécharger le script antispam de byc
2 - Dézipper, puis envoyer le fichier antispam.php sur votre serveur
3 - Créer le fichier contact.php avec le code ci-dessous (ne pas oublier d'éditer la ligne: $email_webmaster = "webmaster_AT_domaine.tld"; pour y mettre votre email et la ligne $titre_cache = "Depuis le site example.com: "; pour personnaliser le titre de l'email)

<?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 remplacez "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 du calcul incorrect, veuillez réessayer svp !";
}
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"]; ?>?<?php echo SID; ?>">
<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 ci-dessous: addition ou soustraction, le résultat peut-etre négatif.
<br />Ex: 1-4 taper: -3 (Ceci est une sécurité anti-spam)</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";
$ip.="Adresse IP: ". $_SERVER['REMOTE_ADDR'] . "\n";
$nav.="Navigateur: ". $_SERVER['HTTP_USER_AGENT'] . "\n\n";
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.$
nav.$_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>



Uploadez le fichier contact.php ... et c'est tout! Tester le formulaire de contact avec addition soustraction
----------

ps: Ne me contactez pas par mp pour avoir de l'aide sur ce script, meme si j'ai pu adapter le formulaire aux captcha, je ne suis pas expert en php, utilisez plutot ce sujet pour obtenir en plus de l'aide de toute la communauté :)

Ce message a été modifié par alphega - 22 juillet 2007 - 13:34.

Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique CNET
0

#83 L'utilisateur est hors-ligne   mika_do 

  • Groupe : Email Invalide
  • Messages : 15
  • Inscrit(e) : 28-avril 07

Posté 04 août 2007 - 11:46

J'ai un petit souci de rien du tout :smartass:

J'ai rajouté une liste déroulante qui fonctionne comme sur des roulettes et j'aimerais lorsque je recois mes mails que la rubrique sélectionnée apparaisse en gras et sur une autre ligne que mon texte de base. En en-tête par exemple...

Voici le code que j'utilise pour recevoir mon truc.

if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.
$nav.$_POST["message"].$_POST["choix"],$entete)
){


Merci :hypocrite:

edit: ah ben sa ne joue plus ma liste déroulante :D
Un petit coup de pouce.
J'ai fait un simple select...

<p><select name="choix " id="choix ">
	<option value="<?php echo htmlspecialchars("choix: Suggestions") ?>" />Suggestions</option>
	<option value="<?php echo htmlspecialchars("choix : Annonceurs") ?>"/>Annonceurs</option>
	<option value="<?php echo htmlspecialchars("choix : Partenariat") ?>"/>Partenariat</option>
	<option value="<?php echo htmlspecialchars("choix : Recrutement") ?>"/>Recrutement</option>
	<option value="<?php echo htmlspecialchars("choix : Autres") ?>"/>Autres</option>
</select></p>

Hormis ses modifications rien n'a été touché.

Ce message a été modifié par mika_do - 04 août 2007 - 11:48.

0

#84 L'utilisateur est hors-ligne   buh 

  • Groupe : Membre
  • Messages : 27
  • Inscrit(e) : 04-août 07
  • Localisation:Cité des Papes

  Posté 04 août 2007 - 21:29

Bonjour à tous

Alors moi je suis nouveau, une bille en php, j'ai mal à la tête mais je suis content :D

Content en effet car ça fait une bonne semaine que je hante les forums, blogs et autres sites d'experts pour essayer de faire fonctionner un formulaire de contact avec captcha. J'en ai essayé pas mal et parfois il me manquait un petit rien (enfin c'est ce que je me dis) je rappelle que je suis une bille en php.

Mais voilà qu'hier un lien m'amène ici sur le site Webmaster Hub (que je connaissais déjà) et là tout à coup j'ai l'impression d'être un peu moins couillon car ça a marché du premier coup.

Alors précision tout de même, ça a marché pour la version (opérations) et pour la version image tout s'affiche sauf l'image du captcha et le commentaire qui va avec. Pas grave car je préfère la version avec opérations mais faudra que je trouve d'où ça vient.

Donc depuis hier soir, j'améliore le look du formulaire via le css (là ça va!) ^^ , c'est impeccable.

Impeccable .... allez il y a bien 2 ou 3 trucs qui ne vont pas.

1/ Parfois après l'envoi d'un mail, il me répond que celui-ci a rencontré un problème et me demande si je veux re-essayer. Je ré-essaye et là ça part. J'ai eu le coup 2 ou 3 fois cet après-midi et à chaque fois le 2eme envoi est bon. Là je viens de faire un essai à l'instant et c'est parti du premier coup.

2/ Lorsque je reçois les informations dans ma messagerie, je n'ai que les renseignements de l'adresse IP, du navigateur et le texte du message. Rien en ce qui concerne l'adresse e-mail et le titre du sujet.
Je suppose que ça se passe dans cette partie de code (code qui est d'origine donc je n'y ai pas touché) mais où peut bien se trouver le truc ???

// 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";
$ip.="Adresse IP: ". $_SERVER['REMOTE_ADDR'] . "\n";
$nav.="Navigateur: ". $_SERVER['HTTP_USER_AGENT'] . "\n\n";
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.
$nav.$_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";


3/ Et dernière question, comment faire pour que les opérations ne soient que des additions. J'ai vu que quelqu'un en parlait mais autant le dire de suite je n'ai rien compris.

Enfin voilà où j'en suis après une bonne semaine de galère mais comme déjà dit plus haut je suis bien content d'être arrivé là.

Si vous avez des réponses surtout pour les 2 dernières questions, d'avance un grand merci.

Avec tout ça j'ai même pas vu les essais du grand prix et je connais même pas la grille.

Bonne soirée
0

#85 L'utilisateur est hors-ligne   iNCiTE Web 

  • Groupe : Membre+
  • Messages : 1 297
  • Inscrit(e) : 19-janvier 06
  • Genre:Homme
  • Localisation:Ploemeur
  • Société:iNCiTE Web

Posté 06 août 2007 - 21:50

1/ les essais sont en local ou sur un serveur ?

2/ en remplacant
if (@mail($email_webmaster,$titre_cache.$_POST["titre"]
par
if (@mail($_POST["email_webmaster"],$_POST["titre_cache"]
.$_POST["titre"]


3/ j'ai juste téléchargé et regardé le script (je ne l'utilise pas), je dirais ligne 43, $operateur = array("+"); (en supprimant la soustraction de la liste des symboles)
0

#86 L'utilisateur est hors-ligne   buh 

  • Groupe : Membre
  • Messages : 27
  • Inscrit(e) : 04-août 07
  • Localisation:Cité des Papes

Posté 07 août 2007 - 15:39

Bonjour

et merci de ton intervention

Voir le messageiNCiTE Web, le lundi 6 août 2007 à 22:50, dit :

1/ les essais sont en local ou sur un serveur ?
1/ le site est chez Free

Citation

2/ en remplacant
if (@mail($email_webmaster,$titre_cache.$_POST["titre"]
par
if (@mail($_POST["email_webmaster"],$_POST["titre_cache"]
.$_POST["titre"]
2/ Une fois ce remplacement effectué, ça part mais je ne reçois plus rien.

Citation

3/ j'ai juste téléchargé et regardé le script (je ne l'utilise pas), je dirais ligne 43, $operateur = array("+"); (en supprimant la soustraction de la liste des symboles)
3/ Ici maintenant apparemment je n'ai bien que des additions mais lorsqu'il s'agit de soustraction aucun signe n'apparaît entre les 2 nombres ce qui donne par exemple 8 2. Là je pense que ça doit se passer dans le fichier antispam.php où il me semble qu'il reste un signe - mais quoi supprimer exactement.

:sick:
0

#87 L'utilisateur est hors-ligne   iNCiTE Web 

  • Groupe : Membre+
  • Messages : 1 297
  • Inscrit(e) : 19-janvier 06
  • Genre:Homme
  • Localisation:Ploemeur
  • Société:iNCiTE Web

Posté 07 août 2007 - 15:56

Bon j'ai lu le script rapidement, donc voici mes corrections :hypocrite:

1/ chez Free la fonction mail() n'est-elle pas bridée ?

2/ normal en fait, enlèves les 2 $_POST (et le @ devant la fonction mail, ça cache une éventuelle erreur, tu remettras après). Par contre pour les valeurs vides il faudrait voir le formulaire d'origine complet, avec les noms des champs. Tu as ça en ligne ?

3) mettre
$op = "0";
au lieu de
$op = rand(0, 1);
et tu peux remettre le premier élément comme
il était...
0

#88 L'utilisateur est hors-ligne   buh 

  • Groupe : Membre
  • Messages : 27
  • Inscrit(e) : 04-août 07
  • Localisation:Cité des Papes

Posté 07 août 2007 - 20:46

Bonsoir

Aie aie ça coince.
J'ai bien essayé de faire les modifications que tu dis mais je ne dois pas faire ce qu'il faut.
En fait après ces 2 réponses je ne sais plus trop quoi enlever ou remettre.
Donc le formulaire ne voulant plus rien dire, je suis reparti sur celui du départ dont je parle dans mon 1er post un peu plus haut et là tu verras qu'il est dit que ça marche.

1/ Donc Free a-t-il la fonction mail bridée, je t'avoue ne pas le savoir mais vu que par moment ça marche, j'en déduis que la fonction mail est OK

2/ C'est là que ça s'est compliqué aussi j'ai tout supprimé pour revenir au modèle qui fonctionne (enfin presque voir mon premier message). Il est en ligne ici Voir la page

3/ Là j'allais essayer de faire ce que tu dis mais j'ai laissé tomber quand j'ai lu :

Citation

et tu peux remettre le premier élément comme
il était...
Je connaissais le 6eme élément mais le premier élément c'est quoi ?
Non on rigole pas :nonono: surtout que j'avais affiché la couleur d'entrée en disant que j'étais une bille en php :wacko:

Enfin pour rappeler ce qui est mon principal problème dans cette histoire c'est que je ne récupère pas les informations des 2 premiers champs (Adresse mail et titre message). Par contre j'ai l'adresse IP, les rgts sur le navigateur et le texte du message.

Enfin pour être complet voici un lien pour voir le code sous forme .txt des 2 fichiers composant ce formulaire. Voir ici le code

Dur dur le php. J'ai la tête comme un tambour aussi j'espère n'avoir rien oublié

Merci encore une fois.

Ce message a été modifié par buh - 07 août 2007 - 20:48.

0

#89 L'utilisateur est hors-ligne   iNCiTE Web 

  • Groupe : Membre+
  • Messages : 1 297
  • Inscrit(e) : 19-janvier 06
  • Genre:Homme
  • Localisation:Ploemeur
  • Société:iNCiTE Web

Posté 07 août 2007 - 21:50

Bon alors si tu as remis le script d'origine, tu remplaces
$op = rand(0, 1);
par
$op = "0";
pour n'avoir que des additions.

Sinon j'ai fait un pur copier/coller de tes 2 fichers, ça fonctionne partfaitement.
L'adresse e-mail de l'expéditeur est bien celle que je reçois le titre saisi se rajoute en sujet avec le "titre caché" (il manque un espace entre les 2 pour faire bien). J'espère que tu ne cherchais pas l'adresse et le sujet dans le mail, car ce n'est pas ce que fait le script...
0

#90 L'utilisateur est hors-ligne   buh 

  • Groupe : Membre
  • Messages : 27
  • Inscrit(e) : 04-août 07
  • Localisation:Cité des Papes

Posté 07 août 2007 - 22:17

Citation

Sinon j'ai fait un pur copier/coller de tes 2 fichers, ça fonctionne partfaitement.
Ah bon ? et bien c'est déjà ça quoique ce n'est que le code origine auquel je n'ai rien touché (c'est pour ça :) ).

Citation

J'espère que tu ne cherchais pas l'adresse et le sujet dans le mail, car ce n'est pas ce que fait le script...

Bon alors moi j'ai rien compris à la musique :wacko: car bien sûr que oui que je m'attendais à avoir l'adresse mail et et le titre du sujet dans le courrier que je reçois sinon à quoi ça sert ?
Il y a là un truc qui m'échappe --> Si j'ai pas son adresse email comment je fais pour lui répondre ?
A quoi sert de mettre le champ Adresse e-mail comme étant obligatoire si je ne le récupère pas ?
En fait à quoi sert exactement ce formulaire alors ?


Et y-a-t-il moyen de modifier le code pour arriver à récupérer ces 2 premiers champs.
Merci

:blush:
0

#91 L'utilisateur est en ligne   Arlette 

  • Groupe : Direction
  • Messages : 9 230
  • Inscrit(e) : 26-août 03
  • Genre:Femme
  • Localisation:Rognes

Posté 08 août 2007 - 06:57

Voir le messageiNCiTE Web, le mardi 7 août 2007 à 22:50, dit :

J'espère que tu ne cherchais pas l'adresse et le sujet dans le mail, car ce n'est pas ce que fait le script...



Voir le messagebuh, le mardi 7 août 2007 à 23:17, dit :

Bon alors moi j'ai rien compris à la musique :wacko: car bien sûr que oui que je m'attendais à avoir l'adresse mail et et le titre du sujet dans le courrier que je reçois sinon à quoi ça sert ?
Il y a là un truc qui m'échappe --> Si j'ai pas son adresse email comment je fais pour lui répondre ?

Allez je tente ma chance parce que j'y connais encore bien moins que toi en code. ;)

Je pense qu'iNCITE Web veut te dire que dans ton code tu as oublié de mettre ce qu'il faut pour récupérer l'adresse mail et le sujet.

Donc j'ai bien compris que c'est ce que tu veux faire... Donc il doit falloir que tu rajoutes des lignes dans ton code pour récupérer ces deux paramètres. En toute logique, un code qui doit être similaire à celui qui te permet de récupérer le texte du message (puisque ça tu y arrives) :) .
0

#92 L'utilisateur est hors-ligne   iNCiTE Web 

  • Groupe : Membre+
  • Messages : 1 297
  • Inscrit(e) : 19-janvier 06
  • Genre:Homme
  • Localisation:Ploemeur
  • Société:iNCiTE Web

Posté 08 août 2007 - 08:06

Merci Arlette, j'ai compris seulement hier qu'il voulait récupérer l'adresse e-mail dans le corps du message, et que le script ne l'inclut pas.

Citation

Bon alors moi j'ai rien compris à la musique car bien sûr que oui que je m'attendais à avoir l'adresse mail et et le titre du sujet dans le courrier que je reçois sinon à quoi ça sert ?

Le titre du sujet dans un mail, c'est en général le sujet du mail !!
Et l'adresse e-mail, c'est l'expéditeur

Citation

Il y a là un truc qui m'échappe --> Si j'ai pas son adresse email comment je fais pour lui répondre ?

Avec le bouton "répondre" puisque c'est l'expéditeur du mail ; si tu as testé le formulaire en mettant ta propre adresse tu n'as pas du voir...

Citation

A quoi sert de mettre le champ Adresse e-mail comme étant obligatoire si je ne le récupère pas ?

cd plus haut

Citation

En fait à quoi sert exactement ce formulaire alors ?

Euh... :wacko:

Citation

Et y-a-t-il moyen de modifier le code pour arriver à récupérer ces 2 premiers champs.

Bon allez c'est le matin...

Remplace
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.
$nav.$_POST["message"],$entete)){

par
if (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.
$nav.$_POST["email_expediteur"]."\n".$_POST["message"
],$entete)){


Le sujet tu l'as déjà, c'est l'objet du mail que tu reçois...

Ce message a été modifié par iNCiTE Web - 08 août 2007 - 08:07.

0

#93 L'utilisateur est hors-ligne   buh 

  • Groupe : Membre
  • Messages : 27
  • Inscrit(e) : 04-août 07
  • Localisation:Cité des Papes

Posté 08 août 2007 - 08:59

:oops: :whistling: :blushing:
Oh le con (excusez moi) mais je viens de comprendre et franchement je dois passer pour un nul (que je suis je le reconnais).

Heu pardon Bonjour à tous

Et dans tout ça le plus fort, c'est qu'après chaque envoi j'avais la réponse sous les yeux dans ma messagerie avec l'adresse et bien sûr le sujet. Je suis vraiment confus d'avoir monopolisé ainsi ce post pendant ces quelques jours mais d'un autre côté je suis très satisfait d'y être arrivé.

En tout cas un grand merci à iNCiTE Web pour sa patience et ses conseils, c'est très sympa et surtout ça fait vraiment plaisir de recevoir ce genre d'aide lorsqu'on a un niveau comme le mien. En tout cas j'ai beaucoup appris.

Un petit bisou à Arlette aussi (ha tiens Rognes :cool2: )

Bon maintenant va falloir habiller tout ça mais là je peux m'en sortir seul.

Encore une fois merci

A la prochaine :thumbsup:
0

#94 L'utilisateur est hors-ligne   Stook 

  • Groupe : Membre
  • Messages : 2
  • Inscrit(e) : 21-août 07

Posté 21 août 2007 - 13:45

Bonjour , je voudrais savoir à quoi est du cette erreur....( Les étoiles sont là pour cacher quelques infos , J'ai essayer , j'ai bien tout modifier comme il le faut ...[ Formulaire de contact avec captcha visuel (cryptographp) ] )

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/****/www/*****/contact.php:7) in /home/****/www/******/crypt/cryptographp.fct.php on line 14

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/****/www/*****/contact.php:7) in /home/****/www/******/crypt/cryptographp.fct.php on line 14


Merci d'avance !

Ce message a été modifié par Stook - 21 août 2007 - 13:46.

0

#95 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Groupe : Admin
  • Messages : 6 658
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 21 août 2007 - 13:49

Cette erreur est dûe au fait qu'une information a déjà été envoyée au navigateur avant la déclaration du header. ca peut être dû à un affichage avant la fonction (un simple echo, par exemple), ou même d'un espace ou un retour chariot avant l'ouverture de ton code PHP.
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#96 L'utilisateur est hors-ligne   Stook 

  • Groupe : Membre
  • Messages : 2
  • Inscrit(e) : 21-août 07

Posté 21 août 2007 - 13:59

Merci ...j'viens de reparer ca c'est niquel
0

#97 L'utilisateur est hors-ligne   iNCiTE Web 

  • Groupe : Membre+
  • Messages : 1 297
  • Inscrit(e) : 19-janvier 06
  • Genre:Homme
  • Localisation:Ploemeur
  • Société:iNCiTE Web

Posté 03 septembre 2007 - 08:10

Un champ de type file dans le formulaire, puis le traitement qui va bien en PHP ensuite.
Toutes les explications sont là :
http://phpcodeur.net...cles/php/upload
0

#98 L'utilisateur est hors-ligne   t671 

  • Groupe : Membre
  • Messages : 3
  • Inscrit(e) : 02-mars 08
  • Genre:Homme
  • Localisation:strasbourg

Posté 02 mars 2008 - 17:24

Bonjour,

Je souhaite installer le Formulaire de contact avec captcha visuel (cryptographp).
Je suis les conseils de alphega du dimanche 22 juillet 2007, mais ça ne fonctionne pas !!!!
J'ai installer cryptograph 1.4, et voici mon message d'erreur :

Warning: main(antispam.php): failed to open stream: No such file or directory in D:\www\php\Val-ville\test_crypt\contact2.php on line 1

Warning: main(): Failed opening 'antispam.php' for inclusion (include_path='.;c:\php4\pear') in D:\www\php\Val-ville\test_crypt\contact2.php on line 1

Fatal error: Call to undefined function: antispam_ins() in D:\www\php\Val-ville\test_crypt\contact2.php on line 74


Le scripts antispam.php, je le trouve où ???? Il est pas dans le zip !!!!!???

Voici le script que j'ai tenté de rendre plus lisible (si je fais un copir-coller du script de alphega, j'ai pas mal de Parse-Error .... ) :

<?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 = "t14_AT_libertysurf.fr";
// Rajout alphega: Dans cette ligne remplacez "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 du calcul incorrect, veuillez réessayer svp !";}
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"]; ?>?<?php echo SID; ?>"><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 ci-dessous: addition ou soustraction, le résultat peut-etre négatif.<br />Ex: 1-4 taper: -3 (Ceci est une sécurité anti-spam)</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";$ip.="Adresse IP: ". $_SERVER['REMOTE_ADDR'] . 
	  "\n";$nav.="Navigateur: ". $_SERVER['HTTP_USER_AGENT'] . "\n\n";if 
	  (@mail($email_webmaster,$titre_cache.$_POST["titre"],$ip.
$nav.$_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>


Merci pour votre aide ....
0

#99 L'utilisateur est hors-ligne   t671 

  • Groupe : Membre
  • Messages : 3
  • Inscrit(e) : 02-mars 08
  • Genre:Homme
  • Localisation:strasbourg

Posté 03 mars 2008 - 10:29

Bonjour alphega,

Je veux utiliser ton Formulaire de contact avec captcha addition soustraction de Byc. Mais le lien pour Télécharger le script antispam de byc ne fonctionne pas ! Pourrais-tu me le transférer ?

Merci
0

#100 L'utilisateur est hors-ligne   alphega 

  • Groupe : Hubmaster
  • Messages : 277
  • Inscrit(e) : 07-novembre 04
  • Genre:Homme
  • Localisation:Eysines

Posté 07 mars 2008 - 15:19

Bonjour,

Dans l'exemple que je donne plus haut pour créer un formulaire antispam, les liens vers cryptographp et le script de byc sont brisés.

Voici le nouveau lien vers Cryptographp: Télécharger le script Cryptographp
Avec l'accord de byc, (merci) voici le script antispam: Télécharger le script antispam addition/soustraction

Je ne peux malheureusement plus éditer le message pour mettre les liens à jour dans le post explicatif (message #82).
Passionnés d'informatique, discutez ordinateur, windows, logiciels et technologies sur le forum informatique CNET
0

Partager ce sujet :


  • 6 Pages +
  • « Première
  • 3
  • 4
  • 5
  • 6
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)