IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

htmlentities et @


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut htmlentities et @
    Bonsoir,

    ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo htmlentities(('---@---'));?>
    provoque cette erreur :
    Parse error: syntax error, unexpected '@' in /homepages/18/d246623212/htdocs/test/envoyerunmailenp/index.php on line 128
    Quelle est la solution ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Bonsoir, mystère car ça fonctionne sans erreur ici (PHP5 avec E_ALL & ~E_NOTICE);
    Ca serait mieux pourtant sans les double parenthèses.
    Jetez un oeil juste avant la ligne 128.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Pour tester, j'ai créé un fichier test.php avec une gestion des erreurs (ce qui n'existait pas avant) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    ini_set('display_errors', 'on');
    ini_set('error_reporting', E_ALL & ~E_NOTICE);
    ini_set('output_buffering', 'off');
    echo htmlentities('if (document.formulaire.email.value.indexOf('@') == -1) alert("Ce n\'est pas une adresse electronique, verifiez la svp"); {');?><br/>
    et
    Parse error: syntax error, unexpected '@' in /homepages/18/d246623212/htdocs/test/envoyerunmailenp/test.php on line 5
    ...???
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Ah alors vous voyez ligne 5 il y a une chaîne de caractères entre apostrophes.

    Du coup pour insérer des apostrophes dans la dite chaîne on les précède d'un anti-slash, je pense à celles qui entourent le fameux @.

    Mais ce n'est pas nécessaire dans une chaîne entre guillemets.

    Illustration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 'L\'apostrophe';
    echo "L'apostrophe";
    Notez qu'en HTML5 le champ <input type="email"> délègue la vérification javascript au navigateur! Du coup pas besoin de javascript côté client mais ça n'empêche pas la vérification côté serveur.

    Bonne continuation

  5. #5
    rjl
    rjl est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 301
    Points : 129
    Points
    129
    Par défaut
    Bonsoir,
    Tout simplement, ne faut-il pas échapper ce caractère @ qui est un peu un caractère spéciel (\@) dans une chaîne qui devient alors au codage '---\@---' ?
    @+ RJL2719

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    double parentheses ? e plus c'est meme pas échappé il suffit de regarde la coloration syntaxique, bref encore un sujet pour rien ...

  7. #7
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Ni l'un ni l'autre désolé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'value.indexOf(\'@\')';
    produira le code javascript désiré

  8. #8
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 386
    Points : 5 733
    Points
    5 733
    Billets dans le blog
    1
    Par défaut
    Ca y est ; j'ai trouvé
    C'était bien une question d'échappement de caractères : comme l'@ se trouve entre 2 ' et que justement la chaine de caractères est délimitée par des ', il faut échapper ceux-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    ---
    echo htmlentities('if (document.formulaire.email.value.indexOf(\'@\') == -1) alert("Ce n\'est pas une adresse electronique, verifiez la svp"); {');?><br>
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    et après 3000 posts ta toujours pas compris ça ? le pire c'est que t'as déjà poster ce genre de question ...

  10. #10
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    si je réponds n'importe quoi aux questions puis deviens agressif -limite insolent- alors je peux devenir modérateur?

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Lunixinclar Voir le message
    si je réponds n'importe quoi aux questions puis deviens agressif -limite insolent- alors je peux devenir modérateur?
    Il suffit juste de savoir a qui on à affaire, on aide personne en les tenant par la main, ~3000 postes et ~1300 points plus une question de ce genre devrai te mettre la puce à l'oreille.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Htmlentities et encodage des caractères
    Par doudou34 dans le forum Langage
    Réponses: 1
    Dernier message: 09/11/2005, 22h17
  2. Réponses: 7
    Dernier message: 24/09/2005, 13h30
  3. [MySQL] Chaine tronquée apres htmlentities.
    Par castaka dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/05/2005, 12h54
  4. Réponses: 6
    Dernier message: 01/02/2005, 20h02
  5. [String] équivalent htmlentities
    Par mousstik dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 29/12/2004, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo