[PHP-POO/PDO]Vos avis/suggestion sur un simple script

cs_Seby63 Messages postés 8 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 12 août 2010 - 30 juil. 2010 à 11:56
cs_Seby63 Messages postés 8 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 12 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); }


?>


/* Affichage des News */
<?php
for ($i=0; $i < $news->getNewsDispo() ; $i++)
{
echo '
  


Par '.$news->getAuthNews($i).'

'.$news->getTitleNews($i).' : '.date("d/m/Y : H:i", $news->getDateNews($i)).' 

'.$news->getTextNews($i).'



' ;

}
?>


/* Affichage du message d'erreur (lors d'une tentative de connexion */
<?php $membre->geterrormsg() ; ?>



Qu'en pensez vous?

1 réponse

cs_Seby63 Messages postés 8 Date d'inscription dimanche 25 juillet 2010 Statut Membre Dernière intervention 12 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); }


?>


/* Affichage des News */
<?php
for ($i=0; $i < $news->getNewsDispo() ; $i++)
{
echo '
  


Par '.$news->getAuthNews($i).'

'.$news->getTitleNews($i).' : '.date("d/m/Y : H:i", $news->getDateNews($i)).' 

'.$news->getTextNews($i).'



' ;

}
?>


/* Affichage du message d'erreur (lors d'une tentative de connexion */
<?php $membre->geterrormsg() ; ?>



Qu'en pensez vous?
0
Rejoignez-nous