Vous êtes sur la page 1sur 7

PHP5 / Mysql Cration d'une authentification pour un site internet Session, base de donnes, php

I. Prsentation
Objectifs : L'objectif de ce tutoriel est de crer une page d'authentification pour un site internet et de protger certaines pages du site. Les identifiants et mots de passe seront stocks dans une base de donnes. Logiciels utiliss pour ces services : Apache 2/ h ! "#s$l%server hpm#admin

II. Cration de la base de donnes


L'objectif ici est de crer une base de donnes pour le site avec une table & users ' $ui stockera les identifiants et mots de passe des comptes utilisateurs. our cela( il faut se rendre sur l'interface de phpm#admin sur le serveur. )ttp://ip*serveur/phpm#admin. La premi+re tape consiste , crer une base de donne & "on-ite ' dans la$uelle sera stock les diffrentes tables lies au site dont la table & users '.

.ne fois cette base cre( il nous faut pour atteindre notre objectif( crer une table & users ' $ui aura / champs : l'id utilisateur( le login et le mot de passe.

0ous avons besoin d'un champ de t#pe 1nteger pour l'id de l'utilisateur avec l'A.2O 10345"502 et l'1ned6 , 41"A47( d'un champ login de t#pe 8archar 9:: ;chaine de caract+res< pour le login puis d'un champ pass=ord de t#pe 8archar 9:: pour stocker les mots de passes :

"aintenant $ue nous avons cr notre base et note table users( il nous reste , crer un compte utilisateur du serveur "#s$l pour $ue le script php puisse lire les informations de la base. our cela il faut retourner , la page d'accueil de phpm#admin ;petite mainson dans le menu de gauche< et cli$uer sur rivil+ges en haut.

1l faut maintenant cli$uer sur Ajouter un utilisateur :

0ous allons saisir les informations du compte( dans l'e6emple : login & access*site ' et pass=ord & motdepasse '

uis cli$uer sur 56cuter. -ur la nouvelle page dans la partie & riviles spcifi$ues , une base de donnes ' nous allons slectionner la base & "on-ite '.

uis enfin nous allons slectionner -5L532( 10-542( . >A25 de >5L525

Apr+s avoir cli$u sur 56cuter( notre base de donnes est pr?te et nous avons un utilisateur pour s'# connecter et $ui peut lire les informations contenues dans la base de notre site.

III. Cration de la partie PHP5 / HTML


3e dont nous avons besoin c'est d'un formulaire d'authentification( d'un s#st+me de vrification( d'un mo#en de se connecter , la base de donnes( d'un formulaire d'ajout de compte et d'un mo#en pour vrifier si l'utilisateur s'est authentifi avant d'afficher la page. 3ommen@ons par le dbut du commencement le formulaire d'authentification. 3e formulaire appellera le script auth.php age : auth.html AhtmlB AheadBAtitleBAuthentification requiseA/titleBA/headB Abod#B AcenterB Ah2BMerci de vous authentifierA/h2B Aform actionCDauth.phpDB Atable borderCD:D =idthCDE:FDB AtrB AtdBAcenterB o! d'utilisateur " A/centerBA/tdB AtdBAcenterBAinput t#peCDte6tD nameCDloginD/BAcenterBA/tdB A/trB AtrB AtdBAcenterBMot de passe " A/centerBA/tdB AtdBAcenterBAinput t#peCDpass=ordD nameCDpass=ordD /BA/centerBA/tdB A/trB A/tableB Ainput t#peCDsubmitD valueCD8aliderD /B A/formB A/centerB A/bod#B AhtmlB

1l nous faut aussi maintenant un formulaire pour crer les comptes utilisateurs ;$ui seront stocks dans la table & users '<. 3e formulaire appellera le script d'ajout & add*user.php '. age : add*user.php AhtmlB AheadBAtitleBCration de co!pte utilisateurA/titleBA/headB Abod#B AcenterB Ah2BMerci de saisir les identifiants du co!pteA/h2BAbr /BAbr /B Aform actionCDadd*user.phpDB Atable borderCD:D =idthCD/:FDB AtrB AtdBAcenterB o! d'utilisateur " A/centerBA/tdB AtdBAcenterBAinput t#peCDte6tD nameCDloginD/BAcenterBA/tdB A/trB AtrB AtdBAcenterBMot de passe " A/centerBA/tdB AtdBAcenterBAinput t#peCDpass=ordD nameCDpass=ordD /BA/centerBA/tdB A/trB A/tableBAbr /BAbr /B Ainput t#peCDsubmitD valueCD8aliderD /B A/formB A/centerB A/bod#B AhtmlB

"aintenant $ue la partie html est termine il nous reste la partie php. 3ette partie sera compose de G fichiers : le fichier auth.php $ui vrifiera les informations saisies par l'utilisateur le fichier add*user.php $ui permettra d'ajouter les nouveau6 utilisateurs un fichier fonction.php $ui contiendra la fonction de conne6ion , la base de donnes et d'e6cution des re$u+tes s$l. .n fichier conf.site $ui contiendra les informations de conne6ion , la base de donnes. 3ommen@ons par le fichier conf.site. 3e fichier doit contenir les information d'acc+s , la base de donnes ;nom d'utilisateur( mot de passe( adresse ip du serveur( nom de la base de donnes<. Hichier conf.site : AI JK>>*hoteCDlocalhostDL JK>>*nm>KCD"on-iteDL JK>>*userCDacces*siteDL JK>>*passCDmotdepasseDL IB

Avant de nous occuper des scripts d'ajout de compte et d'authentification( il nous reste le fichier fonctions.php , crer $ui contiendra les fonctions d'e6cutions des re$u+tes. Hichier fonctions.php AI // Honction d'e6cution des re$u+tes -ML function s$l;Jre$uest< N global JbddL if;strrchr;Jre$uest( '-5L532'<< N Jre$ C Jbdd%B$uer#;Jre$uest<L O else N Jbdd%Be6ec;Jre$uest<L O if;Pempt#;Jre$<< N =hile ;Jdata C Jre$%Bfetch;<< N JresQR C JdataL O return JresL O else N return falseL O O IB Avant de crer le fichier auth.php pour grer les authentification( nous allons crer le fichier add*user.php pour ajouter un premier utilisateur de notre site dans notre base de donnes afin de pouvoir par la suite tester la page d'authentification. Hichier add*user.php AI // Fichier add_user.php // On intgre les informations de connexion la base de donnes ainsi que le fichier (ou librairie fonctions.php) include;Dconf.siteD<L include;Dfonctions.phpD<L // On intialise la connexion la base de donnes Jbdd C ne= >O;'m#s$l:hostC'.JK>>*hote.'LdbnameC'.JK>>*nm>K( JK>>*user( JK>>*pass<L // On rcupre ce que l utilisateur saisi! si il n a rien saisi (login ou mot de passe) on le ren"oi sur la page de cration de compte if;isset;J*45M.5-2Q'login'R< SS isset;J*45M.5-2Q'pass=ord'R<< N // #e formulaire prcdent a t bien rempli // On prpare la requte $%# pour enregistrer l utilisateur Jre$ueteCD10-542 102O T"on-iteT.TusersT ;TidT( TloginT( Tpass=ordT< 8AL.5- ;0.LL( 'D. J*45M.5-2Q'login'R.D'( 'D.md!;J*45M.5-2Q'pass=ord'R<.D'<LDL // &ci md' permet de cr(pter le mot de passe et de le stoc)er cr(pt dans la base de donnes // On excute la requete grace la fonction sql prsente dans le fichier fonctions.php s$l;Jre$uete<L // On pr"ient que le compte bien t cr echo D3ompte ajout a la baseDL

// On pourrait aussi ren"o(er "ers une page de confirmation par // header(*location + confirmation.html*), O else N // #e formulaire n est pas complet // On ren"oit "ers la page prcdente header;Dlocation : add*user.htmlD<L O IB our tester notre ajout de compte il suffit d'aller dans un navigateur , l'adresse http://ipduserveur/monsite/add*user.html( d'ajouter un compte puis de vrifier grace , phpm#admin si nous avons bien un nouvel utilisateur dans notre table users. "aintenant $ue nous avons pu ajouter un compte , notre base & users '( nous allons pouvoir crer notre fichier auth.php $ui se chargera de comparer les informations saisies par l'utilisateur et les informations saisies dans la base de donnes. Hichier auth.php AI //On prpare l'utilisation des variables de fonctions ;variable $ui sont stockes sur le serveur pour cha$ue session ouverte< session*start;<L // Hichier auth.php // On int+gre les informations de conne6ion , la base de donnes ainsi $ue le fichier ;ou librairie fonctions.php< include;Dconf.siteD<L include;Dfonctions.phpD<L // On intialise la conne6ion , la base de donnes Jbdd C ne= >O;'m#s$l:hostC'.JK>>*hote.'LdbnameC'.JK>>*nm>K( JK>>*user( JK>>*pass<L // On rcup+re ce $ue l'utilisateur , saisi( si il n'a rien saisi ;login ou mot de passe< on le renvoi sur la page de cration de compte if;isset;J*45M.5-2Q'login'R< SS isset;J*45M.5-2Q'pass=ord'R<< N // -i l'utilisateur , rempli tous les champs on vrifie ce $u'il , saisit // 5n recherchant dans la base de donner( un login et un mot de passe cr#pt correspondant , ce $u'il , saisi. // -i on a pas de rponse( alors il # a une erreur d'authentification // -inon l'utilisateur a russi , s'authentifier Jre$uete C D-5L532 U H4O" users V)545 TloginTC'D.J*45M.5-2Q'login'R.D' A0> Tpass=ordTC'D.md!;J*45M.5-2Q'pass=ord'R<.D'DL if;s$l;Jre$uete<< N // 0ous avons bien le bon utilisateur // 0ous crons la variable de session J*-5--1O0Q'auth'RCDA.2) : OWDL echo D8ous ?tes authentifiDL O else N // 0ous n'avons pas les bonnes informations // On renvoi vers la page d'authentification header;Dlocation: auth.htmlD<L O O else N // Hormulaire incomplet // On renvoit vers la page prcdente header;Dlocation: auth.htmlD<L O IB

our tester notre authentification( il nous suffit d'aller sut l'adresse http://ipduserveur/monsite/auth.html( puis d'utiliser les informations d'authentifications de l'utilisateur $ue nous avons cr , l'aide de notre formulaire prcdemment. 5nfin pour protger une page d'un site il nous suffira de vrifier en haut de cha$ue page si nous avons une session ouverte ou pas pour le site , l'aide du code suivant : AI session*start;<L if;Pisset;J*-5--1O0Q'auth'R<< N header;Dlocation:auth.htmlD<L O IB 3e code en haut de cha$ue page vrifie si nous avons une session =eb ouverte sur le serveur avec notre variable de session( sinon il nous renvoit directement sur la page d'authentification. 1l faut rajouter ce morceau de code sur la page add*user.html ainsi $ue tout en haut de add*user.php.

#uillau!e $vain % &'(( contact)evain*info http"//+++*evain*info ,-- / ' . /.&(.5-.5/.0(

Vous aimerez peut-être aussi