|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
Bonsoir tous le monde,
j'essaie de me construire une class pour la connections a l'administration des admins et j'aimerai savoir si je suis sur la bonne voie. En fait le formulaire sera des plus simpliste:
Cependant j'utilise PDO pour me connecter a la base de donnée et je doit implémenter les sessions + tous ce qui va avec (en gros je devrais me renseigner pour sécuriser tous sa) Voici le code pour l'instant sans savoir si cela fonctionnera: Code :
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
||
|
00
|
|
|
#2 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Quelques remarques vite fait :
- $_REQUEST c'est mal, préfère $_GET ou $_POST - je mettrais les variable membre login/motdepasse en private - faudrait tester avec isset si le login/mdp existe avant de l'affecter à une variable - pas de catch dans une classe, c'est pas a ce niveau que tu gère les erreur. (j'ai pas dit pas de try hein - self:: s'utilise pour les classe statique, utilise $this-> plutot dans ce cas |
|
|
00
|
|
|
#3 | |||
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
Bon j'ai corriger , arrêter moi si je me suis trompé
Code :
Citation:
Pas de catch Au fait pourquoi $_REQUEST est déprécié ? je l'utilise au boulot (pas le choix) comme on est une dizaine de développeur le code est partagé (on me donne que des $REQUEST .
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|||
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Je sais pas si $_REQUEST est déprécié mais en tout cas quand tu utilise $_REQUEST tu ne sait pas d'où viennent les données. Est-ce qu'elles viennent d'un POST, d'un GET, d'un Cookie ? Donc il faut prendre l'habitude d'utiliser les bonnes variable globale.
Pour le catch, il faut le faire tout simplement en dehors de ta classe. Tu lance les exceptions avec throw ou met des bloc try dans ta classe et tu les récupère en dehors de la classe. C'est pas à toi de décider si oui ou non tu veux capturer les erreurs. C'est à celui qui utilise ta classe (bon ici c'est toi dans les 2 cas mais ça change rien). Pour le isset t'a bien fait ça. Il faut s'assurer que le $_POST['users'] et l'autre variable $_POST sont bien initialisée sinon tu aura un notice il me semble. Je te conseille de mettre un error_reporting(E_ALL | E_STRICT) en début de ton script, juste pendant la phase de création/test/degugging. |
|
|
00
|
|
|
#5 | |
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
Citation:
Ensuite pensez vous qu'un simple assign avec smarty fera l'affaire pour Code :
$_POST['users'] et $_POST['cryptpass'] Il faut que je fasse tourner ce script afin de voir si les données sont bien traité ensuite je rajouterai de quoi sécuriser un peux mieux le script, quelques conseil sur ce point serai très apprécié. très gentil de votre part de me donner un coup de main
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|
|
00
|
|
|
#6 | ||||
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Je n'ai jamais utiliser smarty donc je ne sait pas s'il fera l'affaire mais niveau sécurité ce qu'il faut faire en gros :
- se protéger des injection sql (PDO avec requête préparée ou mysql_real_escape_string) - se protégé des attaque cross script scripting en parsant l'affichage des donnés (au cas ou tu afficherais le login sur la page, il faut faire attention que le login ne contienne pas de code javascript ect) avec htmlentities(). - ne jamais faire confiance à des donnée post, get, provenant d'un formulaire, cookies, ... car elles peuvent êtres toute modifiée comme bon nous semble Niveau try/catch/throw : La classe : Code :
Code :
Tu peux mettre des try dans la classe il n'y a pas de souci de ce coté. Le throw sert à lancer une exception. Tu devrais lire quelque article sur les exception pour mieux comprendre, commence par ici peut être : http://be.php.net/manual/fr/language.exceptions.php |
||||
|
|
00
|
|
|
#7 | ||||
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
un truc dans ce genre la pour la classe :
Code :
Mais voici la class au complet pour l'instant: Code :
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
||||
|
00
|
|
|
#8 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Es-tu sur que fetchAll retourne false en cas d'echec ?
Sinon oui on peux faire quelque chose comme ca. |
|
|
00
|
|
|
#9 | ||
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
j'editais mon message le temps que vous postiez le vôtre lol:
voici la class au complet : Code :
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
||
|
00
|
|
|
#10 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Tu m'a mal compris pour le htmlentities. Tu ne doit l'utiliser que quand tu affiche des données à l'écran.
Donc genre à la ligne Code :
echo htmlentities($this->users_login); Enlève le DISTINCT de ta requête SQL. Si tu as plus que 1 résultat il y a un problème. D'ailleurs c'est WHERE "nom_champ = :nom" normalement. |
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
je pense que ceci est plus approprié :
Code :
SELECT id_user,users from member where users=:users and pass=:cryptpass
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|
00
|
|
|
#12 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Pas la peine de récupérer le login de l'utilisateur, tu l'as déjà.
|
|
|
00
|
|
|
#13 |
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
Donc j'enleve dans le where :
je ne récupère que le mots de pass Ben si j'ai bien compris
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|
00
|
|
|
#14 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Euh le mot de passe je voit pas a quoi il pourrait te server par la suite.
|
|
|
00
|
|
|
#15 | |||
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
Donc ceci :
Code :
Code :
where users=:users and pass=:cryptpass Citation:
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|||
|
00
|
|
|
#16 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Ce qui sert à rien c'est le "users" ici : "SELECT DISTINCT id_user,user".
Il n'est pas nécessaire de récupérer le nom de l'utilisateur car tu l'a déja. Bon j'avoue c'est aller chercher la ptite bête aussi
|
|
|
00
|
|
|
#17 | |||
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
ah ok lol j'avais pas compris, j'ai de toute façon modifier la requête afin de faire un * c'est plus simple
Comme sa je peux écrire directement une autre fonction pour l'envoi de mots de pass en cas d'oubli qui se baserai sur la fonction qui charge les données dans la base. Par contre vous aviez raison sur le "false" dans la fonction de connexion a la sgbd. Code :
Citation:
Quoi qu'il en soit je doit impérativement faire une série de test
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|||
|
00
|
|
|
#18 |
|
Membre éprouvé
![]() Aurélien GéritsDéveloppeur Web Inscription : mai 2006 Messages : 1 045 ![]() |
j'ai rien dit tout fonctionne correctement et j'ai grossi ma ptit class
Je vous remercie de votre aide
__________________
Au petit déjeuner, je prend du PHP et au souper du jQuery.AFUP 2009 : Bien optimiser son code pour le référencement Mon projet open source de librairie PHP 5: magix cjquery |
|
00
|
Copyright © 2000-2012 - www.developpez.com