Bonjour le forum


J'ai installé sur mon site un formulaire permettant aux lecteurs de s'abonner à un bulletin. Cela marche plutôt bien, je ne me suis donc jamais inquiété, sauf qu'un lecteur m'a joint pour me faire remarquer que le formulaire de fonctionnait pas. Et en effet, lorsqu'on entre une adresse yahoo.fr, il y a erreur et le formulaire n'est pas envoyé. Curieusement on peut mettre n'importe quoi, @WYZ.XX, cela fonctionne. C'est là :

http://www.musicologie.org/bulletin.php

Merci aux plus malines ou malins que moi. Ce n'est pas drameux, mais c'est quand même une énigme. Je me suis adressé à mon hébergeur (online.net), mais je crois qu'il va falloir un peu de temps avant que le problème soit compris.
Bonjour,
A priori, ce serait bien de voir le code php qui traite l'arrivée des données du formulaire, il n'y a pas de validation javascript, et tu dis que ça fonctionne la plupart du temps, c'ela semble donc venir du traitement côté serveur.

Ou alors il est possible que les gens de Yahoo.fr reçoivent ton mail en spam.
Rebonjour,


Normalement, cela n'a rien à voir avec yahoo, ce formulaire m'est envoyé, cela veut dire que c'est entre mon site et ma BAL, les lecteurs m'envoient leur adresse email, le formulaire vérifie simplement si le format est bon, mais ce n'est théoriquement que du texte. Mon hébergeur (online) dit ne pas filtrer yahoo... Mon site est chez online, mes bals aussi, c'est donc entre online et online. As tu essayé, on entre n'importe quoi, comme xyz@lalala.fr, ça marche, @yahoo.fr, erreur : http://www.musicologie.org/bulletin.php

Voici le code de la page, html compris

