Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème PHP

18 réponses
Avatar
Serge Nazarian
Bonjour,

Voici un bout de code PHP :

<?php
$email1='serge.nazarian@fai1.fr';
echo "ceci ne marche pas <$email1>\r\n";
echo "ceci marche < $email1 >\r\n";

$email2="serge.nazarian@fai2.fr";
echo "ceci ne marche pas <$email2>\r\n";
echo "ceci marche < $email2 >\r\n";
?>

Qui peut m'expliquer pourquoi ce programme renvoie :

ceci ne marche pas
ceci marche < serge.nazarian@fai1.fr >
ceci ne marche pas
ceci marche < serge.nazarian@fai2.fr >

autrement dit pourquoi < perturbe la chaîne de caractères s'il n'est
pas suivi d'une espace.
Moi, je cherche à afficher <serge.nazarian@fai.fr> sans espace.
Quelqu'un aurait-il une solution ?

Merci pour toute aide.
Cordialement,

--
Serge Nazarian
Pour m'écrire directement : http://cerbermail.com/?ZDkROVSJlu

10 réponses

1 2
Avatar
Otomatic
Serge Nazarian écrivait :
autrement dit pourquoi < perturbe la chaîne de caractères s'il n'est

Parce que c'est le signe de d'ouverture d'une balise HTML et que pour
que ce ne soit pas interprété comme tel, ce doit être converti en
entitée : http://fr2.php.net/manual/fr/function.htmlspecialchars.php
$email2="";
echo "ceci marche à tous les coups $lt;$email2$gt;rn";
--
Un ordinateur résout des problèmes que nous n'aurions pas sans lui
Technique aéronautique : http://aviatechno.net
Avatar
Serge Nazarian
Otomatic a écrit le 22/09/2016 :
Serge Nazarian écrivait :
autrement dit pourquoi < perturbe la chaîne de caractères s'il n'est

Parce que c'est le signe de d'ouverture d'une balise HTML et que pour
que ce ne soit pas interprété comme tel, ce doit être converti en
entitée : http://fr2.php.net/manual/fr/function.htmlspecialchars.php
$email2="";
echo "ceci marche à tous les coups $lt;$email2$gt;rn";

Merci.
--
Serge Nazarian
Pour m'écrire directement : http://cerbermail.com/?ZDkROVSJlu
Avatar
Sauvemac
Le 22/09/2016 à 16:20, Otomatic a écrit :
autrement dit pourquoi < perturbe la chaîne de caractères s'il n'est

Parce que c'est le signe de d'ouverture d'une balise HTML et que pour
que ce ne soit pas interprété comme tel, ce doit être converti en
entitée : http://fr2.php.net/manual/fr/function.htmlspecialchars.php
$email2="";
echo "ceci marche à tous les coups $lt;$email2$gt;rn";

Un "lapsus clavis" pour &lt; ?
Avatar
Otomatic
Sauvemac écrivait :
Un "lapsus clavis" pour &lt; ?

Et oui, pourtant le $ et le & ne sont pas côte à côte.
Donc :
echo "ceci marche à tous les coups &lt;$email2&gt;rn";
Avatar
Olivier Miakinen
Le 22/09/2016 18:43, Otomatic a écrit :
Un "lapsus clavis" pour &lt; ?

Eh oui, pourtant le $ et le & ne sont pas côte à côte.
Donc :
echo "ceci marche à tous les coups &lt;$email2&gt;rn";

On va dire que ça marche si le code contient ça au début :
$lt = "&lt;";
$gt = ">"; // ou $gt = "&gt;" mais ">" n'est pas réservé
Cela dit, je ne vois pas bien ce que la question de Serge faisait
dans fr.comp.mail : elle aurait dû être dans fr.comp.lang.php, ou
alors dans fr.comp.infosystemes.www.auteurs s'il avait soupçonné
que l'origine du problème était du HTML et non du PHP.
--
Olivier Miakinen
Avatar
Serge Nazarian
Olivier Miakinen a écrit le 22/09/2016 :
Le 22/09/2016 18:43, Otomatic a écrit :
Un "lapsus clavis" pour &lt; ?

Eh oui, pourtant le $ et le & ne sont pas côte à côte.
Donc :
echo "ceci marche à tous les coups &lt;$email2&gt;rn";

