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 :

Requêtes préparées ou fonction SQL ?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut Requêtes préparées ou fonction SQL ?
    Bonsoir,

    Depuis déjà quelques mois je suis en train de coder un site. On m'a donné quelques modules d'un autre site dont je peux m'aider afin de gagner du temps.
    Surprise, les requêtes SQL ne sont pas faites de la même manière que chez moi.

    Moi je fais des choses du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try {											
        $req_recherche_id_idx = $pdo_gamedata->prepare('SELECT id_idx FROM u_hero WHERE name = :PSEUDO;');  
        $req_recherche_id_idx->bindParam(':PSEUDO', $pseudo, PDO::PARAM_STR, 25);
        $req_recherche_id_idx->execute();
        $resultat_recherche_id_idx = $req_recherche_id_idx->fetchAll();
    } catch (Exception $e) { }
    et lui fait des choses du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $pseudo = GET['pseudo'];
    $Query = mysql_query("SELECT id_idx FROM u_hero WHERE name = $pseudo");
    $Array = mysql_fetch_row($Query);
    echo $Array[0];
    Je souhaite donc savoir ce qui est le mieux d'après vous.

    J'ai également remarqué qu'il possède une fonction de "nettoyage" de chaîne de caractère qui supprimer les insert select drop delete -- '' "" et autres choses de ce genre comme les < >, etc etc avant leur utilisation dans une requête SQL.

    Qu'en pensez vous ? Requête préparée ? Ou plutôt fonction SQL ? Avec ou utilisation de la fonction de "nettoyage" (sous entendu, est-ce utile ou est ce déjà assez sécurisé sans elle ?) ?

    Personnellement je dirais que les fonctions SQL sont meilleures car il y a certainement pas mal de choses qui sont faites derrière. Mais je ne trouve pas comment utiliser diverses bases de données sur une même page PHP en utilisant des fonctions SQL, de ce côté là les requêtes préparées ont l'air beaucoup plus pratiques.

    Merci d'avance de votre aide

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Par défaut
    $pseudo = GET['pseudo'];
    $Query = mysql_query("SELECT id_idx FROM u_hero WHERE name = $pseudo");
    BAAAAAMMM.

    Ça, c'est le bruit de la base de données qui vient de tomber aux mains d'un hacker de niveau débutant. Celui qui a écrit ce code est soit vieux et barbu (puisque c'est ce qu'on faisait il y a dix ans), soit mauvais.

    C'est simpe: ne jamais utiliser les fonctions mysql_* . Ces fonctions sont dépréciées depuis PHP 5.5 (c'est--à-dire que PHP affiche des avertissements quand on les utilise), et ne seront plus présentes dans PHP à partir de PHP 7, qui sortira cette année.

    C'est toi qui a raison d'utiliser PDO (ou mysqli) et les requêtes préparées.

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Par défaut
    Bonjour,

    Merci de votre réponse, c'est bien ce que je pensais.

    Bonne journée

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Bonjour,
    il faudrait aussi regarder ce que fait sa fonction de nettoyage car PDO traite uniquement les entrées sensibles aux injections SQL, pas aux autres...
    (Par ailleurs @Tsilefy si des trucs comme PDO ont été développés c'est certes pour faciliter les devs expérimentés mais c'est surtout pour pallier au manque de rigueur et de compétence des non-vieux et non-barbus, car non, même il y a dix ans ça reste un code non sécurisé )

Discussions similaires

  1. [PDO] Requêtes préparées et injections SQL
    Par Madfrix dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 16/05/2010, 11h35
  2. Fonction SQL Requête "Débutant"
    Par l0quito dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/10/2009, 14h55
  3. Réponses: 3
    Dernier message: 04/07/2008, 17h03
  4. Une Fonction SQL qui retourne le résultat d'une requête
    Par kamacho25 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/09/2007, 10h44
  5. [Débutant / SQL] Requête avec la fonction MAX
    Par bugmenot dans le forum Access
    Réponses: 3
    Dernier message: 14/04/2006, 10h43

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