OVH Cloud OVH Cloud

[DEBUTANT] critiquez mon petit code !

25 réponses
Avatar
Laurent
Bonjour

Je suis débutant complet en html et php...(amateur)
C'est un exercice que je me suis inventé après quelques autres plus
simples.
je veux vendre 4 articles à des prix définis à l'avance sur le net. Je
demande le nom prénom email et la quantité d'articles. je valide et ça
me récapitule ma commande avec le total.
je selectionne mon mode de paiement et ensuite je confirme la commande
ce qui a pour but d'envoyer un email au webmestre du site avec la
commande complète.

Je pense que mon code HTML est trop lourd (du à frontpage) et
optimisable... mais bon ça, à la limite, je m'en fous un peu...

c'est surtout le php que je voudrais optimiser. Je vois plusieurs
défauts :
- c'est redondant dans les passages de variables, il y a surement un
moyen de faire mieux pour que les variables soient connues sur les 3
pages?
- c'est pas sécurisé surement, je crois qu'on peut bidouiller dans les
champs, et il faut mettre un truc (mais quoi? ) pour éviter que? que
pourrait il arriver d'ailleurs?
- le code est surement extremement maladroit, est il bien présenté?
- j'aurai voulu rajouter un bouton sur la 2eme page: "modifier la
commande" , si ce n'est pas correct revenir à l'ancienne page
saisie.php avec les champs préremplis pour modif , comment faire?
- faut il prendre l'habitude de séparer le code HTML du code PHP sur 2
fichiers différents, j'ai vu ça sur des cours de fac (formulaires,
traitement)
- j'ai essayé de pomper une fonction verifier en javascript mais ça
marche pas, je n'ai jamais fait de javascript. comment vérifier que le
champs a bien été saisi et bloquer l'envoi dans le cas contraire?
comment détecter que l'email est bien de la forme xxxx@xxxx.xx ?

Est ce que vous pourriez vous pencher sur ce code pour émettre le
maximum de critiques afin que je ne prenne pas trop de mauvaises
habitudes?

MERCI BEAUCOUP !!!!

PS: le programme tourne ici :

http://membres.lycos.fr/psylyon/saisie.php (j'ai désactivé l'envoi de
mail)

------------------------------------------------------------------------------------------------------------------------
saisie.php

<? session_start(); // démarrage session ?>

<html>

<head>
<SCRIPT language="javascript">
function verifer()
{
var nom=document.saisie.nom.value

if (nom="") alert("Entrez votre nom !");
}
</SCRIPT>
<meta http-equiv="Content-Language" content="fr">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<title>BON DE COMMANDE</title>
<meta name="Microsoft Theme" content="sumipntg 001, default">
<meta name="Microsoft Border" content="tl, default">
</head>

<body background="sumtextb.jpg" bgcolor="#FFFFFF" text="#000066"
link="#3333CC" vlink="#666699" alink="#990099">

<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>

<h1 align="center"><!--mstheme--><font face="Verdana, Arial,
Helvetica" color="#003366">BON DE COMMANDE<!--mstheme--></font></h1>
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center">&nbsp;</p>
<p align="center">&nbsp;</p>



<? // on définit ici les prix unitaires de chaque article

$_SESSION['PU1']=2.65; $PU1=$_SESSION['PU1'];
$_SESSION['PU2']=3.63; $PU2=$_SESSION['PU2'];
$_SESSION['PU3']=5.74; $PU3=$_SESSION['PU3'];
$_SESSION['PU4']=1.27; $PU4=$_SESSION['PU4'];

// on définit le nom des articles
$_SESSION['article1']="article N°1" ;
$article1=$_SESSION['article1'];
$_SESSION['article2']="article N°2" ;
$article2=$_SESSION['article2'];
$_SESSION['article3']="article N°3" ;
$article3=$_SESSION['article3'];
$_SESSION['article4']="article N°4" ;
$article4=$_SESSION['article4'];