On va dire que ça marche si le code contient ça au début :
$lt = "&lt;";
$gt = ">"; // ou $gt = "&gt;" mais ">" n'est pas réservé
Cela dit, je ne vois pas bien ce que la question de Serge faisait
dans fr.comp.mail : elle aurait dû être dans fr.comp.lang.php, ou
alors dans fr.comp.infosystemes.www.auteurs s'il avait soupçonné
que l'origine du problème était du HTML et non du PHP.

Bonjour,
Peut-être par ce que je cherche à envoyer un courriel (un mail en
franglais) dans un script PHP et que j'ai du mal avec le champ headers
(dont je veux bien qu'on m'explique toutes les subtilités ici ou
ailleurs).
Cordialement.
--
Serge Nazarian
Pour m'écrire directement : http://cerbermail.com/?ZDkROVSJlu
Avatar
Olivier Miakinen
Le 23/09/2016 08:54, Serge Nazarian a écrit :
[...] je cherche à envoyer un courriel (un mail en
franglais) dans un script PHP et que j'ai du mal avec le champ headers
(dont je veux bien qu'on m'explique toutes les subtilités ici ou
ailleurs).

Ok, je redirige vers fr.comp.lang.php.
Je suppose que tu utilises cette fonction d'envoi de courriel en PHP :
<http://php.net/manual/fr/function.mail.php>. Quels problèmes as-tu
exactement ?
--
Olivier Miakinen
Avatar
Jean Francois Ortolo
Le 23/09/2016 à 11:34, Olivier Miakinen a écrit :
Le 23/09/2016 08:54, Serge Nazarian a écrit :
[...] je cherche à envoyer un courriel (un mail en
franglais) dans un script PHP et que j'ai du mal avec le champ headers
(dont je veux bien qu'on m'explique toutes les subtilités ici ou
ailleurs).

Ok, je redirige vers fr.comp.lang.php.
Je suppose que tu utilises cette fonction d'envoi de courriel en PHP :
<http://php.net/manual/fr/function.mail.php>. Quels problèmes as-tu
exactement ?

Bonjour Monsieur Mazarian
C'est vrai que la fonction php mail() pose des problèmes pratiques de
fiabilité d'envoi de mails.
Je préconise la classe php : PHPMailer.
Avec cette classe PHPMailer, envoyer des mails est un jeu d'enfant.
Amicalement.
Jean FRançois Ortolo
Avatar
Eric Demeester
Bonjour,
Jean Francois Ortolo (Fri, 23 Sep 2016 12:43:20 +0200 -
fr.comp.lang.php) :
C'est vrai que la fonction php mail() pose des problèmes pratiques de
fiabilité d'envoi de mails.

Pour ma part, je l'utilise depuis bien des années et je n'ai jamais
rencontré de problème, mais il est vrai qu'elle nécessite de la rigueur,
en particulier dans la définition des en-têtes des courriers (celles par
défaut sont insuffisantes), et qu'elle peut s'avérer complexe à utiliser
dès qu'on a des besoins un peu compliqués (html, pièces jointes, etc.).
Je préconise la classe php : PHPMailer.
Avec cette classe PHPMailer, envoyer des mails est un jeu d'enfant.

Cette classe est effectivement très pratique, elle permet par exemple,
contrairement à la fonction mail(), de faire appel très simplement à un
serveur SMTP si on en a un à disposition, alors qu'avant, j'étais obligé
de programmer de tels envois entièrement à la main.
Bref, je te rejoins, si cette classe est disponible dans l'environnement
utilisé (point à vérifier si le site est sur un hébergement mutualisé),
mieux vaut l'utiliser plutôt que la fonction mail().
On peut trouver un didacticiel et des liens de téléchargment ici :
http://stephaneey.developpez.com/tutoriel/php/phpmailer/
Avatar
Otomatic
Eric Demeester écrivait :
On peut trouver un didacticiel et des liens de téléchargment ici :
http://stephaneey.developpez.com/tutoriel/php/phpmailer/

Je plusssoie énergiquement.
Cela fait des années que j'utilise la class PhpMailer pour mes
formulaires de contact.
Ça fonctionne parfaitement avec des smtp authentifiés chez Gandi, OVH ou
1and1. Et il n'y a pas de raison que ça ne fonctionne pas pour les
autres.
--
Un ordinateur résout des problèmes que nous n'aurions pas sans lui
Technique aéronautique : http://aviatechno.net
1 2