Créer un formulaire de contact php anti-spam (captcha)
#82
Posté 22 juillet 2007 - 13:20
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.
#83
Posté 04 août 2007 - 11:46
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
edit: ah ben sa ne joue plus ma liste déroulante
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.
#84
Posté 04 août 2007 - 21:29
Alors moi je suis nouveau, une bille en php, j'ai mal à la tête mais je suis content
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
#85
Posté 06 août 2007 - 21:50
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)
Vêtements de grossesse et d'allaitement, essayage gratuit à domicile en Bretagne !
Location de voiture avec chauffeur à Nantes, voiture de luxe pour mariages
#86
Posté 07 août 2007 - 15:39
et merci de ton intervention
iNCiTE Web, le lundi 6 août 2007 à 22:50, dit :
Citation
if (@mail($email_webmaster,$titre_cache.$_POST["titre"]par
if (@mail($_POST["email_webmaster"],$_POST["titre_cache"] .$_POST["titre"]
Citation
#87
Posté 07 août 2007 - 15:56
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...
Vêtements de grossesse et d'allaitement, essayage gratuit à domicile en Bretagne !
Location de voiture avec chauffeur à Nantes, voiture de luxe pour mariages
#88
Posté 07 août 2007 - 20:46
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
il était...
Non on rigole pas :nonono: surtout que j'avais affiché la couleur d'entrée en disant que j'étais une bille en php
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.
#89
Posté 07 août 2007 - 21:50
$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...
Vêtements de grossesse et d'allaitement, essayage gratuit à domicile en Bretagne !
Location de voiture avec chauffeur à Nantes, voiture de luxe pour mariages
#90
Posté 07 août 2007 - 22:17
Citation
Citation
Bon alors moi j'ai rien compris à la musique
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
#91
Posté 08 août 2007 - 06:57
iNCiTE Web, le mardi 7 août 2007 à 22:50, dit :
buh, le mardi 7 août 2007 à 23:17, dit :
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)
#92
Posté 08 août 2007 - 08:06
Citation
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
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
cd plus haut
Citation
Euh...
Citation
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.
Vêtements de grossesse et d'allaitement, essayage gratuit à domicile en Bretagne !
Location de voiture avec chauffeur à Nantes, voiture de luxe pour mariages
#93
Posté 08 août 2007 - 08:59
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
Bon maintenant va falloir habiller tout ça mais là je peux m'en sortir seul.
Encore une fois merci
A la prochaine :thumbsup:
#94
Posté 21 août 2007 - 13:45
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.
#95
Posté 21 août 2007 - 13:49
#97
Posté 03 septembre 2007 - 08:10
Toutes les explications sont là :
http://phpcodeur.net...cles/php/upload
Vêtements de grossesse et d'allaitement, essayage gratuit à domicile en Bretagne !
Location de voiture avec chauffeur à Nantes, voiture de luxe pour mariages
#98
Posté 02 mars 2008 - 17:24
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 ....
#100
Posté 07 mars 2008 - 15:19
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).



Haut












