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] ajout de backslash auto lors d'un ajout en DB


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de FraktaL
    Profil pro
    Inscrit en
    Août 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 110
    Par défaut [PHP] ajout de backslash auto lors d'un ajout en DB
    salut à tous!

    Voila mon problème aujourd'hui est le suivant:

    J'ai écrit un forum en php et j'ai comme probleme que lorsque les messages contiennent un guillemet ("), il rajoute un backslash (\) devant ce qui donne (\"). Ce n'est pas en soit un réel probleme ca m'arrange meme plutot bien; le seul hic c'est qu'il ne le fait que sur le serveur, en local je dois ajouter moi meme ces backslashes (\). Ce qui m'amene a avoir deux codes différents; un pour le serveur et un pour le local.

    Y a-t-il une option que je peux désactiver ou activer en local pour qu'il m'ajoute également ces backslashes devant les guillemets?

    D'avance merci pour vos réponses.

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Par défaut
    la fonction addslashes() doit pouvoir t'aider

  3. #3
    Membre confirmé Avatar de FraktaL
    Profil pro
    Inscrit en
    Août 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 110
    Par défaut
    ce n'est pas une fonction que je cherche; car si j'utilise cette fonction en local ca me donne (\"), coté serveur ca donne (\\") dans la db.

    Je cherche seulement a trouver pkoi en local un guillemet inséré dans la db vaut (") et sur le serveur (\").

    Si vous avez une autre idée...

  4. #4
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    Salut,

    oui, il te faut mettre la directive "magic_quotes_gpc" a "on" dans ton php.ini en local
    (bien que je préfère personnellement gérer moi-même l'échappement... )

    bon développement.

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Par défaut
    heu non, il vaut mieux faire l'inverse... traiter comme si tu n'avais pas magic_quotes_gpc à on.
    Les envois par formulaires sont traités différemment en fonction de la méthode d'envoi et des serveurs, il vaut mieux tout faire soi même.
    Petit script utile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    echo get_magic_quotes_gpc();        // 1
    echo $_POST['lastname'];            // O\'reilly
    echo addslashes($_POST['lastname']); // O\\\'reilly
     
    if (!get_magic_quotes_gpc()) {
       $lastname = addslashes($_POST['lastname']);
    } else {
       $lastname = $_POST['lastname'];
    }
     
    echo $lastname; // O\'reilly
    $sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
    ?>

  6. #6
    Membre confirmé Avatar de FraktaL
    Profil pro
    Inscrit en
    Août 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 110
    Par défaut
    dans ce cas ne vaut t-il pas mieux que je mette la directive magic_quotes_gpc à off coté serveur? mais le prob c'est que je ne peux pas modifier le php.ini car je n'y ai pas acces.

    Y a t'il une autre solution pour modifier la valeur de magic_quotes_gpc sans modifier le php.ini?

  7. #7
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut
    oui si ton hebergeur le permet tu peux modifier la valeur avec ini_set() mais il faudra le faire sur toutes les pages (ou alors dans un include systèmatique)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ini_set("magic_quotes_gpc","0");
    mais j'insiste, tu peux tout simplement mettre ton php.ini local avec la directive a "off" et comme ça tu as pareil que sur le serveur distant.

    ou alors fais comme indiqué plus haut en testant la valeur de la directive puis en ajoutant ou non la fonction addslashes(). mais je trouve ça un peu lourd à gérer, c'est surtout bien quand tu destine ton application à devenir portable.


  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Par défaut
    non, le script que je t'ai donné vérifie l'état de magic_quotes_gpc et agit en fonction (donc ajoute ou pas les \ si nécessaire).

    Le mieux est de faire une fonction qui traitera toutes tes variables $_POST à leur reception en intégrant l'état de magic_quotes_gpc.

  9. #9
    Membre confirmé Avatar de FraktaL
    Profil pro
    Inscrit en
    Août 2003
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 110
    Par défaut
    le probleme, crazycat c'est que quand tu fais un forums y a des varibles dans tous les sens et sur toutes les pages. C'est pour ca que la solution de modifier les parametres du serveur me paraissent mieux.

    ceci dit avant d'essayer je me demandais une chose: d'après vous c'est mieux d'avoir des (") dans la db ou des (\")?

Discussions similaires

  1. Lors de l'ajout/supp d'un tuple : exécution auto d'une requête
    Par Tentative dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 02/01/2007, 18h08
  2. [Client mail] Problème lors de l'ajout des comptes
    Par Leobaillard dans le forum Web & réseau
    Réponses: 9
    Dernier message: 19/11/2005, 17h12
  3. Réponses: 3
    Dernier message: 08/10/2005, 14h57
  4. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13

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