Formlulaire contact...

Bonjour,

j'ai mis sur un site que je construit en ce moment, un formulaire contact dont le code est
<?php
if(!defined('PLX_ROOT')) exit;
$email = 'jlmarius@gmail.com';
$capcha = new plxCapcha();
$erreur = '';
$succes = '';
if(!empty($_POST)) {
    if($_POST['rep2'] == md5($capcha->gds.$_POST['rep'])) {
        $_POST['nom'] = trim($_POST['nom']);
        $_POST['content'] = trim($_POST['content']);
        $_POST['ip'] = plxUtils::getIp();
        if(empty($_POST['nom']) OR empty($_POST['mail']) OR empty($_POST['content']))
            $erreur = '<span style="color: red;">Merci de remplir tous les champs obligatoires !</span>';
        if($erreur == '' AND !plxUtils::checkMail(trim($_POST['mail'])))
            $erreur = '<span style="color: red;">L\'adresse mail saisie n\'est pas valide.</span>';
        if($erreur == '') {
            $corps = 'Nom : '.$_POST['nom']."\n";
            $corps .= 'Site : '.$_POST['site']."\n";
            $corps .= 'E-mail : '.$_POST['mail']."\n";
            $corps .= 'Adresse IP : '.$_POST['ip']."\n";
            $corps .= 'Message : '."\n";
            $corps .= $_POST['content'];
            $corps = str_replace("\r"," ",$corps);
            $headers = 'From: '.$_POST['mail']."\n";
            $headers .= 'MIME-Version: 1.0'."\n";
            $headers .= 'Content-type: text/plain; charset="'.PLX_CHARSET.'"'."\n";
            $headers .= 'Content-transfer-encoding: 8bit'."\n";
            if(mail($email,'PluXML, contact depuis votre blog',$corps, $headers))
                $succes = 'Merci de nous avoir contacté, nous vous répondrons le plus rapidement possible.';
            else
                $erreur = '<span style="color: red;">Une erreur s\'est produite au cours de l\'envoi de votre message ...</span>';
        }
    } else {
        $erreur = '<span style="color: red;">La vérification anti-spam a échouée !</span>';
    }
} else {
    $erreur = 'Merci de remplir le formulaire ci-dessous :';
    $_POST['nom'] = '';
    $_POST['sujet'] = '';
    $_POST['mail'] = '@';
    $_POST['content'] = '';
}
?>
<div id="form">
    <p class="message_contact"><?php echo (!empty($erreur))?$erreur:$succes; ?></p>
    <?php if(!empty($erreur) OR empty($_POST)): ?>
        <form action="#form" method="post">
            <fieldset>
                <div class="form_left">
                    <label>Nom :</label>
                    <input name="nom" type="text" size="20" value="<?php echo plxUtils::strCheck($_POST['nom']) ?>" maxlength="30" /><br />
                    <label>Site (facultatif) :</label>
                    <input name="site" type="text" size="20" value="<?php echo plxUtils::strCheck($_POST['site']) ?>" /><br />
                    <label>E-mail :</label>
                    <input name="mail" type="text" size="20" value="<?php echo plxUtils::strCheck($_POST['mail']) ?>" /><br />
                </div>
                <label>Message :</label>
                <textarea name="content" cols="35" rows="6"><?php echo plxUtils::strCheck($_POST['content']) ?></textarea>
                <div class="clearer"></div>
                <p class="button">
                <?php echo $capcha->q(); ?> : <input name="rep" type="text" size="10" />
                <input name="rep2" type="hidden" value="<?php echo $capcha->r(); ?>" />
                <span><input type="submit" value="Envoyer" /> <input type="reset" value="Effacer" /></span>
                </p>
            </fieldset>
        </form>
    <?php endif; ?>
</div>
mais je ne sais plus où j'ai trouvé ce code ...

J'ai le problème suivant: dans l'affichage du formulaire, le capcha part en vrille du style
Quelle est la lettre du mot ? :  "champ de saisie"  tdzesvtroisième
Est-ce que quelqu'un a une idée pour solutionner ce problème ? Merci d'avance.

