Uploaded by benmansourahmed

cours php complet

advertisement
1
Exercice POO (1)
On se propose de réaliser un formulaire d’authentification dans un site web, un
formulaire d’inscription pour les nouveaux utilisateurs et un formulaire de modification du
profil
Une table Personne est attribué.
Créer une classe connexion qui gère les connexions à la base de données en utilisant
les méthodes suivantes :
Connexion (): qui sert à établir une connexion avec le serveur de la base de
données et à sélectionner la base de données
closeBase() : qui sert à fermer la connexion avec le serveur de base de données.
execRq($rq) : qui permet d’exécuter une requête de sélection $rq .
execMaj($rq) : qui permet d’exécuter les autres types de requêtes.
Année universitaire 2012-2013 © Boudriga Imed
2
Exercice POO (2)
Connexion.php
<?php
// class connexion
class Connexion
{
private $serveur ="localhost";
private $user="root";
private $pass="";
private $base="phpoo";
private $con;
private $c;
public function Connexion()
{
$this->c=mysql_connect($this->serveur,$this->user,$this->pass);
$this->con=mysql_select_db($this->base,$this->c);
if(! $this->con)echo "Erreur connexion base <br>" ;
}
Année universitaire 2012-2013 © Boudriga Imed
3
Exercice POO (3)
Connexion.php (suite)
public function closeBase()
{
mysql_close($this->c);
}
public function execRq($rq)
{
$res=mysql_query($rq);
return $res;
}
}
?>
public function execMaj($rq)
{
$res=mysql_query($rq);
return $res!=null;
}
Année universitaire 2012-2013 © Boudriga Imed
4
Exercice POO (4)
Créer une classe personne qui permet de définir une personne en utilisant les
méthodes suivantes :
La méthode personneInit() : qui permet d’initialiser une personne
les méthodes « Set » de chaque attribut d’une personne
les méthodes « Get » de chaque attribut d’une personne
La méthode ajouterPersonne() : qui permet d’ajouter une personne
La méthode MAJPersonne() : qui permet de mettre à jour une personne
La méthode chargerPersonne($login,$mp) : qui permet de charger les
informations d’une personne en utilisant son login et son mot de passe
La méthode chargerPersonneId($id) qui permet de charger les informations d’une
personne en utilisant son identificateur
La méthode supprimerPersonne($id) : qui permet de supprimer une personne en
utilisant son identificateur
Année universitaire 2012-2013 © Boudriga Imed
5
Exercice POO (5)
Personne.php
<?php
//class Personne
include_once 'Connexion.php';
class Personne
{
private $id=NULL;
private $nom="";
private $prenom="";
private $login="";
private $pass="";
private $dateNaiss="";
private $sexe="";
private $email="";
private $adres="";
private $type="utilisateur";
Année universitaire 2012-2013 © Boudriga Imed
6
Exercice POO (6)
Personne.php (suite)
public function __construct(){}
public function personneInit($id,$login,$pass,$nom,$prenom,$dateNaiss, $sexe,
$email, $adres, $type)
{
$this->id=$id;
$this->nom=$nom;
$this->prenom=$prenom;
$this->login=$login;
$this->pass=$pass;
$this->dateNaiss=$dateNaiss;
$this->sexe=$sexe;
$this->email=$email;
$this->adres=$adres;
$this->type=$type;
}
Année universitaire 2012-2013 © Boudriga Imed
7
Exercice POO (7)
Personne.php (suite)
//les setteurs
public function setId($id){$this->id=$id;}
public function setNom($nom){$this->nom=$nom;}
public function setPrenom($pren){$this->prenom=$pren;}
public function setLogin($login){$this->login=$login;}
public function setPass($pass){$this->pass=$pass;}
public function setDatNaiss($d){$this->dateNaiss=$d;}
public function setSexe($s){$this->sexe=$s;}
public function setEmail($e){$this->email=$e;}
public function setAdr($a){$this->adres=$a;}
public function setType($t){$this->type=$t;}
Année universitaire 2012-2013 © Boudriga Imed
8
Exercice POO (8)
Personne.php (suite)
//Les getteurs
public function getId(){return $this->id;}
public function getNom(){return $this->nom;}
public function getPrenom(){return $this->prenom;}
public function getLogin(){return $this->login;}
public function getPass(){return $this->pass;}
public function getDateNaiss(){return $this->dateNaiss;}
public function getSexe(){return $this->sexe;}
public function getEmail(){return $this->email;}
public function getAdres(){return $this->adres;}
public function getType(){return $this->type;}
Année universitaire 2012-2013 © Boudriga Imed
9
Exercice POO (9)
Personne.php (suite)
public function ajouterPersonne()
{
$c=new Connexion();
if (!$c->execMaj("insert into personne values(NULL,'$this>login','$this->pass','$this->nom','$this->prenom','$this->dateNaiss','$this>sexe','$this->email','$this->adres','$this->type')"))
echo "Erreur ajout personne <br>" ;
$res=$c->execRq("select max(id_cl) from personne");
if ($row = mysql_fetch_array($res)) {
$this->setId($row[0]);;
}
}
$c->closeBase();
Année universitaire 2012-2013 © Boudriga Imed
10
Exercice POO (10)
Personne.php (suite)
public function MAJPersonne()
{
$c=new Connexion();
if (!$c->execMaj("update personne set nom='$this->nom'
,prenom='$this->prenom' ,login='$this->login' ,pass='$this->pass'
,date_naiss='$this->dateNaiss' ,sexe='$this->sexe' ,email='$this->email'
,adresse='$this->adres' ,type='$this->type' where id_cl=$this->id"))
echo "Erreur Modif personne <br>" ;
$c->closeBase();
}
Année universitaire 2012-2013 © Boudriga Imed
11
Exercice POO (11)
Personne.php (suite)
public function chargerPersonne($login,$mp)
{
$c=new Connexion();
$res=$c->execRq("select * from personne where login='$login' and pass='$mp'") ;
if ($row = mysql_fetch_array($res))
{
$this->id=$row[0];
$this->login=$row[1];
$this->pass=$row[2];
$this->nom=$row[3];
$this->prenom=$row[4];
$this->dateNaiss=$row[5];
$this->sexe=$row[6];
$this->email=$row[7];
$this->adres=$row[8];
$this->type=$row[9];
return (true);
}else{return(false);}
$c->closeBase();
Année universitaire 2012-2013 © Boudriga Imed
12
}
Exercice POO (12)
Personne.php (suite)
public function chargerPersonneId($id)
{
$c=new Connexion();
$res=$c->execRq("select * from personne where id_cl=$id") ;
if ($row = mysql_fetch_array($res))
{
$this->id=$row[0];
$this->login=$row[1];
$this->pass=$row[2];
$this->nom=$row[3];
$this->prenom=$row[4];
$this->dateNaiss=$row[5];
$this->sexe=$row[6];
$this->email=$row[7];
$this->adres=$row[8];
$this->type=$row[9];
return (true);
}else{ return(false);
}
$c->closeBase();
Année universitaire 2012-2013 © Boudriga Imed
}
13
Exercice POO (13)
Personne.php (suite)
public function supprimerPersonne($id)
{
$c=new Connexion();
if (!$c->execMaj("delete from personne where id_cl=$id "))
echo "Erreur supp. personne <br>" ;
$c->closeBase();
}
}
?>
Année universitaire 2012-2013 © Boudriga Imed
14
Exercice POO (14)
Créer une classe Core qui permet de gérer la session d’une personne
La méthode connexion($login,$pass) : qui permet de créer une session pour une
personne
La méthode deconnexion() : qui permet de fermer une session d’une personne
La méthode getIdSession() : qui permet de récupérer une session d’une personne
Année universitaire 2012-2013 © Boudriga Imed
15
Exercice POO (15)
class Core
{
public static function connexion($login,$pass)
{
include_once 'Personne.php';
if (Core::getIdSession()!=null)return ;
$p=new Personne() ;
if ($p->chargerPersonne($login,$pass)==true)
{
//session_start();
$_SESSION['login']=$login;
$_SESSION['id_client']=$p->getId();;
$_SESSION['client']=$p->getNom()." ".$p->getPrenom()." ";
$_SESSION['clientType']=$p->getType();
return (true);
}
else
{
return(false);
}
}
Année universitaire 2012-2013 © Boudriga Imed
16
Exercice POO (16)
Core.php (suite)
<?php
public static function deconnexion()
{
if(isset($_SESSION['id_client']))
{
session_destroy();
unset($_SESSION);
}
}
public static function getIdSession()
{
if(isset($_SESSION['id_client'])) return ($_SESSION['id_client']);
else return (null);
}
}
?>
Année universitaire 2012-2013 © Boudriga Imed
17
Exercice POO (17)
Toutes ces classes sont classées dans un répertoire dans la racine du site nommé «
class »
On voudrait créer une page d’authentification d’une personne « index.php », cette page
va gérer la totalité de notre site web en incluant des fichiers à la demande
L’utilisateur non inscrit pourra cliquer sur le lien « s’inscrire » pour faire une inscription
en utilisant un formulaire qui va être affiché dans la même page en incluant la page
«profil.php »
Année universitaire 2012-2013 © Boudriga Imed
18
Exercice POO (18)
Lorsque l’utilisateur s’authentifie, il reste dans la même page « index.php »
L’utilisateur pourra cliquer sur le lien « changer les informations personnelles» pour faire
une modification de son profil en utilisant un formulaire qui va être affiché dans la même
page en incluant la page «profil.php »
Année universitaire 2012-2013 © Boudriga Imed
19
Exercice POO (19)
index.php
<?php
include_once 'class/connexion.php';
include_once 'class/Core.php';
session_start();
echo" <form method='post' action='' >" ;
if(Core::getIdSession()==null)
{ echo "<input name='nu' type='text' placeholder='Nom utilisateur'>
<input name='mp' type='password' placeholder='Mot de passe'>
<input name='connexion' type='submit' value='Connexion'><br>
<a href='index.php?inscri'>S'inscrire</a>" ;
}
else
{
echo "Bienvenu ".$_SESSION['client'] ;
echo "<a href='index.php?profil'>Changer les informations
personnelles</a><br>
<input type='submit' value='Deconnexion' name=deconnexion> ";
}
echo "</form>";
Année universitaire 2012-2013 © Boudriga Imed
20
Exercice POO (20)
index.php (suite)
if(isset($_POST['connexion']))
{
if (! Core::connexion($_POST['nu'],$_POST['mp']))
{
echo"<script type='text/javascript' >alert('Login et mot de passe
sont invalides ')</script>" ;
}
}
if(isset($_POST['deconnexion']))
{
Core::deconnexion();
header("location:index.php");
}
if(isset($_GET['inscri'] ) || isset($_GET['profil'] ) )
{
include 'profil.php';
}
Année universitaire 2012-2013 © Boudriga Imed
?>
21
Exercice POO (21)
profil.php
<?php
include_once 'class/Core.php';
include_once 'class/Personne.php';
$t=Core::getIdSession()!=null;
$p=new Personne();
if($t==true)
{
$p->chargerPersonneId(Core::getIdSession());
echo "Modifier mon profil :<br><br>" ;
}
else
{
echo "S'inscrire :<br><br>" ;
}
echo "
<form action='' method='get'>
<table width=100%>
<tr>
<td>Login : </td>
<td><input type='text' name='login' value='".$p->getLogin()."' /></td>
</tr>
Année universitaire 2012-2013 © Boudriga Imed
22
Exercice POO (22)
profil.php(suite)
<tr>
<td>Mot de passe : </td>
<td><input type='text'name='pass' value='".$p->getPass()."' /></td>
</tr>
<tr>
<td>Nom :</td>
<td><input type='text' name='nom' value='".$p->getNom()."' /></td>
</tr>
<tr>
<td>Prénom : </td>
<td><input type='text' name='prenom' value='".$p->getPrenom()."' /></td>
</tr>
<tr>
<td>Date naissance : </td>
<td><input type='text' name='datn' value='".$p->getDateNaiss()."' /></td>
</tr>
<tr>
<td>Sexe : </td>
<td>
Année universitaire 2012-2013 © Boudriga Imed
23
Exercice POO (23)
profil.php(suite)
<select name='sexe'>
<option value=homme ";
if($p->getSexe()=="homme")echo 'selected' ;
echo ">Homme</option>
<option value=femme ";
if($p->getSexe()=="femme")echo 'selected' ;
echo " >Femme</option>
</select>
</td>
</tr>
<tr>
<td>Email : </td>
<td><input type='text' name='email' value='".$p->getEmail()."' /></td>
</tr>
<tr>
<td>Adresse :</td>
<td><textarea name='adrs'>".$p->getAdres()."</textarea></td>
</tr>
</table>";
Année universitaire 2012-2013 © Boudriga Imed
24
Exercice POO (24)
profil.php(suite)
if($t)
echo "<input type='submit' name='MAJ' value='Mettre à jour '>" ;
else
echo "<input type='submit' name='inscription' value=S'inscrire>" ;
echo "<input type='hidden' name='profil'>";
echo "</form>";
//modification /mise a jour
if ( isset($_GET['MAJ']) || isset($_GET['inscription']))
{
$p->setId(Core::getIdSession());
/*
$p->personneInit(Core::getIdSession(),$_GET['login'],$_GET['pass'],
$_GET['nom'],$_GET['prenom'] ,$_GET['datn'],$_GET['sexe'],$_GET['email'],
$_GET['adrs'],"utilisateur");
*/
Année universitaire 2012-2013 © Boudriga Imed
25
Exercice POO (25)
profil.php(suite)
$p->setNom($_GET['nom']);
$p->setPrenom($_GET['prenom']);
$p->setLogin($_GET['login']);
$p->setPass($_GET['pass']);
$p->setDatNaiss($_GET['datn']);
$p->setSexe($_GET['sexe']);
$p->setEmail($_GET['email']);
$p->setAdr($_GET['adrs']);
if(isset($_GET['MAJ']))
{
$p->MAJPersonne();
}
elseif (isset($_GET['inscription']))
{
$p->ajouterPersonne();
Core::connexion($_GET['login'],$_GET['pass']);
}
Année universitaire 2012-2013 © Boudriga Imed
26
Exercice POO (26)
profil.php(suite)
$_SESSION['login']=$_GET['login'];
$_SESSION['client']=$_GET['nom']." ".$_GET['prenom']." ";
echo"<script type='text/javascript' >alert('Vos données personnelles ont été
enregisté. ') ;
window.location = 'index.php';
</script>" ;
//retour au profil :p
}
?>
Année universitaire 2012-2013 © Boudriga Imed
27
Download