problèmes avec le formulaire de contact du wiki
Bonjour, avec ce formulaire :
[url]http://wiki.pluxml.org/?page=Créer[/url] un formulaire de contact
Quand je teste le formulaire, j'ai souvent l'erreur d'envoi "Une erreur s'est produite au cours de l'envoi de votre message..."
J'ai le problème sous pluxml 4.2, 4.3 et 4.3.1
Le problème est le même sous php 4.4.9 et 5.2.12 (j'ai essayé les deux versions, je suis passé à php5 aujourd'hui) sur mon formulaire de contact :
http://zetrader.fr/?static4/pierre-aribaut-zetrader-contact
Sur le même site, les formulaires de commentaires du blog fonctionnent bien sans aucun bug, et les formulaires avec formmail fonctionnent correctement, pas d'erreur d'envoi.
Voici mon code, c'est c/c du code du wiki avec mail modifié :
Un coup ça marche j'ai :
"Merci de nous avoir contacté, nous vous répondrons le plus rapidement possible."
Et la tentative suivante j'ai :
"Une erreur s'est produite au cours de l'envoi de votre message..."
Une idée d'où ça peut venir ? Cela arrive à d'autres ?
[url]http://wiki.pluxml.org/?page=Créer[/url] un formulaire de contact
Quand je teste le formulaire, j'ai souvent l'erreur d'envoi "Une erreur s'est produite au cours de l'envoi de votre message..."
J'ai le problème sous pluxml 4.2, 4.3 et 4.3.1
Le problème est le même sous php 4.4.9 et 5.2.12 (j'ai essayé les deux versions, je suis passé à php5 aujourd'hui) sur mon formulaire de contact :
http://zetrader.fr/?static4/pierre-aribaut-zetrader-contact
Sur le même site, les formulaires de commentaires du blog fonctionnent bien sans aucun bug, et les formulaires avec formmail fonctionnent correctement, pas d'erreur d'envoi.
Voici mon code, c'est c/c du code du wiki avec mail modifié :
<table width=420>
<?php
# Page statique Pluxml : formulaire de contact par florent@pluxml.org
# revision 1.0 par Stephane: compatibilité pluxml 4.2
if(!defined('PLX_ROOT')) exit;
# Renseignez ici votre adresse mail
$email = 'monmail@gmail.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']."\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 formulaire de contact',$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';
$_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">
<fieldset>
<label>Votre nom :</label>
<input name="nom" type="text" size="30" value="<?php echo plxUtils::strCheck($_POST['nom']) ?>" maxlength="30" /><br />
<label>Votre e-mail :</label>
<input name="mail" type="text" size="30" value="<?php echo plxUtils::strCheck($_POST['mail']) ?>" /><br />
<label>Votre message :</label>
<textarea name="content" cols="35" rows="8"><?php echo plxUtils::strCheck($_POST['content']) ?></textarea>
<label><strong>Vérification anti-spam</strong> :</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>
</fieldset>
</form>
<?php endif; # Fin du if si mail envoye ?>
</div>
</table>
Nota : j'ai encadré le tout dans une table de 420 pixels sinon le champ du message se barre à droite de la page, mais le bug aléatoire de l'échec d'envoi se fait que j'encadre de la table ou non.Un coup ça marche j'ai :
"Merci de nous avoir contacté, nous vous répondrons le plus rapidement possible."
Et la tentative suivante j'ai :
"Une erreur s'est produite au cours de l'envoi de votre message..."
Une idée d'où ça peut venir ? Cela arrive à d'autres ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Est-ce que la fonction mail() de php est autorisée sur ton hébergeur ?
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Le code utilisé par ce forum pour la fonction de renvoi du mot de passe : Suite au passage à php5 j'ai rajouté un fichier php.ini dans le répertoire d'un forum avec bdd qui me faisait une erreur me disant qu'il ne peut pas modifier des headers déjà envoyés.
En mettant un fichier php.ini avec la ligne output_buffering = 4096 ça a supprimé ce message d'erreur.
Pour le répertoire du forum dnf sans bdd, j'ai mis aussi ce fichier php.ini même si javais pas ce message d'erreur.
En revanche sur le répertoire racine du blog, n'ayant pas eu de pb au passage avec php5, je n'ai pas mis de fichier php.ini, je devrais ?
Sinon voici la config php installée :
http://zetrader.fr/phinfo.php
Tu sauras probablement mieux décrypter que moi si y a un truc bloqué au niveau de la fonction mail.
Le code php du fichier appelé pour mon formulaire mail utilisant formmail via un input (formulaire qui fonctionne bien) :
Pierre Aribaut - zetrader & zeforums
J'ai le message :
"Impossible de vérifier les mises à jour tant que 'allow_url_fopen' est désactivé sur ce système"
J'imagine que ça se règle aussi via un fichier php.ini mais est-ce que ça peut avoir d'autres conséquences que l'impossiblité de voir la mise à jour ? Cette fonction 'allow_url_fopen' est utilisée pour l'envoi du mail ?
Pierre Aribaut - zetrader & zeforums
Pour l'erreur allow_url_fopen c'est lié à la configuration de ton serveur.
D'ailleurs tu peux le voir avec ton phpinfo() : allow_url_fopen = Off
Il faut qu'il soit à On pour ne plus avoir l'erreur et permettre à pluxml de vérifier les nouvelles versions dispos.
Pour l'envoi de mail. Il ne faut pas confondre un formmail (qui souvent s'appuie sur un cgi du serveur/hébergeur) et la fonction mail() de php
D'après le code utilisé par ton forum pour la fonction de renvoie du mot de passe, la fonction mail() et utilisée. Comme tu dis que cela fonctionne, j'en déduis que la fonction est bien présente et fonctionnelle. Donc le problème doit venir d'ailleurs. Je n'ai pas de réponse à te donner pour le moment.
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
J'ai tenté plusieurs choses par rapport au formulaire de contact du wiki, retirer le texte avant le formulaire ça change rien, ce formulaire me fait une erreur au moins une fois sur deux, si la fonction mail() n'était pas autorisé, ça n'arriverait que ça puisse marcher puisque des fois ça marche.
Bref je n'arrive pas à voir d'où vient le problème mais je ne peux pas laisser en place un formulaire de contact qui marche moins d'une fois sur deux.
Donc je me suis débrouillé autrement, j'ai intégré le formulaire de contact à base de formmail à la place puisque ce formulaire fonctionne à tous les coups (jusqu'ici en tout cas).
Mon hébergeur c'est 1and1, personne d'autre n'a ce problème avec le formulaire de contact du wiki chez 1and1 ?
Il faut faire quelques tests pour voir puisque des fois ça marche, sait-on jamais qu'un seul test soit "chanceux".
Pierre Aribaut - zetrader & zeforums