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 :

Nouveaux moyen de se connecter


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut Nouveaux moyen de se connecter
    Bonjour à tous,

    Je viens de reprendre le PHP avec base SQL mais je suis perdu....

    J'aimerais connaitre le meilleur moyen actuel (sécurisé) pour se connecter à une base SQL. J'ai trouvé des informations sur la méthode via PDO mais je ne comprends pas tous et je n'aime pas faire du copier/coller de code sans comprendre..

    Est-ce que la méthode via PDO est le meilleur moyen actuel ?

    Merci !

  2. #2
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut
    Salut!

    L'utilisation de PDO est plus sécurisée quand il est correctement implémenté. Les avantages sont nombreux.

    En gros avec PDO si tu utilises les requêtes préparées tes variables seront systématiquement protégées contre les injections donc plus besoin des déclarer 50 fonctions en amont de ta requête.

    Voici un exemple pour deux types de requêtes:

    Une requête simple sans variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pdo->query('SELECT name FROM user WHERE id = \'2\'');
    Une requête avec variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req = $pdo->prepare('SELECT name FROM user WHERE id = :id ');
    $req->bindValue(':id',$_POST['id']); // C'est grossier, il est évident qu'il faudra un minimum de contrôles en amont
    $req->execute();
    Pour la seconde requête :id est un marqueur donc tu ne dois pas l'encapsuler entre quote, sinon tu enverrai :id et non le contenu de $_POST['id']. binValue sert à attribuer une variable à un marqueur, cette variable sera traitée pour que les injections ne soient pas possibles.

    tu peux faire une variante de cette requête, certains trouvent ça mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $req = $pdo->prepare('SELECT name FROM user WHERE id = :id ');
    $req->execute(array(':id'=>$_POST['id'])); // C'est grossier, il est évident qu'il faudra un minimum de contrôles en amont
    Pour finir je dirai que PDO c'est que du bonheur, avec une bonne gestion on peux rendre un système portable sur quasiment tous types de BDD
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($toBe || !$toBe) echo 'That is the question';

    Mes projets: DVP I/O

  3. #3
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    tres bonne explication de PDO =)

    j'ajouterai que pour securiser encore plus tes variables, tu peux ajouter le type de variable qu'on est sense attendre lors du bindValue.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $req->bindValue(':id', $_POST['id'], PDO::PARAM_INT);
    il y a PARAM_INT et PARAM_STR pour les plus courants.
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 109
    Points : 46
    Points
    46
    Par défaut
    Merci beaucoup !!! Je continu mon PDO alors sans aucun soucie !!

  5. #5
    Membre éprouvé

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Points : 1 022
    Points
    1 022
    Par défaut
    bonsoir,

    je me mets à jour aussi, et ai codé cela

    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
        protected  function _query($query,$array )
        {
     
            $id=0;
            $dbh = $this->connect();
            if($query===''){
                $sth = $this->curentQuery;
            }else{
                $sth = $dbh->prepare($query);
                $this->curentQuery = $sth;
                    foreach($array as $key =>$v ){
                    $sth->bindParam( ':'.$key ,$v );
                    }
            }
            //$sth->bindParam(':id' ,$id );
     
            try {
            $sth->execute();
            return $this->result($sth->fetchAll(PDO::FETCH_CLASS,'mysqlPdo'));
            }
            catch (PDOException $e) {
                throw new Exception("Error occured while saving your object", null, $e);
            }  
     
        }

    vous noterais l'absence du typage des variables, d’où mon post suite, quelqu'un à t'il fait sa class pour donner un type constante de class, a la variable passé dans bindParam, en détéctant son type ?
    Conception / Dev

Discussions similaires

  1. Réponses: 15
    Dernier message: 30/01/2015, 17h30
  2. Réponses: 8
    Dernier message: 27/09/2010, 10h48
  3. Réponses: 3
    Dernier message: 29/03/2010, 09h22
  4. Les nouveaux utilisateurs ne peuvent pas de connecter
    Par kedare dans le forum Administration
    Réponses: 0
    Dernier message: 12/11/2008, 19h20
  5. Outils, cours et NOUVEAUX tutoriels pour Borland C++Builder
    Par hiko-seijuro dans le forum C++Builder
    Réponses: 10
    Dernier message: 12/03/2006, 22h33

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