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

Bibliothèques et frameworks PHP Discussion :

[ImageMagick] Création d'image avec des apostrophes


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut [ImageMagick] Création d'image avec des apostrophes
    Bonjour,

    Je créé des images textes avec un contenu dynamique provenant d'une base de donnée.
    J'ai un soucis sur une toute petite chose : lorsque j'ai des textes avec des apostrophes (par exemple, La Pousse d'Or) ce m'affiche tout ,sauf ce que j'ai à droite de l'apostrophe (sur mon exemple, cela m'affiche : La Pousse d).
    J'ai inséré dans ma base de donnée mon texte grace à un addslashes() et essaye de reprendre mon texte dans mon image grace à un stripslashes() mais cela ne change rien.

    Si vous aviez une solution à me proposer au cas où vous avez déjà rencontrer la même problème ...

    Gracieusement, merci pour vos futures réponses ...

    Adaviada

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Il nous faudrait plus d'éléments pour nous-même comprendre : notamment la forme des données au fur et à mesure des traitements qui leur sont effectués (comment se présente "La Pousse d'Or" avant insertion, après insertion ou à sa récupération) et le code (GD) en question.

    Note : vous ne devriez plus utiliser addslashes mais mysql_real_escape_string pour protéger les données à destination de MySQL !

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Pour de plus amples informations : Comment se protéger des failles d'injection ?

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Malheureusement j'ai bien essayé de comprendre de quoi vous me parler mais j'ai un peu de mal à vous suivre, notamement sur ce à quoi sert la fonction mysql_real_escape_string().

    Alors en fait, j'insère pour l'instant directement dans ma base de donnée via mon PHPMyAdmin mais je risque d'insérer mes données via un formulaire d'ici peu.

    L'affichage sur ma page de mon image-texte se fait de cette facon :
    1/ je fais une requète qui me permet de récupérer les données dont j'ai besoin (en l'occurence le texte que je souhaite mettre dans mon image).
    2/ j'appelle mon image de cette facon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $titre = $data2->nom_domaine;
    echo "<img src='titre2.php?titre=".stripslashes($titre)."'>";
    3/ voici le code de mon fichier qui créé mon image :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <?php
    // Denition du content-type
    header("Content-type: image/png");
     
    // Creation de l'image
    $im = imagecreate(240, 15);
     
    // Creation de quelques couleurs
    $beige = imagecolorallocate($im, 247, 244, 233);
    $marron = imagecolorallocate($im, 54, 41, 16);
     
    //Fond transparent
    imageColorTransparent($im, $beige);
     
    // Le texte dessiner
    function remplace($str)
    {
    return strtr($str, array('\''=>'&rsquo;','&'=>'&amp;','<'=>'&lt;','>'=>'&gt;','\"'=>'"','\\'=>' '));
    }
     
    $text = remplace($_GET['titre']);
    // Remplacez le chemin par votre propre chemin de police
    $font = 'London.ttf';
     
    // Ajout du texte
    imagettftext($im, 14, 0, 0, 15, $marron, $font, $text);
     
    // Utiliser imagepng() donnera un texte plus claire, 
    // comparer à l'utilisation de la fonction imagejpeg()
    imagepng($im);
    imagedestroy($im);
    ?>
    Ce fonctionnement fonctionne seulement si je n'ai pas de caractère spéciaux du type d'une apostrophe comme dans l'exemple que j'ai donné plus haut avec "La pousse d'or" qui ne m'affiche que "La pouss d".

    Est-ce que j'ai été plus clair ??
    Je n'ai toujours pas trouvé de solution ...

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Est-ce mieux avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<img src='titre2.php?titre=".urlencode(stripslashes($titre))."'>";

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse et ton aide,

    Je ne sais pas si c'est mieux ... cela m'affiche "Pousse d\'Or" ... j'ai un slash en trop ... comment pourrais-je l'enlevé ??

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    En reprenant ton code, ceci fonctionne parfaitement :

    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
    22
    23
    24
    25
    26
    27
    28
    <?php
     
    $im = imagecreate(240, 15);
     
    $beige = imagecolorallocate($im, 247, 244, 233);
    $marron = imagecolorallocate($im, 54, 41, 16);
     
    imageColorTransparent($im, $beige);
     
    if(!empty($_GET['text']))
    {
        $text = $_GET['text'];
    }
    else
    {
        $text = 'La pousse d\'or';
    }
     
    $font = 'Arial.ttf';
     
    imagettftext($im, 14, 0, 0, 15, $marron, $font, $text);
     
    header("Content-type: image/png");
     
    imagepng($im);
    imagedestroy($im);
     
    ?>
    Il n'y a pas besoin de fonction remplace()
    Par contre, il faudrait vérifier si cela ne pose pas de problème de sécurité d'insérer du texte utilisateur dans une image. Il me semble qu'une faille a été découverte il y a très peu de temps, justement...

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    J'ai justement suprimé la fonction remplace() dans le code dont je me suis servie ... il faut donc que dans ma base le champs soit celui-ci : La Pousse d\'Or ??? parce que sinon de mon coté j'ai tjr le slash qi s'affiche dans mon image ...

    Sinon je n'y connais rien en sécurité .. je ne comprend même pas de quoi tu me parles

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    La fonction stripslahes devrait les supprimer (à appliquer aussi à la réception) Je suppose que si vous en avez, c'est le fruit de la fonctionnalité magic_quotes_gpc qui est active (voir votre phpinfo).

    Dans votre base de données vous ne devriez pas avoir "La Pousse d\'Or" mais "La Pousse d'Or". L'échappement ne doit être présent que dans la requête pour faire passer les caractères spéciaux, ils n'apparaissent plus après dans vos données.

  10. #10
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    J'ai un \ dans mon exemple car j'utilise des apostrophes et non des guillemets.
    cf. Apostrophes ou guillemets, lesquels choisir ?

Discussions similaires

  1. Java MySQL Update avec des apostrophes
    Par Prosis dans le forum JDBC
    Réponses: 7
    Dernier message: 04/01/2007, 13h36
  2. écriture d'une requete avec des apostrophes
    Par freestyler dans le forum Delphi
    Réponses: 2
    Dernier message: 10/10/2006, 12h00
  3. rollover dans une image avec des zones cliquables
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/02/2006, 11h15
  4. [ImageMagick] Affichage d'image avec la fonction imagejpeg()
    Par yuri dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 16/12/2005, 13h40
  5. [ImageMagick] Création d'image à la volée
    Par gdawirs dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 21/11/2005, 15h53

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