Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/01/2012, 12h16   #1
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
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 !
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2012, 11h23   #2
Membre éprouvé
 
Avatar de Gecko
 
Homme Antoine B
Développeur Web
Inscription : février 2011
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Antoine B
Âge : 27
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 106
Points : 409
Points : 409
Envoyer un message via MSN à Gecko Envoyer un message via Skype™ à Gecko
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 :
$pdo->query('SELECT name FROM user WHERE id = \'2\'');
Une requête avec variables
Code :
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 :
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
__________________
Si ce message vous a aidé, pensez à voter pour lui!
Développe vos scripts E-Commerce et autres en PHP
N'hésitez pas à me contacter par MP, E-Mail et MSN
Gecko est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/01/2012, 12h02   #3
Membre Expert
 
Avatar de Doksuri
 
Tiger Scott
Développeur Web
Inscription : juin 2006
Messages : 1 249
Détails du profil
Informations personnelles :
Nom : Tiger Scott
Âge : 42

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2006
Messages : 1 249
Points : 1 510
Points : 1 510
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 :
$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.

N'oubliez pas le Le tag resolu.

Need_!
Doksuri est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/02/2012, 17h51   #4
Invité régulier
 
Inscription : janvier 2009
Messages : 32
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 32
Points : 5
Points : 5
Merci beaucoup !!! Je continu mon PDO alors sans aucun soucie !!
chido est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 21h16   #5
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
bonsoir,

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

Code :
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
ascito est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h09.


 
 
 
 
Partenaires

Hébergement Web