?>

<FORM ACTION="validation.php" METHOD="post">

<!--mstheme--></font>

<h5 align="left"><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366">Nom: <input type="text" name="nom"
size="36"><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="left"><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366">prénom: <input type="text" name="prenom"
size="33"><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="left"><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366">Adresse email: <input type="text" name="email"
size="26"><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="left">&nbsp;</p>
<!--mstheme--></font>
<table border="1" cellpadding="0" cellspacing="0"
style="border-collapse: collapse" width="76%" id="AutoNumber1"
height="155" bordercolorlight="#C0C0C0" bordercolordark="#003366">
<tr>
<td width="59%" height="22">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="center"><!--mstheme--><font face="Verdana, Arial,
Helvetica" color="#003366">ARTICLE<!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
<td width="11%" height="22">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="center"><!--mstheme--><font face="Verdana, Arial,
Helvetica" color="#003366">Quantité<!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
<td width="37%" height="22">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="center"><!--mstheme--><font face="Verdana, Arial,
Helvetica" color="#003366">prix unitaire<!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
</tr>
<tr>
<td width="59%" height="18" align="left">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366"><? echo $article1 ?><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
<td width="11%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<input type="text" name="quantite1" size="8"></p>
<!--mstheme--></font>
</td>
<td width="37%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><? echo $PU1; ?><!--mstheme--></font></td>
</tr>
<tr>
<td width="59%" height="18" align="left">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366"><? echo $article2 ?><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
<td width="11%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><input type="text" name="quantite2"
size="8"><!--mstheme--></font></td>
<td width="37%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><? echo $PU2; ?><!--mstheme--></font></td>
</tr>
<tr>
<td width="59%" height="18" align="left">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366"><? echo $article3 ?><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
<td width="11%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><input type="text" name="quantite3"
size="8"><!--mstheme--></font></td>
<td width="37%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><? echo $PU3; ?><!--mstheme--></font></td>
</tr>
<tr>
<td width="59%" height="18" align="left">
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366"><? echo $article4 ?><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
</td>
<td width="11%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><input type="text" name="quantite4"
size="8"><!--mstheme--></font></td>
<td width="37%" height="18">
<!--mstheme--><font face="Verdana, Arial, Helvetica">
<p align="center"><? echo $PU4; ?><!--mstheme--></font></td>
</tr>
</table>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="left"><!--mstheme--><font face="Verdana, Arial, Helvetica"
color="#003366">Je préfère payer par :
<!--mstheme--></font> </h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="left">
<!--mstheme--><font face="Verdana, Arial, Helvetica" color="#003366">
<input type="radio" value="cheque" checked name="paiement"> Chèque (à
réception)<!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="left">
<!--mstheme--><font face="Verdana, Arial, Helvetica" color="#003366">
<input type="radio" value="paypal" name="paiement"> Paypal (livraison
immédiate)&nbsp;
<!--mstheme--></font> </h5>
<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<h5 align="left">
<!--mstheme--><font face="Verdana, Arial, Helvetica" color="#003366">
<input type="radio" value="mandat" name="paiement"> Mandat (à
réception)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="submit" value="Valider" name="B1"
onclick="verifier()"><!--mstheme--></font></h5>
<!--mstheme--><font face="Verdana, Arial, Helvetica">
</form>

<!--mstheme--></font>
</body>

</html>

------------------------------------------------------------------------------------------------------------------------
traitement.php

<? session_start(); // démarrage session ?>

<html>

<HEAD>
<meta http-equiv="Content-Language" content="fr">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<title>BON DE COMMANDE</title>
<meta name="Microsoft Theme" content="sumipntg 001, default">
<meta name="Microsoft Border" content="tl, default">
</HEAD>

<body background="sumtextb.jpg" bgcolor="#FFFFFF" text="#000066"
link="#3333CC" vlink="#666699" alink="#990099">

