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 */
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
<?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 = '<div class="error_conec">Mot de passe incorrecte</div>' ;
}
}
else
{
$this->error_msg = '<div class="error_conec">Ce compte n\'éxiste pas</div>' ;
}
}
else
{
$this->error_msg = '<div class="error_conec">Champ mot de passe vide</div>' ;
}
}
else
{
$this->error_msg = '<div class="error_conec">Champ pseudo vide</div>' ;
}
}
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 */
1 2 3 4 5 6 7 8 9
| <?php
for ($i=0; $i < $news->getNewsDispo() ; $i++)
{
echo '<div id="left_n"> <img src="style/images/icon_news.png" alt="News"/> </div>
<div id="right_n"><div class="left_n_content_txt2">Par '.$news->getAuthNews($i).'</div><div class="left_n_content_t">'.$news->getTitleNews($i).' : '.date("d/m/Y : H:i", $news->getDateNews($i)).' </div><div class="left_n_content_txt">'.$news->getTextNews($i).'</div></div>
<div id="clear_both"></div>' ;
}
?> |
/* Affichage du message d'erreur (lors d'une tentative de connexion */
<?php $membre->geterrormsg() ; ?>
Qu'en pensez vous?
Partager