Réponses

  • Personnellement, j'utilise celui du wiki. Je l'ai juste adapté en largeur pour mon site mais ça marche impec !
    http://wiki.pluxml.org/index.php?page=Cr%C3%A9er+un+formulaire+de+contact
  • Celui du wiki pour ma part ne fonctionne pas (site sur free)

    Affichage de l'erreur
    Parse error: syntax error, unexpected T_STRING in /mnt/153/sda/0/6/XXXXXXXX/data/statiques/007.contact4.php on line 45
    
  • décembre 2010 modifié
    Salut,

    Il y a des erreurs dans le code du formulaire du Wiki (je suppose du à la migration, cf. [ce post|http://forum.pluxml.org/viewtopic.php?id=2156]).

    J'attendais une réaction des Admin avant de corriger le Wiki.

    En attendant modifie la ligne 45 par
    $erreur = "Une erreur s'est produite au cours de l'envoi de votre message...";
    
    Et n'oublie pas non plus d'ajouter des anti-slashs.

    Bon pour faire simple ... voici une version corrigée (et qui fonctionne) du code de la page contact :
    <?php
    # Page statique Pluxml
    # revision 1.0 par Stephane: compatibilité pluxml 4.2 
    # revision 1.0.1 corrections par LRO-ComputingFroggy
    
    if(!defined('PLX_ROOT')) exit;
    
    # Renseignez ici votre adresse email
    $email = 'lro@polo.com';
    # Renseignez ici le sujet de l'email que vous recevrez
    $theSubject="Message du formulaire Contact du site web polo.com";
    
    # Notre capcha
    $capcha = new plxCapcha();
    
    # Nos variables
    $erreur = '';
    $succes = '';
    
    if(!empty($_POST)) { # Formulaire valide
    
    	if($_POST['rep2'] == md5($capcha->gds.$_POST['rep'])) { # Capcha valide
    		$_POST['nom'] = trim($_POST['nom']);
    		$_POST['content'] = trim($_POST['content']);
    		$_POST['ip'] = plxUtils::getIp();
    		# On verifie les donnees
    		if(empty($_POST['nom']) OR empty($_POST['mail']) OR empty($_POST['content']))
    			$erreur = 'Merci de remplir tous les champs obligatoires';
    		if($erreur == '' AND !plxUtils::checkMail(trim($_POST['mail'])))
    			$erreur = "L'adresse mail saisie n'est pas valide";
    		# On peut envoyer si pas d'erreur
    		if($erreur == '') {
    			$corps = 'Son nom : '.$_POST['nom']."\n";
    			$corps .= 'Son mail : '.$_POST['mail']."\n";
    			$corps .= 'Son adresse IP : '.$_POST['ip']."\n";
    			$corps .= 'Son message : '."\n";
    			$corps .= $_POST['content'];
    			# On retire certains caracteres
    			$corps = str_replace("\r"," ",$corps);
    			# On envoi le mail
    			$headers = 'From: '.$_POST['mail']."\r\n";
    			$headers .= 'MIME-Version: 1.0'."\r\n";
    			$headers .= 'Content-type: text/plain; charset="'.PLX_CHARSET.'"'."\r\n";
    			$headers .= 'Content-transfer-encoding: 8bit'."\r\n";
    			if(mail($email,$theSubject,stripslashes($corps), $headers))
    				$succes = "Merci de nous avoir contacté, nous vous répondrons le plus rapidement possible.";
    			else
    				$erreur = "Une erreur s'est produite au cours de l'envoi de votre message...";
    		}
    	} else { # Capcha non valide
    		$erreur = "la vérification anti-spam a échouée";
    	}
    } else {
    	# Initialisation
    	$erreur = "Merci de remplir le formulaire ci-dessous pour nous contacter par courriel.";
    	$_POST['nom'] = '';
    	$_POST['content'] = '';
    	$_POST['mail'] = '';
    }
    ?>
    
    <div id="form">
    	<p class="message_contact"><?php echo (!empty($erreur))?$erreur:$succes; ?></p>
    	<?php if(!empty($erreur) OR empty($_POST)): ?>
    		<form action="#form" method="post">
    				<label for="nom">Votre nom :<br />
    </label><input name="nom" type="text" size="30" value="<?php echo plxUtils::strCheck($_POST['nom']) ?>" maxlength="30" /><br />
    <label for="mail">Votre courriel :<br />
    </label><input name="mail" type="text" size="30" value="<?php echo plxUtils::strCheck($_POST['mail']) ?>" /><br /><br />
    <label for="content">Votre message :<br />
    </label><textarea name="content" cols="60" rows="12"><?php echo plxUtils::strCheck($_POST['content']) ?></textarea><br />
    <br />
    				<label for="rep">Vérification anti-spam :</label>
    				<p><?php echo $capcha->q(); ?> : <input name="rep" type="text" size="10" /></p>
    				<input name="rep2" type="hidden" value="<?php echo $capcha->r(); ?>" />
    				<p><input type="submit" value="Envoyer" /> <input type="reset" value="Effacer" /></p>
    		</form>
    	<?php endif; # Fin du if si mail envoye ?>
    </div>
    
    N'oublie pas de remplacer les polo.com par ton site !
  • StéphaneStéphane Member, Former PluXml Project Manager
    Bonjour ComputingFroggy

    N'hésite pas à mettre à jour le wiki, surtout si c'est un pour un problème de caractères \ manquants

    Merci d'avance.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Sur Free ça ne marche pas ? Bizarre, je suis sur Free et il me semble que je m'étais envoyé un courriel et ça avait marché !
  • @ ComputingFroggy

    Merci pour cette "réactivité", ton code fonctionne parfaitement ;)

    @ Ghune

    çà fonctionne parfaitement sur Free, le problème venait du formulaire "qui partait en vrille au niveau du look"

    bonne soirée
  • Re, Bonjour et merci pour cette version complète de la page de contact mais voila ^^, j'ai un problème, j'utilise la beta a l'heure actuelle avec le captcha image désactivé mais j'ai encore le captcha lettre et à chaque message il me met qu ela vérification captcha a échoué. Je ais vérifier ma boite mail au cas ou il me les envoie tout de même ....
  • PapynerdsPapynerds Member
    février 2011 modifié
    c'est bon j'ai trouvé pour les utilisateurs de la version beta il faut mettre ceci
    "if($_POST'rep2' == sha1($capcha->gds.$_POST'rep')) { # Capcha valide"
    a la place de
    if($_POST == md5($capcha->gds.$_POST)) { # Capcha valide
  • Ouah merci pour la réponse, je l'avais désactiver pour évité ce genre de soucis ^^'
Connectez-vous ou Inscrivez-vous pour répondre.