<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>


<h2 align="center">Récapitulatif de votre commande</h2>
<h5>

<? $Q1=$_POST["quantite1"] ; $_SESSION['Q1']=$Q1; // on récupère
les quantités définies à la page de saisie
$Q2=$_POST["quantite2"] ; $_SESSION['Q2']=$Q2;
$Q3=$_POST["quantite3"] ; $_SESSION['Q3']=$Q3;
$Q4=$_POST["quantite4"] ; $_SESSION['Q4']=$Q4;

$nom=$_POST['nom'] ; $_SESSION['nom']=$nom; // on récupère
les infos persos définies à la page de saisie
$prenom= $_POST['prenom'] ;$_SESSION['prenom']=$prenom;
$email= $_POST['email'] ; $_SESSION['email']=$email;
$PU1= $_SESSION['PU1']; // on récupère les prix unitaires
définis à la page de saisie
$PU2= $_SESSION['PU2'];
$PU3= $_SESSION['PU3'];
$PU4= $_SESSION['PU4'];

$article1=$_SESSION['article1']; // on récupère les noms des
articles
$article2=$_SESSION['article2'];
$article3=$_SESSION['article3'];
$article4=$_SESSION['article4'];

$Prix1= $Q1 *$PU1 ; $_SESSION['prix1']=$Prix1 ; // on
calcule les prix pour chaque quantité
$Prix2= $Q2 *$PU2 ; $_SESSION['prix2']=$Prix2 ;
$Prix3= $Q3 *$PU3 ; $_SESSION['prix3']=$Prix3 ;
$Prix4= $Q4 *$PU4 ; $_SESSION['prix4']=$Prix4 ;

$total=$Prix1+$Prix2+$Prix3+$Prix4 ;
$_SESSION['total']=$total;

$paiement=$_POST['paiement'] ;$_SESSION['paiement']=$paiement;
// on récupère le mode de paiement
?>
<h4>
<? echo "Commande de ".$prenom." "."$nom"." email: ".$email
;?>
<br><br>
<? echo "paiement par ".$paiement ;?>
</h4>



<table border="1" cellpadding="0" cellspacing="0"
style="border-collapse: collapse" width="81%" id="AutoNumber1"
height="155">
<tr>
<td width="61%" height="22">

<h5 align="center">ARTICLE
</td>
<td width="11%" height="22">
<h5 align="center">Quantité
</td>
<td width="15%" height="22">
<h5 align="center">prix unitaire
</td>
<td width="44%" height="22">
<h5 align="center">prix TTC
</td>
</tr>
<tr>
<td width="61%" height="18" align="left">
<h5><? echo $article1 ?>
</td>
<td width="11%" height="18">
<h5 align="center"><? echo $Q1 ; ?></td>
<td width="15%" height="18">

<h5 align="center"><? echo $PU1 ;?></td>
<td width="44%" height="18">

<h5 align="center"><? echo $Prix1 ;?> </td>
</tr>
<tr>
<td width="61%" height="18" align="left">

<h5><? echo $article2 ?>
</td>
<td width="11%" height="18">
<h5 align="center"><? echo $Q2 ; ?></td>
<td width="15%" height="18">

<h5 align="center"><? echo $PU2 ;?></td>
<td width="44%" height="18">

<h5 align="center"><? echo $Prix2 ;?> </td>
</tr>
<tr>
<td width="61%" height="18" align="left">

<h5><? echo $article3 ?>
</td>
<td width="11%" height="18">
<h5 align="center"> <? echo $Q3 ; ?></td>
<td width="15%" height="18">

<h5 align="center"><? echo $PU3 ;?></td>
<td width="44%" height="18">

<h5 align="center"><? echo $Prix3 ;?> </td>
</tr>
<tr>
<td width="61%" height="18" align="left">

