[PHP-POO/PDO]Vos avis/suggestion sur un simple script
cs_Seby63
Messages postés8Date d'inscriptiondimanche 25 juillet 2010StatutMembreDernière intervention12 août 2010
-
30 juil. 2010 à 11:56
cs_Seby63
Messages postés8Date d'inscriptiondimanche 25 juillet 2010StatutMembreDernière intervention12 août 2010
-
30 juil. 2010 à 11:57
Bonjour,
Je me lance actuellement dans la POO en PHP. Pour me familiariser je suis donc actuellement en train de faire un script qui permet la connexion d'un membre a un espace membre et l'affichage de News.
Voici le script :
/* Le header */
<?php
session_start() ;
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='php'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
class Membre
{
/* Paramètre membre */
private $pseudo ;
private $email ;
private $motdepasse ;
private $error_msg ;
/* Connexion PDO */
private $connexion ;
public function __construct($connexion_PDO)
{
$this->connexion = $connexion_PDO ;
}
public function VerifPseudoPass($data)
{
// Nom des champs du formulaire d'identification -> pseudo//pass
extract($data) ;
$this->pseudo = trim(strtolower($pseudo)) ;
$this->motdepasse = trim(strtolower(md5($pass))) ;
if (!empty($this->pseudo))
{
// Si le pseudo n'est pas vide
if (!empty($this->motdepasse))
{
// On vérifie d'abord si le pseudo existe
//$result_pseudo = $this->connexion->query("SELECT COUNT(*) FROM b_membre WHERE pseudo_j='".$this->pseudo."'")->fetchColumn();
$result_pseudo = $this->connexion->prepare("SELECT COUNT(*) FROM b_membre WHERE pseudo_j='".$this->pseudo."'");
$result_pseudo->execute();
$reponse_pseudo=$result_pseudo->fetch(PDO::FETCH_ASSOC);
if ($reponse_pseudo['COUNT(*)'] > 0)
{
// on vérifie ensuite le couple pseudo/mot de passe
$result_couple = $this->connexion->prepare("SELECT COUNT(*) FROM b_membre WHERE pseudo_j='".$this->pseudo."' && password_j='".$this->motdepasse."'");
$result_couple->execute();
$reponse_couple=$result_couple->fetch(PDO::FETCH_ASSOC);
if ($reponse_couple['COUNT(*)'] == 1 )
{
// Tout est ok -> On met à jours les sessions
$_SESSION["membre"] = TRUE ;
$_SESSION["membreid"] = XXX ;
$_SESSION["login"] = XXX ;
// On rédirige l'utilisateur
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'ok.php';
header("Location: http://$host$uri/$extra");
exit() ;
}
else
{
$this->error_msg = '
Mot de passe incorrecte
' ;
}
}
else
{
$this->error_msg = '
Ce compte n\'éxiste pas
' ;
}
}
else
{
$this->error_msg = '
Champ mot de passe vide
' ;
}
}
else
{
$this->error_msg = '
Champ pseudo vide
' ;
}
}
public function geterrormsg()
{
echo $this->error_msg ;
}
} // Fin class Membre
class News
{
private $auth_n ;
private $title_n ;
private $text_n ;
private $date_n ;
private $nbr_news_dispo ;
public function __construct($nbr_n_show, $connexion)
{
$this->nbr_news_dispo = 0 ; /* On initialise les News disponible a 0 */
$show_prepare=$connexion->prepare("SELECT * FROM b_news ORDER BY id DESC LIMIT 0,".$nbr_n_show); // on prépare notre requête
$show_prepare->execute();
while($show_news=$show_prepare->fetch(PDO::FETCH_OBJ))
{
$this->auth_n[] = $show_news->auth_n ;
$this->title_n[] = stripslashes($show_news->title_n) ;
$this->text_n[] = nl2br(stripslashes($show_news->text_n)) ;
$this->date_n[] = $show_news->date_n ;
$this->nbr_news_dispo++;
}
$show_prepare->closeCursor(); // on ferme le curseur des résultats
}
public function getNewsDispo()
{
return $this->nbr_news_dispo ;
}
public function getAuthNews($n)
{
return $this->auth_n[$n] ;
}
public function getTitleNews($n)
{
return $this->title_n[$n] ;
}
public function getTextNews($n)
{
return $this->text_n[$n] ;
}
public function getDateNews($n)
{
return $this->date_n[$n] ;
}
} // Fin class News
/* On crée l'objet $membre */
$membre = new Membre($connexion) ;
/* On crée l'objet News avec l'affichage de x News */
$news = new News(3, $connexion) ;
if (isset($_POST['pseudo'])){$membre->VerifPseudoPass($_POST); }
?>
cs_Seby63
Messages postés8Date d'inscriptiondimanche 25 juillet 2010StatutMembreDernière intervention12 août 2010 30 juil. 2010 à 11:57
Bonjour,
Je me lance actuellement dans la POO en PHP. Pour me familiariser je suis donc actuellement en train de faire un script qui permet la connexion d'un membre a un espace membre et l'affichage de News.
Voici le script :
/* Le header */
<?php
session_start() ;
$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='3306';
$PARAM_nom_bd='php'; // le nom de votre base de données
$PARAM_utilisateur='root'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=''; // mot de passe de l'utilisateur pour se connecter
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
class Membre
{
/* Paramètre membre */
private $pseudo ;
private $email ;
private $motdepasse ;
private $error_msg ;
/* Connexion PDO */
private $connexion ;
public function __construct($connexion_PDO)
{
$this->connexion = $connexion_PDO ;
}
public function VerifPseudoPass($data)
{
// Nom des champs du formulaire d'identification -> pseudo//pass
extract($data) ;
$this->pseudo = trim(strtolower($pseudo)) ;
$this->motdepasse = trim(strtolower(md5($pass))) ;
if (!empty($this->pseudo))
{
// Si le pseudo n'est pas vide
if (!empty($this->motdepasse))
{
// On vérifie d'abord si le pseudo existe
//$result_pseudo = $this->connexion->query("SELECT COUNT(*) FROM b_membre WHERE pseudo_j='".$this->pseudo."'")->fetchColumn();
$result_pseudo = $this->connexion->prepare("SELECT COUNT(*) FROM b_membre WHERE pseudo_j='".$this->pseudo."'");
$result_pseudo->execute();
$reponse_pseudo=$result_pseudo->fetch(PDO::FETCH_ASSOC);
if ($reponse_pseudo['COUNT(*)'] > 0)
{
// on vérifie ensuite le couple pseudo/mot de passe
$result_couple = $this->connexion->prepare("SELECT COUNT(*) FROM b_membre WHERE pseudo_j='".$this->pseudo."' && password_j='".$this->motdepasse."'");
$result_couple->execute();
$reponse_couple=$result_couple->fetch(PDO::FETCH_ASSOC);
if ($reponse_couple['COUNT(*)'] == 1 )
{
// Tout est ok -> On met à jours les sessions
$_SESSION["membre"] = TRUE ;
$_SESSION["membreid"] = XXX ;
$_SESSION["login"] = XXX ;
// On rédirige l'utilisateur
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'ok.php';
header("Location: http://$host$uri/$extra");
exit() ;
}
else
{
$this->error_msg = '
Mot de passe incorrecte
' ;
}
}
else
{
$this->error_msg = '
Ce compte n\'éxiste pas
' ;
}
}
else
{
$this->error_msg = '
Champ mot de passe vide
' ;
}
}
else
{
$this->error_msg = '
Champ pseudo vide
' ;
}
}
public function geterrormsg()
{
echo $this->error_msg ;
}
} // Fin class Membre
class News
{
private $auth_n ;
private $title_n ;
private $text_n ;
private $date_n ;
private $nbr_news_dispo ;
public function __construct($nbr_n_show, $connexion)
{
$this->nbr_news_dispo = 0 ; /* On initialise les News disponible a 0 */
$show_prepare=$connexion->prepare("SELECT * FROM b_news ORDER BY id DESC LIMIT 0,".$nbr_n_show); // on prépare notre requête
$show_prepare->execute();
while($show_news=$show_prepare->fetch(PDO::FETCH_OBJ))
{
$this->auth_n[] = $show_news->auth_n ;
$this->title_n[] = stripslashes($show_news->title_n) ;
$this->text_n[] = nl2br(stripslashes($show_news->text_n)) ;
$this->date_n[] = $show_news->date_n ;
$this->nbr_news_dispo++;
}
$show_prepare->closeCursor(); // on ferme le curseur des résultats
}
public function getNewsDispo()
{
return $this->nbr_news_dispo ;
}
public function getAuthNews($n)
{
return $this->auth_n[$n] ;
}
public function getTitleNews($n)
{
return $this->title_n[$n] ;
}
public function getTextNews($n)
{
return $this->text_n[$n] ;
}
public function getDateNews($n)
{
return $this->date_n[$n] ;
}
} // Fin class News
/* On crée l'objet $membre */
$membre = new Membre($connexion) ;
/* On crée l'objet News avec l'affichage de x News */
$news = new News(3, $connexion) ;
if (isset($_POST['pseudo'])){$membre->VerifPseudoPass($_POST); }
?>