<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn="#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_1']=array("oui");
if(isset($_POST['submit'])){
$erreur="";
// Nettoyage des entrées
while(list($var,$val)=each($_POST)){
if(!is_array($val)){
$$var=strip_tags($val);
}else{
while(list($arvar,$arval)=each($val)){
$$var[$arvar]=strip_tags($arval);
}
}
}
// Formatage des entrées
$f_2=strip_tags(trim($f_2));
// Verification des champs
if($f_1==""){
$erreur.="<li><span class='txterror'>Le champ &laquo; Je m &raquo; n'a pas été défini.</span>";
$errf_1=1;
}
if(strlen($f_2)<2){
$erreur.="<li><span class='txterror'>Le champ &laquo; Adresse de l'abonnement &raquo; est vide ou incomplet.</span>";
$errf_2=1;
}else{
if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
$f_2)){
$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
$errf_2=1;
}
}
if($erreur==""){
// Création du message
$titre="Message de votre site";
$tete="From:Site@Musicologie.org\n";
$corps.="Je m'abonne au bulletin : ".$list['f_1'][$f_1]."\n";
$corps.="Adresse de l'abonnement : ".$f_2."\n";
$corps.="Vous pouvez adresser un message : ".$f_3."\n";
if(mail("bulletin@musicologie.org", $titre, stripslashes($corps), $tete)){
$ok_mail="true";
}else{
$erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
}
}
}
?><html>
<head>
<title>abonnement au bulletin de musicologie</title>
<style type="text/css" media="screen">
<!--
INPUT { color: #000; font-size: 12px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 12px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 12px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
--></style>

</head>
<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<p align="center">&nbsp;
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash4/cabs/swflash.cab#version=4,0,0,0" width="468"
height="60">
<param name="movie" value="actu/bandeau.swf">
<param name="play" value="true">
<param name="loop" value="true">
<param name="quality" value="high">
<embed src="actu/bandeau.swf" play="true" loop="true" quality="high" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
width="468" height="60"></embed>
</object>
<p align="center"><img src="rfm.gif" width="400" height="71" border="0"></p>
<p align="center"><font face="Arial" size="5"><b>Abonnement au bulletin</b></font></p>
<p align="center"><font face="Arial" size="5"><b>&nbsp;</b></font></p>
<table align="center" cellpadding="0" cellspacing="0" width="450">
<tr>
<td>
<p align="justify" style="line-height:150%;">Parfois articulé autour d'un thème, le bulletin rend compte, le cas échéant de mises à jour

<i>importantes</i> sur le site<i> musicologie.org</i>, mais surtout il informe sur les nouvelles parutions relatives à la musique et à la
musicologie, tient un calendrier&nbsp;de concerts, de conférences et de colloques, publie des critiques de disques, de concerts, de partitions,
rassemble un choix d'informations (revue de presse) de la période écoulée. Il paraît environ tous les dix jours. Au cas où le formulaire renverrait une erreur, envoyez directement un courriel :
<script type="text/javascript" language="javascript">
<!--
var d="";for(var i=0;i<441;i++)d+=String.fromCharCode(("\"l}+oH--Fqz}3\"l}+tH;FtG>>>Ft664o6H^ }tyr9q}zxNsl}Nzop33-\'g2&80(17P:5,7(JI^$B+5(e)_DDBg210g286(g29(5_D7+,6P+e5()_~I0$,/7g2\\IP5(3/$&(JQeQ*NDDKMJI%_8//(7,1F086,&g2/_g2_*,(IP5(3/$&(JQ_Q*NDDKMu75,1*P)5g20e+$5eg2\'(JVXKMIg25*zzzIP5(3/$&(JQzQ*NDdDP68%675JSKKKP5(3/$&(JQ~FQ*NDbDKMIau8%g-(&7;_$%g21;1(0(17~IDBg210g286(g287_D7+,6P+5(;)_~I~ID`;6~I$%g211(5B$8B%8//(7,1B\'(B086,;&g2/g2*,(^Q$`IP5(3/$&(JQ;Q*ND|DP68%675JSKKK-9nsl}NzopL 3t46?;40D@6>=4Fp\"lw3o4".charCodeAt(i)+52)%95+32);eval(d)
//-->
</script>
</p>
</td>
</tr>
</table>
<p>&nbsp;</p>
<table align="center" border="1" cellpadding="10" width="530" bordercolor="#0066FF" bordercolordark="#000099" bordercolorlight="#6699FF">
<tr>
<td width="502">
<? if($ok_mail=="true"){ ?>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<tr><td>
<p align="justify"><span class='txtform'>Le message ci-dessous nous a bien été transmis, nous vous en remercions.</span></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>
<p align="justify"><span class='txtform'>Vous recevrez régulièrement (en théorie !)&nbsp;le bulletn dès sa prochaine parution.</span></td></tr>
</table>
<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<table width='100%' border='0' cellspacing='1' cellpadding='1'>
<? if($erreur){ ?><tr><td colspan='2' bgcolor='red' width="498"><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2' width="498"><ul><?echo$erreur?></ul></td></tr><?}?>
<tr><td colspan='2' width="498">
<p align="justify">Les adresses communiquées ne sont pas utilisées à d'autres usages que celui de l'envoi du bulletin. Musicologie org est adhérent à la
CNIL, sous le numéro 1122478.</td></tr>
<tr><td align='right' width="37%">
<p>&nbsp;</p>
</td><td width="311">
<p>&nbsp;</p>
</td></tr>
<tr><td align='right' width="37%">
<p align="left"><span class='txtform'>Je m'abonne au bulletin </span></td><td width="311">
<table border='0' cellspacing='0' cellpadding='0'>
<? for($id=0;$id<count($list['f_1']);$id++){
if($id==$f_1){$ct="checked";}
print("<tr><td><input ".$ct." type='radio' name='f_1' value=".$id." border='0'></td><td><span class='txtform'>".$list[f_1][$id]."</span></td></tr>");
unset($ct);
}?>
</table>
</td></tr>
<tr><td align='right' width="37%">
<p>&nbsp;</p>
</td><td width="311">
<p>&nbsp;</p>
</td></tr>
<tr><td align='right' width="37%">
<p align="left"><span class='txtform'>Courriel auquel doit être envoyé le bulletin (champ obligatoire)</span></td><td width="311"><input type='text' style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_2' value='<?echo stripslashes($f_2);?>' size='24' border='0'></td></tr>
<tr><td align='right' width="37%">
<p>&nbsp;</p>
</td><td width="311">
<p>&nbsp;</p>
</td></tr>
<tr><td align='right' width="37%">
<p align="left"><span class='txtform'>Vous pouvez nous adresser un message </span></td><td width="311"><textarea style='width:360 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_3' rows='6' cols='40'><?echo$f_3?></textarea></td></tr>
<tr><td align='right' width="37%">
<p>&nbsp;</p>
</td><td width="311">
<p>&nbsp;</p>
</td></tr>
<tr><td align='right' width="37%"></td><td width="311"><input type='submit' name='submit' value='Envoyer' border='0'></td></tr>
</table>
</form>
<? } ?><p align="center"><a href="http://www.musicologie.org">Retour</a></p>

</td>
</tr>
</table>
<p align="center">&nbsp;musicologie.org, 56 rue de la Fédération, 93100 Montreuil.<br>06 06 61 73 41.</p>
<p align="center"><a href="http://www.xiti.com/xiti.asp?s=40578" title="WebAnalytics" target="_top"><script type="text/javascript">
<!--
Xt_param = 's=40578&p=abonnement';
try {Xt_r = top.document.referrer;}
catch(e) {Xt_r = document.referrer; }
Xt_h = new Date();
Xt_i = '<img width="39" height="25" border="0" alt="" ';
Xt_i += 'src="http://logv9.xiti.com/hit.xiti?'+Xt_param;
Xt_i += '&hl='+Xt_h.getHours()+'x'+Xt_h.getMinutes()+'x'+Xt_h.getSeconds();
if(parseFloat(navigator.appVersion)>=4)
{Xt_s=screen;Xt_i+='&r='+Xt_s.width+'x'+Xt_s.height+'x'+Xt_s.pixelDepth+'x'+Xt_s.colorDepth;}
document.write(Xt_i+'&ref='+Xt_r.replace(/[<>"]/g, '').replace(/&/g, '$')+'" title="Internet Audience">');
//-->
</script><noscript><img width="39" height="25" src="http://logv9.xiti.com/hit.xiti?s=40578&p=abonnement" alt="WebAnalytics" /></noscript></a><p align="center">&nbsp;</p>
Bonjour,

Le problème, je pense, viens de la regex qui contrôle le mail :

if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
'@'.
'[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+[/code],
$f_2)){
$erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
$errf_2=1;
}

(on ne peut pas l'éditer dans une balise "code"). Mais je ne vois pas ce qui cloche...

Note : supprimez les abonnements bidons de votre base de donnée : c'est moi qui ait fait des tests...
Modifié par Olivier C (07 Dec 2012 - 07:41)
Merci, j'ai aussi reçu les essais. Quand je mets cette page sur un autre serveur (free.fr), l'erreur disparaît. Comme elle est indépendante, je vais donc l'«l'extérioriser», en attendant une solution plus propre ou un autre formulaire.

Je pense que c'est bien au niveau de la validation que cela se passe et sur « @yahoo ».

merci encore pour votre attention.

jmw
musicologie a écrit :
Quand je mets cette page sur un autre serveur (free.fr), l'erreur disparaît. Comme elle est indépendante, je vais donc l'«l'extérioriser», en attendant une solution plus propre ou un autre formulaire.

Comme vous voulez. Mais sinon vous pouvez essayez ça (c'est ma regex maison) :
if (!preg_match("#^[a-z0-9._-]{3,50}@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i", $email)) {
/*etc...*/