<h5><? echo $article4 ?>
</td>
<td width="11%" height="18">
<h5 align="center"><? echo $Q4 ; ?></td>
<td width="15%" height="18">

<h5 align="center"><? echo $PU4 ;?></td>
<td width="44%" height="18">

<h5 align="center"><? echo $Prix4 ;?> </td>
<td width="44%" height="18">
</tr>
<tr>
<td width="61%" height="18" align="left">

<h5>TOTAL
</td>
<td width="11%" height="18">
<h5 align="center"> </td>
<td width="15%" height="18">

<h5 align="center"> </td>
<td width="44%" height="18">

<h5 align="center"><? echo $total ;?> </td>
<td width="44%" height="18">
</tr>

</table>
<br>
<form ACTION="confirmation.php" METHOD="GET">
<DIV align="center">
<input type="submit" value="Valider la commande"
name="B1"><!--mstheme--></font></h5>


</body>

</html>

------------------------------------------------------------------------------------------------------------------------

<? session_start(); // démarrage session ?>

<html>

<head>

<meta http-equiv="Content-Language" content="fr">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<title>BON DE COMMANDE</title>
<meta name="Microsoft Theme" content="sumipntg 001, default">
<meta name="Microsoft Border" content="tl, default">
</head>

<body background="sumtextb.jpg" bgcolor="#FFFFFF" text="#000066"
link="#3333CC" vlink="#666699" alink="#990099">

<!--mstheme--><font face="Verdana, Arial,
Helvetica"><!--mstheme--></font>
<br><br><br>
<h2> Merci. Votre commande a bien été envoyée! </h2>

<?

$Q1=$_SESSION['Q1'] ; // on récupère les quantités définies à
la page de saisie
$Q2=$_SESSION['Q2'] ;
$Q3=$_SESSION['Q3'] ;
$Q4=$_SESSION['Q4'] ;

$nom=$_SESSION['nom'] ; // on récupère les infos persos
définies à la page de saisie
$prenom=$_SESSION['prenom'] ;
$email= $_SESSION['email'];
$PU1= $_SESSION['PU1']; // on récupère les prix unitaires
définis à la page de saisie
$PU2= $_SESSION['PU2'];
$PU3= $_SESSION['PU3'];
$PU4= $_SESSION['PU4'];

$Prix1= $_SESSION['prix1'] ; // on calcule les prix
pour chaque quantité
$Prix2= $_SESSION['prix2'] ;
$Prix3= $_SESSION['prix3'] ;
$Prix4= $_SESSION['prix4'] ;
$total=$_SESSION['total'];

$article1=$_SESSION['article1']; // on récupère les noms des
articles
$article2=$_SESSION['article2'];
$article3=$_SESSION['article3'];
$article4=$_SESSION['article4'];

$paiement=$_SESSION['paiement']; // mode de paiement

// création du message à envoyer au webmestre:

$msg = "Bonjour \n\n vous avez une nouvelle vente de : " ;
$msg.= $prenom." ".$nom." "." \t Email: ".$email." \n" ;
$msg.= "paiement par ".$paiement." \n \n \n" ;
$msg.= "\n".$article1."\t \t ".$Q1."\t exemplaire(s) \t \t ".$Prix1."
€";
$msg.= "\n".$article2."\t \t ".$Q2."\t exemplaire(s) \t \t ".$Prix2."
€";
$msg.= "\n".$article3."\t \t ".$Q3."\t exemplaire(s) \t \t ".$Prix3."
€";
$msg.= "\n".$article4."\t \t ".$Q4."\t exemplaire(s) \t \t ".$Prix4."
€";
$msg.="\n\nMontant de la vente: \t \t \t \t \t ".$total." €";


// création des entetes, destinaraire,sujet du message à
envoyer au webmestre
$mailheaders = "From: mon site web <> \n";
$mailheaders .= "Reply-To: $email\n\n";
$destinataire = "monemail@wanadoo.fr";
$sujet = "Une nouvelle commande via mon site web !";
mail($destinataire, $sujet, $msg, $mailheaders);
?>

