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 :

[PHP-JS] Problème de Quote


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut [PHP-JS] Problème de Quote
    Salut j'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td onmouseover=\"TableMouseOver(this,".$i.",'".$Fiche['TitreDefaut']."',".$dReponse['AfficherBulle'].");\" onmouseout=\"TableMouseOut(this,".$i.");\">";
    et tout marche bien sauf quand j'ai une " ou une ' dans la variable:$Fiche['TitreDefaut'].
    Si à la place de $Fiche['TitreDefaut'], je met 'test' ça fonctionne.
    Si je met ' test\' ' c'est encore bon.
    Mais si je met 'test\"' ou '\\\"Test' ça marche plus!

    Merci parce que là je suis un peu perdu dans les caractères d'échapement. Comment fait-t-on pour échapper les " ?

    PS:Y a t il une fonction pour faire ce genre d'échapement (php javascript)?
    merci.

  2. #2
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Je connais addslashes et c'est génial pour les requète SQL, mais dans mon cas ça marche pas.
    le code suivant ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo "<td onmouseover=\"TableMouseOver(this,".$i.",'".addslashes($Fiche['TitreDefaut'])."',".$dReponse['AfficherBulle'].");\" onmouseout=\"TableMouseOut(this,".$i.");\">";

  4. #4
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Un problème similaire au tien a été traité ici
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Oui merci je l'avais vu et je croyais aussi que ça m'aiderai, mais je crois que le problème est légèrement différent. Dans cet exemple, il n'y a pas de caractère spéciaux ",'.

    J'ai quand même essayer en inversant les quotes (les doubles deviennent des simples), mais c'est pas mieux. Le problème vient toujours du fait que j'ai une double quote dans $Fiche['TitreDefaut'] qui n'est pas interprétée par le javascript comme du texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td onmouseover="TableMouseOver(this,'.$i.',\''.addslashes($Fiche['TitreDefaut']).'\','.$dReponse['AfficherBulle'].');" onmouseout="TableMouseOut(this,'.$i.');">';

  6. #6
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Est ce qu'elle est bien échappée par addslashes ta double quote ? (affiche le code source pour voir )
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Dans le source:
    onmouseover="TableMouseOver(this,2,'test\"er',0);"

    voici le code utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td onmouseover=\"TableMouseOver(this,".$i.",'".addslashes($Fiche['TitreDefaut'])."',".$dReponse['AfficherBulle'].");\" onmouseout=\"TableMouseOut(this,".$i.");\">";

  8. #8
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Je viens de tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="javascript"/>alert('test\"er');</script>
    M'affiche bien test"er donc js prends bien en compte la double quote échappée
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    oui chez moi aussi ca marche bien.
    de plus ca aussi ca marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Fiche1="test\"";
    echo "<script language=\"javascript\"/>alert('".addslashes($Fiche1)."');</script>";
    Et pourtant je n'ai le problème que quand j'ai des doubles quotes? Résultat je ne comprend pas d'ou ça vient car le source générer semble être correcte.

  10. #10
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Fait voir ta fonction TableMouseOver
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  11. #11
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function TableMouseOver(obj,nb,aide,afficher)
    {
    //afficher=0;
    if(nb!=-1)
    	{
    	obj.bgColor='#E6E6E8';
    	document.getElementById('Drapeau'+nb).style.visibility='visible';
    	document.getElementById('CliquezIci'+nb).style.visibility='visible';
    	if(aide!='')
    		{
    		if(afficher==1)
    			{
    			overlib(aide);
    			}
    		}
    	}
    else
    	{
    	obj.bgColor='#E6E6E8';
    	}
    }

  12. #12
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    M'est avis que le souci vient de overlib

    remplace par alert(aide) pour voir
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  13. #13
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    j'ai essayer mais c'est pas ça.
    de plus le sources c'est : TableMouseOver(this,2,'test\"er',0);
    Donc afficher vos 0 et overlib ne doit pas être exécuté.

  14. #14
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    je ne crois pas que ça vienne de la fonction car si je remplace tout son contenu par:

    obj.bgColor='#E6E6E8';

    Le problème persiste et seul la ligne ou il y a le double quote n'est pas mise en surbriance.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Vous vous trompez de couche il me semble. Le problème ne vient pas de javascript, mais du navigateur. Les échapements de guillements doubles n'existe pas en html. Il faut utiliser les entités (ici &quot; ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo '<div style="background: red;" onmouseover="alert(&quot;Bonjour !&quot;);">&quot;</div>';?>

  16. #16
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Blustuff
    Vous vous trompez de couche il me semble. Le problème ne vient pas de javascript, mais du navigateur. Les échapements de guillements doubles n'existe pas en html. Il faut utiliser les entités (ici &quot :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <?php echo '<div style="background: red;" onmouseover="alert(&quot;Bonjour !&quot;);">&quot;</div>'?>
    Tu as testé ta solution au moins ?
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Oui.

  18. #18
    Membre expérimenté
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par Blustuff
    Oui.
    Un gros mea culpa de ma part car

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language="javascript"/>alert(&quot;Bonjour !&quot;);</script>
    Ca ne fonctionne pas ce qui me semble logique mais je n'aurai pas pensé que ça passerait en plein milieu d'une balise html
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  19. #19
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 842
    Points : 696
    Points
    696
    Par défaut
    Le problème ne me semble pas évident. Ca me fait penser à l'utilité des sections CDATA pour XML.

    A priori, il n'y a pas de raisons que les entités ne soient pas remplacées à l'intérieur d'un bloc script. Juste le zèle des navigateurs.

  20. #20
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 90
    Points : 83
    Points
    83
    Par défaut
    Merci pour votre aide, j'ai résolu mon problème en créant une fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function AddslashPourAttibutEvenement($var)
    {
    $var=str_replace("\\","\\\\",$var);//échape le caractère \ pour php
    $var=str_replace("'","\\'",$var);//échape le caractère ' pour php
    return htmlentities($var);//évite l'interprétaion du html et caractère javascript (ex:");
    }
    et dans mon code ça devient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td onmouseover=\"TableMouseOver(this,".$i.",'".AddslashPourAttibutEvenement($Fiche['TitreDefaut'])."',".$dReponse['AfficherBulle'].");\" onmouseout=\"TableMouseOut(this,".$i.");\">";

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 01/08/2008, 11h40
  2. [PHP-JS] Problème de double quote
    Par SONY30 dans le forum Langage
    Réponses: 10
    Dernier message: 01/07/2008, 10h31
  3. Problème de quotes sous PostGre
    Par Philhz dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 11/07/2004, 13h03
  4. Problème de quote
    Par kennini dans le forum ASP
    Réponses: 4
    Dernier message: 20/11/2003, 09h40
  5. [Class/PHP/Postgres] Problème de modélisation...
    Par k-reen dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/02/2003, 08h49

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