Forum ZitePLUS

La communauté des utilisateurs du CMS ZitePLUS

Vous n'êtes pas identifié(e).

#1 31/03/2013 01:25:59

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Nom champ formulaire de contact

Bonjour,
Un détail. Dans le mail que je reçois après la saisie du formulaire de contact, j'aimerais faire apparaitre le nom du champ avant son contenu.
Comme ceci :
Nom : lenomdelexpediteur
Prénom : leprenomdelexpediteur
E-mail : expediteur@sondomaine.fr
Message : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Que modifier dans le php.

Merci

Hors ligne

#2 31/03/2013 08:58:26

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Nom champ formulaire de contact

salut
avec la meme démarche que le captcha tu vas dans configurer => contact
Ajouter le champ nom :
Ajouter le champ prenom :
Ajouter le champ civilité :
Ajouter le champ objet :
le mail étant affiché dans l'expéditeur


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

#3 31/03/2013 10:10:39

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Re : Nom champ formulaire de contact

Bonjour,
Merci pour ton message mais je crois que l'on ne sait pas compris.
Je ne faisais pas allusion au corps du formulaire en lui-même plus au mail qu'il m'envoie.

Je le reçois comme de ceci :

Prénom NOM
expediteur@sondomaine.fr
Marseille
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

et j'aurais aimé recevoir comme ceci :


De la part de : Prénom NOM
E-mail : expediteur@sondomaine.fr
De : Marseille
Son message : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Si il n'y a pas de solution, il ne faut pas s'obstiner, c'est juste de la curiosité.

Merci

Hors ligne

#4 31/03/2013 10:33:03

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Nom champ formulaire de contact

autant pour moi je n'avais pas bien saisie ta question
si si tu peut faire ce que tu veut à partir du moment que tu connais un peu le php
tu à dans ton dossier zplus/module un fichier contact.php et contact.ini ce sont ces fichiers que tu peut modifier pour ton désir perso wink

edit peut être pour faire simple je ne suis pas un champion en php mais je te fait une suggestion

active la signature et dans contact.php ligne 71 (avec notepad++) tu à ceci

[== PHP ==]
		$signature = 'Message envoyé par '.$prenom.' '.$nom.' via mon formulaire de contact ';      // à voir ============> dans les options de config

tu modifie cette ligne avec

[== PHP ==]
		$signature = 'De la part de :'.$prenom.' '.$nom.' E-mail : '.$email.';      // à voir ============> dans les options de config

faut faire un retour à la ligne et marseil je ne sais pas d'ou cela sort smile


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

#5 31/03/2013 14:11:29

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Re : Nom champ formulaire de contact

Merci, ce n'est pas tout à fait ce que je voulais mais beaucoup aider à trouver la solution et les bonnes lignes dans le php.
Mais après quelques tests il doit y avoir un soucis avec le nombre maximum de caractères autorisés. Avec environ 100 caractères dans le message, j'ai l'erreur : "N'oubliez pas de saisir votre message" alors qu'il a été évidement saisi.

Dernière modification par bernquel (31/03/2013 15:52:43)

Hors ligne

#6 01/04/2013 01:19:33

snypi
Moderateurs
Inscription : 11/03/2008
Messages : 1 235
Site Web

Re : Nom champ formulaire de contact

j'ai jamais entendu parlé de cette limite avec le formulaire de contact
à par cette ligne (contact.php ligne 98)

[== PHP ==]
$message = wordwrap($message, 70);	// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()

je ne vois pas ce qui peut empêché plus d'un 100ene de caractère

ps donne nous le code que tu à fait pour te réaliser ton souhait histoire que si quelqu'un passe sur le forum avec le même besoin qu'il trouve une solution ici merci


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

#7 14/04/2013 11:00:28

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Re : Nom champ formulaire de contact

Bonjour,
Après quelques jours de repos, je me remets dans mon problème. En fait, ce sont les caractères avec accents qui posent problèmes et qui génére l'erreur : "N'oubliez pas de saisir votre message". Le code de mon formulaire est ci-dessous. Merci.

[== PHP ==]
<?php
/*
module:	Contact - Gestion d'un formulaire de contact
Copyright Hubert ARNOUX 2011
Site : http://www.atod.fr/ziteplus/
Licence : CeCILL-B, http://www.cecill.info

Historique:
  Version et Date   version Zite+ mini    Description
  ===============		==================    ===========
  1.0 du 01/02/2011	0.9.1.b1              (Atod) Création du module
  1.1 du 17/04/2011 0.9.2.a1              (JPG) Ajout captcha de ziteplus + diverses corrections, simplifications et modifications
	1.2 du 26/11/2011 0.9.2.a7							(JPG) Petite correction bug
Le module principal se trouve dans le fichier   zplus/module/contact.php
Les données ini sont dans                       zplus/module/contact.ini
les données paramètres dans                     zplus/module/config/contact.opt

Il permet de créer un formulaire de contact :
 - vérification de la syntaxe d'email
 - possibilité d'envoyer une copie de l'email à l'expéditeur
 - configurez vos messages d'échec et de réussite d'envoi
 - configurez une action du formulaire ???????????? => voir ce que devient le traitement de base du formulaire ??????????????????????????????????????????
 - possibilité d'afficher le champ "nom" ou non
 - possibilité d'afficher le champ "prénom" ou non
 - possibilité d'afficher le champ "objet" ou non
 - possibilité d'afficher le champ "civilité" ou non
 - possibilité d'ajouter une signature à vos message pour savoir si le message provient de votre site <=================== voir user_auto <<<<<<<<<<<<<<<<<<<<<
 - conserver les données saisies dans le formulaire en cas d'echec
 - Captcha dans le formulaire de contact
PROJET :
 - possibilité d'ajouter un champ "piece jointe" ou non : En projet
*/
//==============================================================================
class Tcontact extends Tmodule {
	function dojob($opt="") {
		parent::dojob();
		$out='';
    self::$cms->content['dftcss'].= ' label {
                 width:150px;
                 float:left;
                 } ';
		require_once(self::$cms->zpath.'/outils.php');
    /*
     * cette fonction sert à nettoyer et enregistrer un texte
     */
    function Rec($postname) {
      $text ='';
      if (isset($_POST[$postname])) {    // si formulaire envoyé, on récupère le champ. Sinon, on initialise la variable
				$text = no_mq_gpc($_POST[$postname]);
	      $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;
		$err_email = $err_message= $err_telephone= $err_messagesent = false;
			// Etablir valeurs des champs
		$nom = strtoupper(Rec('nom'));										//"NOM" en majuscule
		$prenom = ucwords(strtolower(Rec('prenom'))); 		//"Prénom" avec une majuscule puis en minuscules
		$civilite	= Rec('civilite');
    $ville   = Rec('ville');                                   // ---- ajout de la variable ville postal
    $telephone   = Rec('telephone');                         // ---- ajout de la variable telephone
    $email   = Rec('email');
    $objet   = Rec ('objet');                           // ---- valeur objet forcee
    $message = Rec('message');
		$signature = 'Message envoyé via mon site internet ';      // à voir ============> dans les options de config
    if (isset($_POST['envoi'])) {
        // On va vérifier les variables et l'email ...
      $err_email = !verification_email($email);
      $err_message = empty($message);
      $err_nom = empty($nom);
      $err_telephone = empty($telephone);              // ---- ajout de la verification de telephone
      $err_formulaire |= $err_email | $err_message | $err_telephone | $err_nom ;
     	$err_captcha = false;
			if (!$err_formulaire) {
				self::$cms->doevent(eCaptcha,eAfter,$err_captcha);
	      $err_formulaire |= $err_captcha;
			}
				// Pas d'erreur => envoyer le message
      if ($err_formulaire==false) {
        	// les 4 variables sont remplies, on génère puis envoie le mail
        $headers = 'From: '.$civilite.' '.$prenom.' '.$nom.' <'.$email.'>' . "\r\n";  /// Logiquement, une génération par défaut est faite + ATTENTION: faire: noreply@hhhhh pour la copie utilisateur
				$cible = $this->getOption('destinataire');
					// envoyer une copie au visiteur ?
        if ($this->getOption('copie')) {
        	$cible .= ','.$email;
        };
//=> à voir
            // Remplacement de certains caractères spéciaux
				$message = html_entity_decode($message);
				$message = str_replace('&#039;',"'",$message);
				$message = str_replace('&#8217;',"'",$message);
				$message = str_replace('<br>','',$message);
				$message = str_replace('<br />','',$message);
				$message = wordwrap($message, 570);	// Dans le cas où nos lignes comportent plus de 70 caractères, nous les coupons en utilisant wordwrap()
				if ($this->getOption('signature')){		//Dans le cas ou il faut insérer une signature
					$message .= '
			
'.$signature;
			$message .= $this->getOption('endsignature');
				}
        	// Envoi du mail
      	if (mail($cible, $objet, $civilite.'Prénom : '.$prenom."\n".'Nom : '.$nom."\n".'E-Mail : '.$email."\n".'Ville : '.$ville."\n".'Téléphone : '.$telephone."\n \n".'Objet : '.$objet."\n".'Message : '.$message, $headers)) {
    			return '<p class="okmessage">'.$this->getOption('messagesent').'</p>'."\n";    // ---- on ajoute les noms, prenoms, mail, telephone et ville postal dans le texte du mail. "\n" indique un saut de ligne,   ' ' permet de mettre en espace entre 2 variables
        } else {//Il y a un probleme
          $err_formulaire = $err_messagesent = true;
        };
      }
    }; // fin du if (!isset($_POST['envoi']))
    if (($err_formulaire) || (!isset($_POST['envoi']))) {
			if ($err_formulaire) {
        if ($err_nom)	self::$cms->msgShow($this->get_message('err_nom'),false);
        if ($err_email)	self::$cms->msgShow($this->get_message('err_email'),false);
        if ($err_message)	self::$cms->msgShow($this->get_message('err_message'),false);
        if ($err_telephone)	self::$cms->msgShow($this->get_message('err_telephone'),false);
        if ($err_messagesent) self::$cms->msgShow($this->get_message('err_messagesent'),false);
			}
        // afficher le formulaire
      $out .= '<form id="contact" method="post" '.($this->getOption('form_action')?'action="'.$this->getOption('form_action').'"':'').">\n";
      $out .= '    <fieldset><legend>'.$this->get_message('coordonnees').'</legend>'."\n";

			if ($this->getOption('showname')){	/*On affiche le champ nom*/
				$out .= '        <p>'."\n";
        $out .= '            <label for="nom">'.$this->get_message('nom').'</label>'."\n";
        $out .= '            <input type="text" id="nom" name="nom" value="'.$nom.'" tabindex="1" />'."\n";
        $out .= '        </p>'."\n";
			}
			if ($this->getOption('showfirstname')){	/*On affiche le champ prenom*/
				$out .= '        <p>'."\n";
        $out .= '            <label for="prenom">'.$this->get_message('prenom').'</label>'."\n";
        $out .= '            <input type="text" id="prenom" name="prenom" value="'.$prenom.'" tabindex="2" />'."\n";
        $out .= '        </p>'."\n";
			}
			if ($this->getOption('civility')){	/*On affiche le champ civilité*/
				$out .= '        <p>'."\n";
        $out .= '            <label for="civilite">'.$this->get_message('civilite').'</label>'."\n";
        $out .= '			   <input type="radio" id="civilite" name="civilite" value="'.stripslashes($this->get_message('monsieur')).'" '.($civilite==$this->get_message('monsieur')?'checked':'').' tabindex="3" /> '.$this->get_message('monsieur')."\n";
				$out .= '			   <input type="radio" id="civilite" name="civilite" value="'.stripslashes($this->get_message('madame')).'" '.($civilite==$this->get_message('madame')?'checked':'').' tabindex="3" /> '.$this->get_message('madamme')."\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="'.$email.'" tabindex="4" />'."\n";
			$out .= '        </p>'."\n";
			
			 $out .= '        <p>'."\n";
      $out .= '            <label for="ville">'.$this->get_message('ville').'</label>'."\n";   // ---- on rajoute un champ ville postal
			$out .= '            <input type="text" id="ville" name="ville" value="'.$ville.'" tabindex="4" />'."\n";
			$out .= '        </p>'."\n";
						
			 $out .= '        <p>'."\n";
      $out .= '            <label for="telephone">'.$this->get_message('telephone').'</label>'."\n";   // ---- on rajoute un champ telephone
			$out .= '            <input type="text" id="telephone" name="telephone" value="'.$telephone.'" tabindex="5" />'."\n";
			$out .= '        </p>'."\n";
			
			$out .= '    </fieldset>'."\n";
      $out .= '    <fieldset><legend>' . $this->get_message('message') . '</legend>'."\n";
			if ($this->getOption('showobject')){	/*On affiche le champ objet*/
				$out .= '        <p>'."\n";
        $out .= '            <label for="objet">'.$this->get_message('objet').'</label>'."\n";
        $out .= '            <input type="text" id="objet" name="objet" value="'.$objet.'" tabindex="6" />'."\n";
        $out .= '        </p>'."\n";
			}
      $out .= '        <p>'."\n";
      $out .= '            <label for="message" style="vertical-align:top"	>'.$this->get_message('corps').'</label>'."\n";
      $out .= '            <textarea id="message" name="message" tabindex="7"'.($this->getOption('width')>0?' cols="'.$this->getOption('width'):'').'" rows="'.$this->getOption('length').'">'.$message.'</textarea>'."\n";
      $out .= '        </p>'."\n";
      $out .= '    </fieldset>'."\n";
			self::$cms->doevent(eCaptcha,eBefore,$out,true);
      $out .= '    <div style="text-align:center;"><input type="submit" name="envoi" value="'.$this->get_message('envoyer').'" /></div>'."\n";
      $out .= '</form>'."\n";
    	};
		return $out;
	}
}
?>

Hors ligne

#8 14/04/2013 17:20:48

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Nom champ formulaire de contact

Bonjour,
c'est le code du formulaire d'origine ou tu l'as modifié ?
Quelle version de php est utilisé ?
a+
Jean-Paul

Hors ligne

#9 14/04/2013 17:59:46

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Re : Nom champ formulaire de contact

Bonjour,
C'est un code que j'ai trouvé sur ce forum il me semble. La seule que j'ai modifiée est le nom du champ qui précède son contenu dans le mail que je reçois.
J'ai fait un test avec le formulaire d'origine et je rencontre le même problème.
Je suis en Php5.4
Merci.

Hors ligne

#10 14/04/2013 19:39:49

jpg
Administrateurs
Inscription : 19/11/2008
Messages : 2 086
Site Web

Re : Nom champ formulaire de contact

bernquel a écrit :

Je suis en Php5.4

Le problème vient de là.

j'ai modifié le module contact pour la future version 0.9.3 de Ziteplus.

En attendant il faut localiser la ligne

	      $text = htmlspecialchars($text, ENT_QUOTES);

et mettre à la place

	      $text = htmlspecialchars($text, ENT_QUOTES,'');

a+
Jean-Paul

ps: les modules ziteplus sont ici http://www.giausserand.fr/index.php?per … moduleplus

Hors ligne

#11 14/04/2013 22:15:46

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Re : Nom champ formulaire de contact

Merci, Je n'ai plus d'erreur lors de l'envoie du message. C'est top. Bravo pour ce magnifique outil.

Bernard

Dernière modification par bernquel (14/04/2013 22:23:30)

Hors ligne

#12 30/04/2013 10:32:45

bernquel
Membre
Inscription : 28/03/2013
Messages : 37

Re : Nom champ formulaire de contact

Bonjour,
Juste encore un petit détail sur mon formulaire de contact dont le code complet est plus haut. Habitant en Bretagne il est fréquent de trouver un apostrophe ou plusieurs dans les noms de famille.
Dans le message que je reçois le nom apparait comme ceci : L&#039;HELGOUAC&#039;H  au lieu de L'HELGOUAC'H par contre pas de problèmes dans le corps du message.

Le résultat de mon test :

Prénom : Jo
Nom : L&#039;HELGOUAC&#039;H
E-Mail : xxx@free.fr
Ville : Rennes
Téléphone : 0223000000

Objet : test du 30/04
Message : dk'ndlel eekdk l'El


Que faudrait-il modifier ?

Avant de passer chez un hébergeur payant j'ai voulu tester les pages chez Free mais le message n'est pas reçu alors que l'envoi est confirmé. C'est un détail sans doute une compatibilité de PHP car en sous domaine chez 1and1 ça fonctionne.

Merci.

Bernard

Hors ligne

Pied de page des forums