-----------------------------------------------------------------------------------------------------------------------
--
me répondre via l'adresse email protégée:
http://cerbermail.com/?4s2gdXzrwp

5 réponses

1 2 3
Avatar
Calimero
Vincent Lascaux wrote:

Il te reste tout le développement de la réception de tes messages (qui
peuvent être splittés sur plusieurs recv()).



Pareil, recv fait tout le boulot pour moi. Il réorganise les message dans
l'ordre, vire le header TCP... pour me fournir les données "décodées". J'ai
utilisé recv sans connaitre le format du header TCP.


OK. Mais il te reste tout le boulot de reformation de tes messages à
partir des suites d'octets de taille variable que tu as reçu
successivement. Et ca, TCP peut pas le faire à ta place parce qu'il ne
sait pas ce que tu veux faire.
Pour mail, étant donné la foultitude de formats, il est trop couteux
de développer un validateur de mail pour un résultat pas forcément top.

<zap sur le reste>
Je comprends qu'éventuellement ca puisse "déranger" que mail() accepte
l'envoi (la tentative) d'un mail mal formaté. Maintenant, mettre un
filtre sur les n dans les retours à la ligne dans le sujet est une
non solution comme le dit Olivier. C'est l'arbre qui cache la foret.
</zap sur le reste>

Si on rajoute un truc qui retourne false s'il y a un n dans le sujet,
quelles sont les applications qui vont casser ? Tu dis qu'on va casser des
applications qui suivent le comportement spécifié de mail(), mais la doc dit
"Il [le sujet] ne doit comporter aucun caractère de nouvelle ligne"


Tu as oublié la fin de la phrase: "sinon, le mail risque de ne pas
etre envoye correctement.".
Il y a donc bien tentative d'envoi du mail.

--
@+
Calimero


Avatar
Vincent Lascaux
Tu dis qu'on va casser des
applications qui suivent le comportement spécifié de mail(), mais la doc
dit
"Il [le sujet] ne doit comporter aucun caractère de nouvelle ligne"


Tu peux ouvrir un rapport de bug sur la doc si tu veux, mais je te
souhaite bien du courage pour résumer en quelques lignes tout ce qu'il
faut savoir de l'« Internet Message Format ».


Roh, on aurait du commencer par là :)
http://news.php.net/article.php?group=php.cvs&article348

Donc ca serait fixé ? ils ont ajouté ca à la fonction mail.
for(i=0;!iscntrl((unsigned char)subject[i]);i++) {}
subject[i]='';

(subject est tronqué au premier caractere "iscntrl")

Ca m'apprendra à dire du mal des devs PHP !
Si tu veux ouvrir un bug pour que les FWS fonctionne... je te souhaite bien
du courage aussi :)

--
Vincent


Avatar
Olivier Miakinen

Tu peux ouvrir un rapport de bug sur la doc si tu veux, mais je te
souhaite bien du courage pour résumer en quelques lignes tout ce qu'il
faut savoir de l'« Internet Message Format ».


Roh, on aurait du commencer par là :)
http://news.php.net/article.php?group=php.cvs&article348


Rho, on aurait même dû commencer par là :)
http://lxr.php.net/source/php-src/ext/standard/mail.c

Donc ca serait fixé ? ils ont ajouté ca à la fonction mail.
for(i=0;!iscntrl((unsigned char)subject[i]);i++) {}
subject[i]='';

(subject est tronqué au premier caractere "iscntrl")

Ca m'apprendra à dire du mal des devs PHP !


;-)

Si tu veux ouvrir un bug pour que les FWS fonctionne... je te souhaite bien
du courage aussi :)


Pas la peine :

