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 */
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 */
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 */
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<?php $membre->geterrormsg() ; ?>

Qu'en pensez vous?