Aller au contenu

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


Sujets conseillés

  • 2 months later...
  • Réponses 119
  • Créé
  • Dernière réponse

Contributeurs actifs dans ce sujet

Contributeurs actifs dans ce sujet

Posté (modifié)

Bonjour à tous,

J'ai un problème similaire :

Fatal error: Call to undefined function dsp_crypt() in /var/www/Site1/contact4.php on line 97

C'est la seule erreur que j'ai pas d'erreur d'include...

Savez vous d'ou celà peut venir ? (erreur config apache ?)

Je suis sur un serveur perso Apache 2 + PHP 5 + Mysql

Edit : J'ai testé sur un serveur Free et cela fait la même chose !

Merci d'avance

Cordialement

Adrien54

Modifié par Adrien54
  • 3 semaines plus tard...
Posté (modifié)

Salut,

Après avoir fait des recherches sur la toile, me voilà sur cet excellent forum. Alors je m'y suis abonné.

Si je poste maintenant, c'est pour répondre à ce message de adn Salut au passage ;)

J'ai visité la page "http://www.sortiratousprix.net/contact.php" où j'ai trouvé ton formulaire avec la question de demander le résultat au visiteur/robot.

Je dois dire que j'aime bien l'idée de protéger son formulaire mais ja'i une remarque:

Si le robot est programmé à lire ton champs "asb" val1_op_val2, il n'a qu'a faire une opération de "+, -,*, /" et stoquer tes "op" dans une table pour les reconnaitre dans le futur. Puis ca serait très simple de connaitre la réponse/résultat demandé(e).

Je ne trouve pas encore une meilleure idée que celle que t'as mis (sauf avec d'autres questions, genre couleurs,...), mais je pensais au:

  • stoquage de l'ip qui permettra de
  • programmer ou masquer l'affichage de la captcha suivant le nombre de tentatives d'envoi, tout en gardant le champs de la réponse ce qui va nettement faire diminuer le nombre de spams (Si le captcha n'est pas affiché on pourras pas renseigner le champs de la réponse :wacko: ) Qu'en pensez-vous???
  • puis orienter le visiteur vers une autre page

Mon idée est simple, mais elle reste à creuser, je ne sais pas si elle pourrait être améliorée, facile à gérer, mais je reste ouvert à toutes remarques, suggéstions, ....

Voilà messieurs, dames.

Peace to you all.

<?
$operateur = array("+", "-");
$alpha = rand(1, 10);
$op = rand(0, 0);
$beta = rand(1, 10);
$res = md5($alpha + $beta); // pour compliquer on peut ajouter une constante au calcul
?>
(Contre le spam) <? echo $alpha." ".$operateur[$op]." ".$beta." = "; ?>
<input name="asa" type="text" size="10" value="" />
<input type="hidden" name="asb" value="<? echo $res; ?>" />

A la reception du formulaire, tester:

md5($asa) != $asb

Modifié par belaadel
Posté

Comment proposer ce service pour plusieurs rédacteurs avec des mails différends ?

Posté (modifié)

Bonjour,Je viens de parcourir ce post avec beaucoup d'intéret, et j'ai suivi les indications de alphega et dorjee pour mettre en place le script et rajouter des champs de saisie.J'ai uploadé antispam.php au meme endroit que mon formulaire, mais malheureusement j'obtiens un message d'erreur:

Un problème s'est produit lors de l'envoi du message. Réessayez...
Ou est le binz dans mon code??????

[edit modérateur]Code supprimé : illisible[/edit]

oups,ça y est, mon mail n'était pas valide..... désolé, je :shutup:

Modifié par NorSeb
Posté (modifié)

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é :)

Modifié par alphega
  • 2 semaines plus tard...
Posté (modifié)

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é.

Modifié par mika_do
Posté

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

Posté

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)

Posté

Bonjour

et merci de ton intervention

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

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.

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:

Posté

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...

Posté (modifié)

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 :

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.

Modifié par buh
Posté

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...

Posté
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 :) ).

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:

Posté
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 ?

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) :) .

Posté (modifié)

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.

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

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...

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

cd plus haut

En fait à quoi sert exactement ce formulaire alors ?

Euh... :wacko:

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...

Modifié par iNCiTE Web
Posté

: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:

  • 2 semaines plus tard...
Posté (modifié)

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 !

Modifié par Stook
Posté

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.

  • 2 semaines plus tard...
  • 5 months later...
Posté

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 ....

Posté

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

Posté

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).

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant

×
×
  • Créer...