Archima
Messages postés37Date d'inscriptionsamedi 19 avril 2008StatutMembreDernière intervention13 avril 2011 8 janv. 2010 à 19:08
Je vais réviser mon code voir ce qui est le mieux.
cs_gomoz
Messages postés134Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention23 décembre 2009 8 janv. 2010 à 18:43
Ben moi je fais comme ça :
private $pdo;
__construct()
{
$this->pdo = connectionBDD();
}
Ceci dit je ne suis pas sur que ce soit la meilleurs méthode.
Archima
Messages postés37Date d'inscriptionsamedi 19 avril 2008StatutMembreDernière intervention13 avril 2011 8 janv. 2010 à 15:14
Ba, je sais pas vraiment si elles pourront être virées car j'utilise l'objet PDO, peut être en mettant comme attribut de l'objet un objet PDO qui sera ensuite utilisé dans les requêtes, mais je doute, il faudrait l'avis de quelqu'un qui utilise PDO de façon plus poussé que moi.
Merci pour tes commentaires ;)
Pyrrah
Messages postés127Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention15 février 20104 8 janv. 2010 à 10:24
C'est encore moi :D
Je te suggére quand même de mettre dans ton constructeur la fonction d'ouverture de connexion mySQL et de mettre un déstructeur pour la fermeture de connexion au serveur mySQL.
Les répétitions de "connectionBDD()" peuvent être virées ensuite.
Pyrrah
Messages postés127Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention15 février 20104 8 janv. 2010 à 07:55
J'ajoueterais que je pense que c'est une très bonne base pour ceux/celles qui souhaitent comprendre le fonctionnement de PDO mais aussi ceux/celles qui débutent en PHP5. Bonne journée :)
Pyrrah
Messages postés127Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention15 février 20104 8 janv. 2010 à 07:54
Merci pour ton aide :D
Archima
Messages postés37Date d'inscriptionsamedi 19 avril 2008StatutMembreDernière intervention13 avril 2011 7 janv. 2010 à 17:47
En fait la fonction connexionBDD() créer une instance PDO avec les informations sur la bdd (adresse, nom, login,password) et la retourne, ensuite dans la classe j'utilise l'objet PDO et quand j'en ai plus besoin $pdo = null. C'est ce que j'ai vu en cours. Après PDO n'est pas mal fait je pense ^^ donc sa fonction __destruct doit stopper la connexion à la base de données.
J'espère avoir éclairé ta lanterne. Après, je ne suis pas non plus un pro du PHP5 ni de PDO (bien que je m'y attèle :D ) et tout ce qu'il y a sur PDO ici, j'ai vu ça en cours donc je certifie rien non plus ...
Pyrrah
Messages postés127Date d'inscriptionmercredi 16 février 2005StatutMembreDernière intervention15 février 20104 7 janv. 2010 à 17:09
Bonjour,
L'idée est pas mal, et justement ça me donne envie d'en savoir plus sur PDO.
Cependant, y'a un truc qui me choque : l'utilisation de la fonction connectionBDD().
En l'utilisant à chaque fonction, ça va créer une nouvelle connexion mySQL avec le serveur, à chaque appel d'une fonction ? Je suggérerais un pattern Singleton (http://www.phpcs.com/codes/ABSTRACTION-PDO_48879.aspx peut-être une bonne piste, mais je ne suis pas encore un expert de PHP5, ni de PDO).
(Je voudrais dans un script que la connexion avec mySQL soit établise au début du script, j'exécute mes actions à l'aide de utilisateur.class, puis une fois que tout est terminé, je ferme ma connexion dans le pied de la page. D'où la raison de toutes ces lignes ^^)
Amicalement,
Pyrrah.
cs_nashouille
Messages postés21Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention11 juillet 2008 21 déc. 2009 à 11:32
salut,
il y a de l'idée mais perso j'aurais complètement séparé la partie BDD de la gestion des droits.
Une gestion d'erreur complète propre a la classe manque, idem pour les propriétés d'accès.
Pas de gestion de cookie d'authentification propre a la session.
Il manque une vrai méthode de cryptage.
l'encapsulation n'est pas total, l'intérêt est d'utilisé la totalisé des propriétés pour la manipulation des méthodes. Tu sépare la gestion en static DB et la class elle même(double emploi) cela est visible lors de l'utilisation du modele.
Tu devrais revoir la méthodologie complète de ta class (l'utilisation de telle ou telle api mysql est secondaire par rapport a ce que cherche a mettre en avant.), ici c'est une class de gestion authentification.
je m'arrête, cela est simplement pour te faire avancé.
Amicalement
Archima
Messages postés37Date d'inscriptionsamedi 19 avril 2008StatutMembreDernière intervention13 avril 2011 21 déc. 2009 à 10:52
Merci pour ces idées, effectivement je pense que ça ne sera pas bien plus compliqué. Je ferai ça :p
cs_gomoz
Messages postés134Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention23 décembre 2009 21 déc. 2009 à 10:28
MartinEden, je crois que vous faites fausse route (mais je peux me tromper aussi). HtmlEntities c'est pour l'affichage uniquement et mysql_real_escape, il faut l'utiliser sur la data à entrer en BDD et non sur une variable à passer à md5 (md5 ne place jamais d'apostrophes en sortie de plus). Puis pour finir de vous achever (mais non, je ne suis pas si méchant) il faut mettre 'SELECT .. FROM .. login="'.$var.'"' mais là je chipote.
Archima, j'aime bien cette classe mais je pense qu'elle peut-être encore beaucoup amélioré :
- La gestion des groupes
- La gestion des droits par ensemble (exemple : "GestionMembre" sur "forum" ou "site" ou "lesdeux")
- Une gestion plus fine des droits : droit d'écrire, de lire, etc (on peut le faire mais je pense que ca serait pas plus compliqué d'avoir en retour de aLeDroit() un false si pas le droit et un int qui va de 1 à X en fonction du niveau d'accès).
Enfin il y a aussi des histoires d'édition du profil etc mais là c'est plus à chacun d'adapter à sa sauce. En tous cas j'aime l'initiative, c'est dans un bon esprit.
Archima
Messages postés37Date d'inscriptionsamedi 19 avril 2008StatutMembreDernière intervention13 avril 2011 15 déc. 2009 à 16:29
Après, j'avoue ne pas m'y être vraiment attardé, donc je ne sais pas si c'est totalement fiable ou non. Désolé pour cela, je suis encore que initié et j'apprends au fur et à mesure, c'est un peu ma première classe php assez "solide" ;) (sans avoir de cours dessus :(
cs_MartinEden
Messages postés5Date d'inscriptionmercredi 19 septembre 2007StatutMembreDernière intervention15 décembre 2009 15 déc. 2009 à 15:23
Désolé de ne pas avoir été assez précis,
j'utilise souvent dans pour mes requêtes Query
comme cela
<?php
$login = htmlentities($_POST['login'], ENT_QUOTES);
$mot_de_passe = md5(mysql_real_escape_string($_POST['mot_de_passe']));
mysql_query('SELECT compte_bancaire FROM table WHERE login=' . $login
.' AND mot_de_passe=' . $mot_de_passe . ';');
?>
Archima
Messages postés37Date d'inscriptionsamedi 19 avril 2008StatutMembreDernière intervention13 avril 2011 15 déc. 2009 à 11:12
Je ne vois pas de quoi tu veux parler, car il me semble que j'ai utilisé PDO dans mon script. A moins que je ne l'ai pas utilisé de la bonne manière :p
Merci de ta réponse
Cordialement,
Cyrille.
cs_MartinEden
Messages postés5Date d'inscriptionmercredi 19 septembre 2007StatutMembreDernière intervention15 décembre 2009 15 déc. 2009 à 10:43
Bonjour, j'ai examiné ton Script. Pour des question de sécurité, je te suggère d'utiliser, PDO php data object.
8 janv. 2010 à 19:08
8 janv. 2010 à 18:43
private $pdo;
__construct()
{
$this->pdo = connectionBDD();
}
Ceci dit je ne suis pas sur que ce soit la meilleurs méthode.
8 janv. 2010 à 15:14
Merci pour tes commentaires ;)
8 janv. 2010 à 10:24
Je te suggére quand même de mettre dans ton constructeur la fonction d'ouverture de connexion mySQL et de mettre un déstructeur pour la fermeture de connexion au serveur mySQL.
Les répétitions de "connectionBDD()" peuvent être virées ensuite.
8 janv. 2010 à 07:55
8 janv. 2010 à 07:54
7 janv. 2010 à 17:47
J'espère avoir éclairé ta lanterne. Après, je ne suis pas non plus un pro du PHP5 ni de PDO (bien que je m'y attèle :D ) et tout ce qu'il y a sur PDO ici, j'ai vu ça en cours donc je certifie rien non plus ...
7 janv. 2010 à 17:09
L'idée est pas mal, et justement ça me donne envie d'en savoir plus sur PDO.
Cependant, y'a un truc qui me choque : l'utilisation de la fonction connectionBDD().
En l'utilisant à chaque fonction, ça va créer une nouvelle connexion mySQL avec le serveur, à chaque appel d'une fonction ? Je suggérerais un pattern Singleton (http://www.phpcs.com/codes/ABSTRACTION-PDO_48879.aspx peut-être une bonne piste, mais je ne suis pas encore un expert de PHP5, ni de PDO).
D'autre part, je suggérerais un peu comme dans http://www.phpcs.com/codes/ABSTRACTION-PDO_48879.aspx, de mettre une possbilité de se déconnecter du serveur.
(Je voudrais dans un script que la connexion avec mySQL soit établise au début du script, j'exécute mes actions à l'aide de utilisateur.class, puis une fois que tout est terminé, je ferme ma connexion dans le pied de la page. D'où la raison de toutes ces lignes ^^)
Amicalement,
Pyrrah.
21 déc. 2009 à 11:32
il y a de l'idée mais perso j'aurais complètement séparé la partie BDD de la gestion des droits.
Une gestion d'erreur complète propre a la classe manque, idem pour les propriétés d'accès.
Pas de gestion de cookie d'authentification propre a la session.
Il manque une vrai méthode de cryptage.
l'encapsulation n'est pas total, l'intérêt est d'utilisé la totalisé des propriétés pour la manipulation des méthodes. Tu sépare la gestion en static DB et la class elle même(double emploi) cela est visible lors de l'utilisation du modele.
Tu devrais revoir la méthodologie complète de ta class (l'utilisation de telle ou telle api mysql est secondaire par rapport a ce que cherche a mettre en avant.), ici c'est une class de gestion authentification.
je m'arrête, cela est simplement pour te faire avancé.
Amicalement
21 déc. 2009 à 10:52
21 déc. 2009 à 10:28
Archima, j'aime bien cette classe mais je pense qu'elle peut-être encore beaucoup amélioré :
- La gestion des groupes
- La gestion des droits par ensemble (exemple : "GestionMembre" sur "forum" ou "site" ou "lesdeux")
- Une gestion plus fine des droits : droit d'écrire, de lire, etc (on peut le faire mais je pense que ca serait pas plus compliqué d'avoir en retour de aLeDroit() un false si pas le droit et un int qui va de 1 à X en fonction du niveau d'accès).
Enfin il y a aussi des histoires d'édition du profil etc mais là c'est plus à chacun d'adapter à sa sauce. En tous cas j'aime l'initiative, c'est dans un bon esprit.
15 déc. 2009 à 16:29
Après, j'avoue ne pas m'y être vraiment attardé, donc je ne sais pas si c'est totalement fiable ou non. Désolé pour cela, je suis encore que initié et j'apprends au fur et à mesure, c'est un peu ma première classe php assez "solide" ;) (sans avoir de cours dessus :(
15 déc. 2009 à 15:23
j'utilise souvent dans pour mes requêtes Query
comme cela
<?php
$login = htmlentities($_POST['login'], ENT_QUOTES);
$mot_de_passe = md5(mysql_real_escape_string($_POST['mot_de_passe']));
mysql_query('SELECT compte_bancaire FROM table WHERE login=' . $login
.' AND mot_de_passe=' . $mot_de_passe . ';');
?>
15 déc. 2009 à 11:12
Merci de ta réponse
Cordialement,
Cyrille.
15 déc. 2009 à 10:43
Cordialement, Martin Eden.