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

PHP & Base de données Discussion :

Utilisation des apostrophes [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut Utilisation des apostrophes
    Salut, je sais ce genre de question a déjà été posée mais là, j'ai un soucis...
    J'ai un forum sur mon site, les messages sont enregistrés dans une BDD et je les affiche.

    Ca marche avec easyPhp en local mais pas su rmon site (hébergé par OVH)

    code pour mettre le message dans la BDD :
    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
     
    openBDD();
     
    // === AJOUT DU MESSAGE EVENTUEL ===
     
    if(@$_POST["message"]) {
     
     
    	$msg = iconv("UTF-8","UTF-8//IGNORE",$_POST['message']);
     
       $SQL = "INSERT into " . $bddForum
          ."(quand,login,email,message)"
          ." VALUES(" . time()
          .",'".$_POST["login"]."'"
          .",'".$_POST["email"]."'"
    //      .",'".addslashes($msg)."'"
          .",'".$msg."'"
          .")";
       mysql_query($SQL);
    }
    Code pour l'afficher:
    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
     
       <table border=1 cellspacing=0 cellpadding=5
          width=100%>
     
          <?
          // Requête de sélection des messages
          $SQL = "SELECT * FROM " . $bddForum
             . " ORDER BY ID DESC";
          $res = mysql_query($SQL);
          // Tant qu'il y a des messages
          while($val=mysql_fetch_array($res)) {
             // Nouvelle ligne
             echo "<tr><td>";
             // Ecrit la date du message
             echo date("d/m/Y",$val["quand"]);
             // Ecrit le login de l'auteur
             echo " - ".$val["login"];
             echo "<br>";
             // Ecrit le message, n'autorise pas les code html ;)
    //         echo htmlentities($val["message"]);
    	echo nl2br($val["message"]);
             // Fin de ligne
             echo "</td></tr>";
          }
          ?>
     
       </table>

    Exemple avec le message "c'est un test"
    Mon problème est le suivant, dans la BDD, il stocke "c\'est un test", la fonction nl2br (qui gère le retour chariot) m'affiche "c'est un test" (pourquoi donc, je n'en sais rien...) alors que sur mon site (meme code), le forum affiche "c\est un test"...


    Merci de votre aide, je galère avec ça et les fonction stripslashes et autres...


    EDIT : autant pour moi, en local meme sans nl2br, les apostrophes marchent... donc je suppose que je dois ajouter une fonction pour les enlever sur OVH...

    ++
    JC

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    je crois que sur ovh, le parametre magic_quotes_gpc est activé, il suffit donc d'enlever le addslashes () ou de tester en utilisant la fonction get_magic_quotes_gpc()

  3. #3
    Membre émérite
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Par défaut
    Merci, c'était le addslashes qui foutait la m****, mon ancien hébergeur n'avait pas les memes paramètres php, donc ceci entraine cela...

    Merci

  4. #4
    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
    Par défaut
    Je me permets de VIVEMENT vous recommander de NE PLUS JAMAIS utiliser addslashes() NULLE PART. Cette fonction n'apporte qu'un faux sentiment de sécurité, en réalité elle n'a aucune utilité.

    Lisez plutôt la documentation de mysql_real_escape_string(), c'est la seule méthode valable dans le cas de MySQL et la documentation propose une solution valable quel que soit l'hébergeur.

    La FAQ : Comment se protéger des failles d'injection ?

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

Discussions similaires

  1. [MySQL] Utilisation des apostrophes
    Par Zarvox dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/07/2009, 16h08
  2. [RegEx] Utilisation de la fonction "preg_match_all" avec des apostrophe ou des œ
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2008, 23h05
  3. [MySQL] Utilisation des apostrophes
    Par sly33 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 18/01/2007, 17h49
  4. [MySQL] Utilisation des apostrophes
    Par philippef dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 13/01/2007, 01h30
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

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