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 :

get_magic_quotes_gpc()


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 233
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 233
    Par défaut get_magic_quotes_gpc()
    Bonjour,

    Je n'arrive pas a comprendre son role et comment elle intervient
    J'ai fais une recherche sur le web, et j'ai trouvé des explications, mais elle me reste toujours ambigue
    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
     
     
    <?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')";
    ?>

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 719
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 719
    Par défaut
    pour voir la documentation officielle d'une fonction, il suffit d'aller à l'adresse "php.net/" + le nom de la fonction
    par exemple tu peux aller à l'URL suivante pour la fonction "get_magic_quotes_gpc"
    http://php.net/get_magic_quotes_gpc

  3. #3
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    Les magic quote, c'est que PHP va ajouter automatiquement les shashes (\) aux requêtes POST ( et GET ??? )

    Si les magic quote sont activé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['lastname'];             // O\'reilly
    Si les magic quote sont désactivé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_POST['lastname'];             // O'reilly

    Donc si on fait un addslashes() alors que les magic quotes sont activé, on met trop de shashes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo addslashes($_POST['lastname']); // O\\\'reilly
    Alors on vérifie si les magic quote sont activé. Si ce n'est pas le cas, on ajoute des slashes, sinon, on fait rien: c'est déjà fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!get_magic_quotes_gpc()) {
        $lastname = addslashes($_POST['lastname']);
    } else {
        $lastname = $_POST['lastname'];
    }


    Sinon, moi j'ai 2 questions:
    1) par défaut, les magic quote sont elles activés ou pas ?
    2) Et ca s'applique seulement aux POST ou aussi au GET ?


    Je trouve ca pas très pratique moi .. les magic quote.

  4. #4
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par FMaz Voir le message
    Sinon, moi j'ai 2 questions:
    1) par défaut, les magic quote sont elles activés ou pas ?
    2) Et ca s'applique seulement aux POST ou aussi au GET ?
    Je trouve ca pas très pratique moi .. les magic quote.
    Bonjour l' Ami

    pour résumer et faire simple
    get_magic_quotes_gpc() est une fonction qui ne fait que répondre a la question est-ce que les Guillemets magiques sont actif OUI ou NON

    S'ils sont actifs, alors je n'ais pas a le faire avant d'écrire dans une base de donnée. (car ça ne sert qu'a cela,) on dit protéger les caractéres spéciaux ...

    Cette fonctionnalité (les Guillemets magiques) est OBSOLETE depuis PHP 5.3.0 et a été SUPPRIMEE depuis PHP 6.0.0. Nous vous encourageons vivement à ne plus l'utiliser.

    par contre a toute lecture de Base de données il faut supprimer ces \

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    $UserNom=stripslashes($row['UserNom']);
    Si non pour le moment on écrit avant toute insertion en Base de donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     if(!get_magic_quotes_gpc() )
        {  $UserNom =addslashes($UserNom);  }
    Va lire ceci ...
    http://www.php.net/manual/fr/securit...uotes.what.php

  5. #5
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    Citation Envoyé par FoxLeRenard Voir le message
    Si non pour le moment on écrit avant toute insertion en Base de donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
     if(!get_magic_quotes_gpc() )
        {  $UserNom =addslashes($UserNom);  }
    Bonjour l'ami !


    Pour, addslashes, grave erreur, la fonction protège très mal les données, il faut privilégier mysql_real_escape_string()

    Sinon, je sais très bien à quoi sert get_magic_quotes_gpc(), et je sais aussi que c'est deprecated. Mais ca ne répond pas exactement à mes 2 questions (si s'était bel et bien à moi que ta réponse s'adressait)

  6. #6
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut FMaz,

    1) depuis PHP 5 cette fonction est par défaut activé et a été supprimé dans PHP 6.
    2) On peut lire ceci dans http://www.php.net/manual/fr/security.magicquotes.what.php
    Citation Envoyé par php.net
    magic_quotes_gpc Affecte les données issues des requêtes HTTP (GET, POST, et COOKIE)

  7. #7
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par FMaz Voir le message
    Bonjour l'ami !


    Pour, addslashes, grave erreur, la fonction protège très mal les données, il faut privilégier mysql_real_escape_string()
    Ah bon mon Ami, et si j'écris mon texte dans un fichier texte je fais quoi

  8. #8
    Membre chevronné
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Par défaut
    Salut

    Je suis pas trop sur de voir où tu veux en venir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (!get_magic_quotes_gpc()) {
        $lastname = addslashes($_POST['lastname']);
    } else {
        $lastname = $_POST['lastname'];
    }
     
    echo $lastname; // O\'reilly
    $sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
    Cet exemple me fait vraiment dire qu'il s'agit d'une insertion dans une base de données, et non d'une écriture dans un fichier texte.

    Et dans le cas des insertions dans des bases de données, on peut lire ceci sur le site de PHP, dans les commentaires à propos de addslashes():
    addslashes does NOT make your input safe for use in a database query! It only escapes according to what PHP defines, not what your database driver defines. Any use of this function to escape strings for use in a database is likely an error - mysql_real_escape_string, pg_escape_string, etc, should be used depending on your underlying database as each database has different escaping requirements. In particular, MySQL wants \n, \r and \x1a escaped which addslashes does NOT do. Therefore relying on addslashes is not a good idea at all and may make your code vulnerable to security risks. I really don't see what this function is supposed to do.
    Et ceci, toujours sur le site de php, dans la définition de mysql_real_escape_string():
    This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.

    J'espère pas trop vous avoir tué avec de l'anglais

  9. #9
    FoxLeRenard
    Invité(e)
    Par défaut
    Citation Envoyé par FMaz Voir le message
    Salut
    Je suis pas trop sur de voir où tu veux en venir:
    Juste tu m'avais écris cela

    Pour, addslashes, grave erreur, la fonction protège très mal les données, il faut privilégier mysql_real_escape_string()


    Alors pensant au cas general je me disais que lorsqu' il sagit d'écrire dans un fichier texte (CE QUI N EST PAS LE CAS ICI) mais enfin dans tout les cas ou on écrit en files il faut bien utiliser addslashes et il est trés trés bien

Discussions similaires

  1. Utilisation de la fonction get_magic_quotes_gpc!
    Par solaar dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 20/01/2009, 10h39
  2. Réponses: 21
    Dernier message: 30/03/2007, 15h21
  3. fonction get_magic_quotes_gpc(), c'est vraiment utile ?
    Par renaudjuif dans le forum Langage
    Réponses: 7
    Dernier message: 21/08/2006, 22h38
  4. [MySQL] Utilisation de "get_magic_quotes_gpc()"
    Par Tr@nkill dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 19/04/2006, 10h40
  5. [Tableaux] probleme avec get_magic_quotes_gpc
    Par FoxLeRenard dans le forum Langage
    Réponses: 3
    Dernier message: 17/03/2006, 20h13

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