We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 19425
    • 10 Posts
    Bonjour

    J’ai un léger problème à vous soumettre !
    Il s’agit de l’ajout d’un snippet dans mon site, mais je n’arrive pas à le faire et j’aurais besoin d’un peu d’aide !

    Mon script PHP permet l’envoi d’un mail avec la fonction mail() de php.

    Le pb, c’est que je ne sais pas comment l’ajouter à MODx... La démarche que j’ai suivi :

    Ressources -> Gestion des ressources -> Snippet -> Nouveau Snippet. Là-dedans, j’ai mis un nom de snippet ( [[email_contact]] ), et le code PHP de mon script. Seule chose, c’est que, dès que j’appelle mon snippet directement dans la template de ma page (juste avant mon formulaire d’envoi de mail), ça me dit "Error while inserting event log into database".

    Je ne comprends donc pas pourquoi. Si vous pouvez m’aider, je suis ouvert à toutes les réponses !

    Voici mon code PHP:
    <?php
    if(isset($_POST['message']))
    {
    	$verif='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
    
    	$message=preg_replace('#(<|>)#', '-', $_POST['message']);
    	$message=str_replace('"', "'",$message);
    	$message=str_replace('&', 'et',$message);
    
    	$nom=preg_replace('#(<|>)#', '-', $_POST['nom']);
    	$nom=str_replace('"', "'",$nom);
    	$nom=str_replace('&', 'et',$nom);
    
    	$prenom=preg_replace('#(<|>)#', '-', $_POST['prenom']);
    	$prenom=str_replace('"', "'",$prenom);
    	$prenom=str_replace('&', 'et',$prenom);
    
    	$societe=preg_replace('#(<|>)#', '-', $_POST['societe']);
    	$societe=str_replace('"', "'",$societe);
    	$societe=str_replace('&', 'et',$societe);
    
    	$objet=preg_replace('#(<|>)#', '-', $_POST['objet']);
    	$objet=str_replace('"', "'",$objet);
    	$objet=str_replace('&', 'et',$objet);
    
    	$email=stripslashes(htmlentities($_POST['email']));
    	$message=stripslashes(htmlspecialchars($message));
    	$nom=stripslashes(htmlspecialchars($nom));
    	$prenom=stripslashes(htmlspecialchars($prenom));
    	$societe=stripslashes(htmlspecialchars($societe));
    	$objet=stripslashes(htmlspecialchars($objet));
    	
    	$envoi=htmlentities($_POST['envoi']);
    	
    	if((empty($message))or(empty($objet))or(!preg_match($verif,$email)))
    	{
    		if(empty($email)and(empty($message))and(empty($objet)))
          {
          	echo '<p class="error">Tous les champs sont vides.</p>';
             $message='';$email='';$objet='';
          }
    		else
          {
          	if(!preg_match($verif,$email))
          		echo'<p class="error">Votre adresse e-mail n\'est pas valide.</p>';
          	else
          		echo'<p class="error">Il faut remplir tous les champs !</p>';
          }
    	}
    	elseif((!empty($message))or(!empty($objet))or(preg_match($verif,$email)))
    	{
    		$objet='[INTERSA-contact] : '.$objet;
    		$headers='From: '.$email."\r\n".'Subject: '.$objet."\r\n".'Content-type:text/plain;charset=iso-8859-1'."\r\n".'Sent: '.date('l, F d, Y H:i');
    		
    		if(mail('[email protected]',$objet,"Nom : $nom \nPrénom : $prenom \nSociété : $societe \n\nMessage : \n$message",$headers))
    			echo '<p>Votre message a bien été envoyé. Merci.</p>';
    		else
    			echo '<p class="error">Un problème est survenu durant l\'envoi du mail.</p>';
    	}
    	else
    	{
    		echo '<p class="error">Une condition innatendue est survenue lors de l\'exécution du script.</p>';
    	}
    return " ";
    }
    ?>
      • 16732
      • 592 Posts
      Je n’ai pas trop de temps mais :

      1) Ton nom de snippet doit être : email_contact

      2) Dans ton template, tu dois appeler ton snippet "uncached" pour récupérer tes données en POST : [!email_contact!]

      Pour ton formulaire penches toi plutôt sur eForm
        • 19425
        • 10 Posts
        Euh... merci de ta réponse, mais ca n’a pas marché apparemment... J’ai tjs la même erreur, même en mettant [!email_contact!] dans mon tpl...