for (i = 0; to_r[i]; i++) {
if (iscntrl((unsigned char) to_r[i])) {
/* According to RFC 822, section 3.1.1
* long headers may be separated into
* parts using CRLF followed at least one
* linear-white-space character ('t' or ' ').
* To prevent these separators from being
* replaced with a space, we use the
* SKIP_LONG_HEADER_SEP to skip over them.
*/
SKIP_LONG_HEADER_SEP(to_r, i);
to_r[i] = ' ';
}
}

Et un peu plus haut) :

#define SKIP_LONG_HEADER_SEP(str, pos)
if (str[pos] == 'r' && str[pos + 1] == 'n' &&
(str[pos + 2] == ' ' || str[pos + 2] == 't')) {
pos += 3;
while (str[pos] == ' ' || str[pos] == 't') {
pos++;
}
continue;
}



:-D

Tout va donc pour le mieux dans le meilleur des mondes.

Bon, il reste quand même trois problèmes, à savoir :
- on peut toujours mettre des champs Bcc dans additional_headers ;
- ton adresse invalide n'est toujours pas terminée par .invalid ;
- tu envoies toujours des articles avec accents sans déclaration MIME.

[ je propose un suivi en privé pour les deux derniers points ]


Avatar
Vincent Lascaux
Pas la peine :

for (i = 0; to_r[i]; i++) {
if (iscntrl((unsigned char) to_r[i])) {
/* According to RFC 822, section 3.1.1
* long headers may be separated into
* parts using CRLF followed at least one
* linear-white-space character ('t' or ' ').
* To prevent these separators from being
* replaced with a space, we use the
* SKIP_LONG_HEADER_SEP to skip over them.
*/
SKIP_LONG_HEADER_SEP(to_r, i);
to_r[i] = ' ';
}
}


Etrange... ca concerne que le champ to alors que la RFC parle de tous les
headers ?

Et un peu plus haut) :

#define SKIP_LONG_HEADER_SEP(str, pos)
if (str[pos] == 'r' && str[pos + 1] == 'n' &&
(str[pos + 2] == ' ' || str[pos + 2] == 't')) {
pos += 3;
while (str[pos] == ' ' || str[pos] == 't') {
pos++;
}
continue;
}


Gasp, finalement je vais ptet redire du mal des codeurs PHP alors :)
Un continue caché dans une macro, c'est pas mal... Ca m'a pris un peu de
temps pour comprendre pourquoi le to_r[i] = ' '; était pas executé après un
"rn "

- on peut toujours mettre des champs Bcc dans additional_headers ;


Oui, mais la fonction mail "décline toute responsabilité" sur ce champs. Il
doit être au format spécifié par la RFC. Moi ca ne me gêne pas dans ce
contexte.

--
Vincent

Avatar
Olivier Miakinen

Etrange... ca concerne que le champ to alors que la RFC parle de tous les
headers ?


Ça concerne aussi le champ subject, mais le commentaire était ici
uniquement.

Gasp, finalement je vais ptet redire du mal des codeurs PHP alors :)
Un continue caché dans une macro, c'est pas mal...


Si la macro était dans un .h je serais d'accord avec toi. Mais là comme
c'est spécifique au .c, il n'y a pas de risque qu'elle soit utilisée par
d'autres fonctions. Une macro n'est pas une fonction : ce n'est que du
pré-processing.

- on peut toujours mettre des champs Bcc dans additional_headers ;


Oui, mais la fonction mail "décline toute responsabilité" sur ce champs. Il
doit être au format spécifié par la RFC. Moi ca ne me gêne pas dans ce
contexte.


Ok.


<HS 1>
Grand merci pour le « .invalid ».
</HS 1>

<HS 2>
Pour la config d'Outlook Express, voir :
<http://groups.google.fr/group/fr.usenet.8bits/msg/b19ddc12c7bf7b54>
</HS 2>

<HS 3>
Tu n'avais rien à répondre sur le sujet « afficher sans extension » ?
</HS 3>


1 2 3