Vous n'êtes pas identifié(e).
Bonjour à tous,
Nouveau enregistré sur le forum, mais ayant déjà testé zite il y a quelques années avant que zite+ ne voit le jour, j'ai voulu m'y remettre car je suis en train de développer un petit site internet.
Pour l'instant j'ai commencé avec un cms avec base de données mais je pense que je vais passer sous zite dès que j'aurai tout les outils dont j'ai besoin.
J'ai besoin d'un formulaire de contact. Ce qui est très facile à mettre en place avec l'implémentation de code php sous zite+.
Ayant fait un petit tour sur le site et le forum, je me suis dit qu'il serait peut être intéressant de créer un module histoire qu'il puisse servir à d'autre personne ne connaissant pas trop php.
Télécharger le module formulaire de contact ici
Voici le module que j'ai commencé à réaliser. Le code fonctionne actuellement, mais la clarté du code ainsi que des options de configurations un petit peu plus avancé ne sont pas encore tout à fait au rendez vous.
Edit : problème résolu, module est fonctionnel !
J'attends vos retours si vous l'avez testés et ce que vous en pensez en temps que développeurs!
Dernière modification par Atod (30/01/2011 22:13:16)
Hors ligne
Pour l'instant voici à quoi il ressemble pour ceux qui hésiterai à le télécharger.
Cliquez sur les images pour les visualiser en taille réelle!
Pour la gestion des droits :
Dans le panneau d'administration du module :
Ce qu'il faut mettre dans la page ou vous souhaitez utiliser le formulaire :
Maintenant qu'il est fonctionnel, je vais me mettre à travailler la configuration du module afin qu'on puisse configurer (comme son nom l'indique ) le formulaire de contact !
Voici en gros à quoi j'aimerai parvenir (vais essayer de faire ça durant la semaine si j'ai le temps).
Je reste toujours intéressé par toute remarque (pour le codage, les fonctionnalités...) sur ce petit module. Je vous tiendrais informé de son avancé
PS : pour l'instant ce n'est pas ma priorité, mais si un développeur de zite+ peut m'indiquer une solution afin d'éviter d'avoir à écrire le code
<?php echo $this->page_module("contact"); ?>
pour l'affichage du module je suis preneur.
Hors ligne
Bonjour.
Je m'en vais tester tout cela rapidement, car perso, ce module m'est bien utile.
J'ai un formulaire de contact pas mal, inspiré du travail de Fred. J'va l'essayer quand même.
Bonne journée.
Hors ligne
nickel ce petit module !!
tester mais j'ai pas capté ou je rentre l'adresse email pour recevoir les messages ??
on paramettre ou le destinataire
Dernière modification par snypi (01/02/2011 00:16:19)
un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/
Hors ligne
Pour l'instant c'est pas super, il faut ouvrir le fichier contact.ini et à la place de exemple@fournisseur.com, mettre l'adresse mail voulu. C'est doublement moins super avec la dernière version beta qui propose d'installer directement ses modules avec des archives (puisque vous devez modifier votre fichier via un ftp ou modifier avant l'envoi et refaire une archive). Mais ce réglage n'a rien à faire dans ce fichier contact.ini, c'est pourquoi je travail sur un fichier config en php afin que ce soit plus facile à mettre en place et paramétrable ! Que ce soit "zite" en fin de compte !
C'est une version beta destinée à inciter les non-informaticiens à participer à la construction du module en faisant part de leurs suggestions/rapports de bug/souhaits... et les développeurs à donner leurs avis sur la clarté et les performances des fonctions utilisés dans le code.
PS : vous pouvez d'ailleurs changer ce que vous souhaitez afin d'afficher d'autres phrases ou alors de mettre "non" pour ne pas envoyer une copie du message à l'expéditeur!
admin = "Formulaire"
title = "Formulaire de contact"
destinataire = "exemple@fournisseur.com"
copie = "oui"
message_envoye = "Votre message nous est bien parvenu !"
message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."
message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."
form_action = ""
coordonnees = "Vos coordonnées :"
nom = "Nom :"
email = "Email :"
message = "Votre Message :"
objet = "Objet :"
corps = "Message :"
envoyer = "Envoyer votre message !"
Dernière modification par Atod (01/02/2011 01:26:12)
Hors ligne
Bonsoir,
Histoire de facilité la config, tu peux utiliser les facilités de Ziteplus 0.9.1 en la matière
Un petit exemple avec ton code (un poil modifié):
1) supprimer le fichier zite/module/contact.config.php
En effet, dans la plupart des cas, pas besoin d'écrire une seule ligne de code pour gérer des options de configurations ...
... tout (enfin presque ) est prévu dans zitePlus
... mais tout n'est pas encore documenté
2) Ajouter le fichier contact.opt dans zite/module/config
destinataire="string;exemple@fournisseur.com"
copie="bool;1"
3) Modifier le fichier zite/module/contact.ini
lang = "FR"
[FR]
admin = "Formulaire"
title = "Formulaire de contact"
message_envoye = "Votre message nous est bien parvenu !"
message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP."
message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur."
form_action = ""
coordonnees = "Vos coordonnées :"
nom = "Nom :"
email = "Email :"
message = "Votre Message :"
objet = "Objet :"
corps = "Message :"
envoyer = "Envoyer votre message !"
destinataire="Destinataire"
destinataire_desc2="adresse ou envoyer le courriel"
copie = "Copie"
copie_desc2="Envoyer une copie du message au rédacteur"
copie_0="Oui"
copie_1="Non"
4) Modifier le fichier zite/module/contact.php
ps: les modifs dans ce fichier, consistent à des instructions $this->GetOption() bien placé pour récupéré les valeurs des paramètres de config
<?php
/*
module: Contact - Vbeta
Author : Hubert Arnoux 2011
v1.0 Création du module de formulaire de contact
Module qui permet de créer un formulaire de contact
- vérification de la syntaxe des emails
- conserver les données saisies dans le formulaire en cas d'echec : A finir
- possibilité d'envoyer une copie du mail à l'expéditeur
*/
class Tcontact extends Tmodule {
function dojob() {
parent::dojob();
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function verification_email($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (verification_email($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (verification_email($email)) ? false : true;
if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($this->getOption('copie')) {
$cible = $this->getOption('destinataire').','.$email;
}
else {
$cible = $this->getOption('destinataire');
};
// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace('',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
$out = '<p>'.$this->get_message('message_envoye').'</p>'."\n";
return $out;
}
else //Il y a un probleme
{
$out = '<p>'.$this->get_message('message_non_envoye').'</p>'."\n";
return $out;
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'. $this->get_message('message_formulaire_invalide') . '</p>';
//<a href="index.php?z=module|contact">Retour au formulaire</a></p>'."\n";
/*
faire un lien pour retourner au formulaire en conservant les données déjà saisies dans le formulaire
*/
//return $out;
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
$out = '<form id="contact" method="post" action="'.$this->get_message('form_action').'">'."\n";
$out .= ' <fieldset><legend>'.$this->get_message('coordonnees').'</legend>'."\n";
$out .= ' <p>'."\n";
$out .= ' <label for="nom">'.$this->get_message('nom').'</label>'."\n";
$out .= ' <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
$out .= ' </p>'."\n";
$out .= ' <p>'."\n";
$out .= ' <label for="email">'.$this->get_message('email').'</label>'."\n";
$out .= ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
$out .= ' </p>'."\n";
$out .= ' </fieldset>'."\n";
$out .= ' <fieldset><legend>' . $this->get_message('message') . '</legend>'."\n";
$out .= ' <p>'."\n";
$out .= ' <label for="objet">'.$this->get_message('objet').'</label>'."\n";
$out .= ' <input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
$out .= ' </p>'."\n";
$out .= ' <p>'."\n";
$out .= ' <label for="message">'.$this->get_message('corps').'</label>'."\n";
$out .= ' <textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
$out .= ' </p>'."\n";
$out .= ' </fieldset>'."\n";
$out .= ' <div style="text-align:center;"><input type="submit" name="envoi" value="'.$this->get_message('envoyer').'" /></div>'."\n";
$out .= '</form>'."\n";
return $out;
};
}
}
?>
Et Voila !
Pour modifier les valeurs de config, il suffit maintenant de passer par les options de configuration des paramètres de modules de ZitePLUS
je te laisse faire la suite ...
... tu es déjà bien parti
a+
Jean-Paul
Hors ligne
Arf, J'avais pas trouvé de documentation dessus et je me demandais pour les fichier opt si ils devaient être dans zdata/zoption ou dans /zite/module/config. Car il y a les deux au niveaux des modules existants. J'ai choisi la mauvaise.
Sympa les facilités, jvais aller jeter un coup d'oeil un peu plus en détail !
Sinon pour le fichier de configuration, j'ai rajouté d'autres choses par rapports à la version que tu a pu regarder. Je ne l'avais pas encore mis en ligne, mais cela me parait nécessaire de le laisser. Ca permet d'avoir une interface de configuration et avoir un visu sur le rendu du module qui n'est pas le même pour tout le monde en fonction des configurations faites.
Mis à jour du lien de téléchargement
Hors ligne
Arf, J'avais pas trouvé de documentation dessus et je me demandais pour les fichier opt si ils devaient être dans zdata/zoption ou dans /zite/module/config. Car il y a les deux au niveaux des modules existants. J'ai choisi la mauvaise.
Sympa les facilités, jvais aller jeter un coup d'oeil un peu plus en détail !
Sinon pour le fichier de configuration, j'ai rajouté d'autres choses par rapports à la version que tu a pu regarder. Je ne l'avais pas encore mis en ligne, mais cela me parait nécessaire de le laisser. Ca permet d'avoir une interface de configuration et avoir un visu sur le rendu du module qui n'est pas le même pour tout le monde en fonction des configurations faites.
Peut-être.
Je viens de jeter un petit coup d'oeil sur la version mise à jour ...
... et ce que je vois me semble faisable sans coder un nouveau code de config
et cela n'enlève en rien la possibilité que tu définisses complètement le rendu du module (la page de contact) en fonction de la configuration faites.
Les facilitées de configuration sont justement là pour que le concepteur du module se concentre sur le dev. de son module.
Avant, (et c'est une expérience personnelle) le développement d'un nouveau module était embêtant car il fallait que je consacre beaucoup de temps à la création d'un code de configuration.
Avec la solution retenue, créer le paramétrage du module RSS, Selecdoc ou Photoshow a été simple
Et quand je parle du paramétrage, je parle de options de configuration du module, mais aussi des textes descriptifs de ces options.
C'est pourquoi je t'ai fait un tout petit exemple avec deux paramètres de config de ton module
Enfin, c'est une première impression que je te donnes ... puisque que tu as eu l'imprudence de demander l'avis de développeurs
a+
Hors ligne
Ok chef ! C'est avec de l'imprudence qu'on progresse
Jvais aller jeter un coup d'oeil (certainement un peu plus que ça) sur les modules RSS, Selecdoc et Photoshow.
Hors ligne
J'ai vu un peu comment ca marchait ! C'est génial Je pense sortir une version du module formulaire de contact finalisée dans le courant de la semaine prochaine (version sans fichier de config en plus, code le plus clair possible et minimum de bug 8) ).
Je compte mettre la possibilité de rajouter un petit captcha, tout en gardant les possibilités déjà existante.
Simple question : du coup si j'ai a peu près bien compris, les module user, user_auto et user_cgu n'ont pas vraiment besoin de fichier de config eux non plus, non?
Hors ligne
J'ai vu un peu comment ca marchait ! C'est génial Je pense sortir une version du module formulaire de contact finalisée dans le courant de la semaine prochaine (version sans fichier de config en plus, code le plus clair possible et minimum de bug 8) ).
Super,
Je te réserve une place sur le site pour ton module finalisé, testé et documenté
Je compte mettre la possibilité de rajouter un petit captcha, tout en gardant les possibilités déjà existante.
Toujours une bonne idée.
D'ailleurs j'en profite pour confirmer à la communauté ziteplusienne que le captcha officiel ziteplus sera disponible avec la version 0.9.2
Il est actuellement en version alpha et en cours de test
Simple question : du coup si j'ai a peu près bien compris, les module user, user_auto et user_cgu n'ont pas vraiment besoin de fichier de config eux non plus, non?
Tu as bien compris l'idée générale
Par contre, cette fonctionnalité de config générique est apparue avec la 0.9.1 ...
... certains anciens modules sont déjà passés à la nouvelle façon de gérer la config, comme SELECTDOC
... d'autres, pas encore comme ceux que tu cites
... par contre, les nouveaux modules (RSS, PHOTOSHOW) sont tous à la nouvelle sauce
a+
Jean-Paul
Hors ligne
Héhé, tu as commencé à travailler sur le captcha officiel zite+? Car autant que je l'utilise plutôt que de développer moi même des fonctions.
Hors ligne
Pas eu le temps d'avancer ce week-end, mais j'ai mis à jour le "lien de téléchargement"! C'est une version fonctionnelle du module! Une autre version pour faire des formulaire plus complets sortira, mais comme ce ne sera peut être pas cette semaine, je rend celle ci disponible pour ceux qui souhaitent l'utiliser!
Hors ligne
j'up cette conversation pour signaler que le sujet devrait etre déplacé dans module ou code source
aussi que c'est un module qui fonctionne bien simple et efficace merci à Atod pour cette belle contrib
j'ai découvert un ptit bug sur un mail du type contact@01machin.com
si ton mail dépend de ton nom de domaine avec des chiffres cela ne fonctionne pas !!
un zite+ associatif http://asso.gard.a.toi.free.fr
création de site internet dans le Gard et Ardèche http://www.creation-site-internet-gard.com/
Hors ligne
j'up cette conversation pour signaler que le sujet devrait etre déplacé dans module ou code source
En fait il n'y a pas de forum "module"; et le forum "code source" est pour zitecms ... Atod a posté au bon endroit
Hors ligne
j'up cette conversation pour signaler que le sujet devrait etre déplacé dans module ou code source
aussi que c'est un module qui fonctionne bien simple et efficace merci à Atod pour cette belle contrib
j'ai découvert un ptit bug sur un mail du type contact@01machin.com
si ton mail dépend de ton nom de domaine avec des chiffres cela ne fonctionne pas !!
J'ai essayé de reproduire le bug, mais sans réussite. Si celui qui écrit un message a une adresse du type contact@01machin.com, le message est bien envoyé et bien reçu. Pour la configuration du destinataire avec un email de type contact@01machin.com, j'ai pas pu faire le test n'ayant pas de domaine de ce type. Mais pour l'instant je ne vois pas ou il peut y avoir un bug. Peut tu me confirmer le bug? Avec des rapports de bug un peu plus détaillés. Ton adresse mail testé fonctionne bien?
Hors ligne
Bonjour,
Y a-t-il moyen de l'adapter juste pour zite et non zite+ ? Je ne sais pas programmer, et j'ai donc quelques soucis avec ce module ...
Merci
Dernière modification par dfraiture (03/03/2011 12:02:14)
Hors ligne
Il doit y avoir un moyen d'adapter ça pour zite, mais je me suis pas penché sur les greffons! Je sais pas si c'est possible de réaliser un petit panneau de configuration comme pour ziteplus! Tu a toujours la possibilité d'inclure un code php de formulaire de contact tout fait dans ta page ou tu veux l'afficher!
Hors ligne
On va dire que je le fait exprès (:D) MAIS quelle est la différence ente les "modules" Zite+ et les "greffons" Zite ? A moins d'un tuto détaillé pour les formulaires, parce que malgré les explications du forum, je n'arrive pas à le faire fonctionner ...
Dernière modification par dfraiture (03/03/2011 14:19:28)
Hors ligne
Comme ziteplus est modulaire, c'est assez facile d'intégrer du code en plus en créant des modules qui hérite d'une classe module déjà existante. Zite ne fonctionne pas pareil, et l'ajout de code ne se fait pas de la même façon. Il n'y a pas de classe module existante (sauf erreur) sur laquelle on peut s'appuyer en utilisant un héritage. Et comme je n'ai pas passé beaucoup de temps à étudier zite, je suis moins à l'aise.
Hors ligne
Ah! pardon, j'avais lu trop vite
En fait, j'ai mis du code comme dans le tuto, mais je n'arrive pas à faire générer la page en php ... J'ai toujours le message "Désolé, la page n'existe pas ..."
Hors ligne
Ah! pardon, j'avais lu trop vite
En fait, j'ai mis du code comme dans le tuto, mais je n'arrive pas à faire générer la page en php ... J'ai toujours le message "Désolé, la page n'existe pas ..."
Quel tuto? Toujours sous zite?
Hors ligne
dfraiture a écrit :Ah! pardon, j'avais lu trop vite
En fait, j'ai mis du code comme dans le tuto, mais je n'arrive pas à faire générer la page en php ... J'ai toujours le message "Désolé, la page n'existe pas ..."
Quel tuto? Toujours sous zite?
Ben justement ; je n'en sais rien ...
celui-ci : http://www.zitecms.org/zite/forum/viewtopic.php?id=8
Dernière modification par dfraiture (03/03/2011 14:57:51)
Hors ligne
Vous allez dire que je le fait exprès, mais j'ai voulu modifier le formulaire ; je n'ai besoin que des champs email-objet-message. J'ai donc effacé ce qui m'ennuyait dans le fichier ini, mais mon formulaire reste le même ... une idée ? Ou tout le moins, une marche à suivre svp ?
Merci !!
Hors ligne
Si tu n'es pas sous ziteplus, c'est normal que le fichier ini soit pas pris en compte. Ce qu'il te faut c'est un code php à insérer dans une page pour ton zite!
Un code comme celui la pour avoir email-objet-message
<?php
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'moi@fournisseur.com';
// copie ? (envoie une copie au visiteur)
$copie = 'oui';
// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;
if (($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.' <'.$email.'>' . "\r\n";
// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace(''',"'",$message);
$message = str_replace('',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))
if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
echo ' <fieldset><legend>Vos coordonnées</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="email">Email :</label>'."\n";
echo ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";
echo ' <fieldset><legend>Votre message :</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="objet">Objet :</label>'."\n";
echo ' <input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="message">Message :</label>'."\n";
echo ' <textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";
echo ' <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le formulaire !" /></div>'."\n";
echo '</form>'."\n";
};
?>
Hors ligne