Je poste ici parce que Koala me l'a conseillé.
Si ce topic gènes, n'hésitez pas, déplacez.
Donc, suite au problème de MissLol pour son mailer, je me suis repenché sur le code que j'avais récupéré il y a quelques mois sur un site et qui permet d'éviter le spam de la part des bots.
Il ne fonctionnait pas des masses sur mon site qui utilise comme base les pseudo-frames de PHP. Donc, j'ai tenté de le ré-écrire. Et j'y suis arrivé ce matin. L'echo s'affiche maintenant bien dans la page et plus "n'importe où".
Voici le code, que j'essayes de commenter au mieux.
Tout d'abord, une série de DEFINE (pseudo-frames, donc DEFINE pour moi) dont vous n'avez pas à vous soucier.
Ensuite, le gros morceau: une fonction.
Cette fonction s'écrit entre 2 define et pas dans l'une d'elles.
Tout le code y est intégré.
L'affichage pour HTML se fait par:
Si la chaîne de caractères contient elle-même des doubles quote, on les échappe.
Le reste, c'est du PHP brut de décoffrage avec vérification des champs remplis ou non.
La dernière "petite" astuce, celle qui m'a bloqué un bout de temps quand même, consiste à insérer le résultat de la boucle de test dans le HTML (avec la variable result, donc).
Enfin, on définit le corps de la page et, en lieu et place du code habituel, on appelle la fonction créé précédemment.
Ah oui, j'oubliais:
la "class" sur le bouton, c'est uniquement pour modifier l'apparence de celui-ci via css.
Si vous aimez les boutons tels que fournis par défaut, vous pouvez bien sûr enlever cette classe.
Voilà, j'espères que cela vous sera utile.
Modifié par Captain Ishido (20 Jul 2007 - 20:55)
Si ce topic gènes, n'hésitez pas, déplacez.
Donc, suite au problème de MissLol pour son mailer, je me suis repenché sur le code que j'avais récupéré il y a quelques mois sur un site et qui permet d'éviter le spam de la part des bots.
Il ne fonctionnait pas des masses sur mon site qui utilise comme base les pseudo-frames de PHP. Donc, j'ai tenté de le ré-écrire. Et j'y suis arrivé ce matin. L'echo s'affiche maintenant bien dans la page et plus "n'importe où".
Voici le code, que j'essayes de commenter au mieux.
<?php
// +-----------------------+
// | index.php Cont@ct |
// +-----------------------+
define('AUTHOR', 'Captain Ishido');
define('DESCRIPTION', '');
define('KEYWORDS', '');
define('PAGE_TITLE', '[Cont@ct]');
define('PAGE_PHRASE', '-=[Me contacter]=-');
function send_mail()
{
$result = $result."Pour toute suggestion, avis, corrections ou autres concernant le site, veuillez me contacter:<br /><br />\n";
$result = $result."<form method=\"post\">\n";
$result = $result."Titre du Mail:<br />\n";
$result = $result."<input type=\"text\" size=\"25\" name=\"titre\" maxlength=\"60\"><br /><br />\n";
$result = $result."Votre em@il:<br />\n";
$result = $result."<input type=\"text\" size=\"25\" name=\"e-mail\" maxlength=\"60\"><br /><br />\n";
$result = $result."Message du Mail:<br />\n";
$result = $result."<textarea rows=\"5\" cols=\"25\" name=\"message\" wrap=\"physical\"></textarea><br /><br />\n";
$result = $result."<input type=\"submit\" name=\"envoi\" class=\"form_button\" value=\"Envoyer\">\n";
$result = $result."</form>\n";
if(isset($_POST['envoi']))
{
if (!empty($_POST['titre']) && !empty($_POST['message']) && !empty($_POST['e-mail']))
{
mail("mail@hebergeur.ext", $_POST['titre'], $_POST['mail'], $_POST['message']);
$result = $result."Message envoyé";
}
else
{
$result = $result."Veuillez remplir <b>tous</b> les champs, merci.";
}
}
return $result;
}
define("PAGE_BODY", send_mail());
?>
Tout d'abord, une série de DEFINE (pseudo-frames, donc DEFINE pour moi) dont vous n'avez pas à vous soucier.
Ensuite, le gros morceau: une fonction.
Cette fonction s'écrit entre 2 define et pas dans l'une d'elles.
Tout le code y est intégré.
L'affichage pour HTML se fait par:
$result = $result."chaine de caractères";
Si la chaîne de caractères contient elle-même des doubles quote, on les échappe.
Le reste, c'est du PHP brut de décoffrage avec vérification des champs remplis ou non.
La dernière "petite" astuce, celle qui m'a bloqué un bout de temps quand même, consiste à insérer le résultat de la boucle de test dans le HTML (avec la variable result, donc).
Enfin, on définit le corps de la page et, en lieu et place du code habituel, on appelle la fonction créé précédemment.
Ah oui, j'oubliais:
la "class" sur le bouton, c'est uniquement pour modifier l'apparence de celui-ci via css.
Si vous aimez les boutons tels que fournis par défaut, vous pouvez bien sûr enlever cette classe.

Voilà, j'espères que cela vous sera utile.

Modifié par Captain Ishido (20 Jul 2007 - 20:55)