begin process at 2012 05 31 05:57:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

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


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

vendredi 30 juillet 2010 à 11:56:04 | [PHP-POO/PDO]Vos avis/suggestion sur un simple script

Seby63

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]
<?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); }


?>[/CODE]

/* Affichage des News */
[CODE]<?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>' ;

}
?>[/CODE]

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


Qu'en pensez vous?
vendredi 30 juillet 2010 à 11:57:28 | Re : [PHP-POO/PDO]Vos avis/suggestion sur un simple script

Seby63

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 PHP :
<?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 PHP :
<?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 PHP :
<?php $membre->geterrormsg() ; ?>



Qu'en pensez vous?


Cette discussion est classée dans : connexion, show, pseudo, membre, news


Répondre à ce message

Sujets en rapport avec ce message

probleme requete d'insertion [ par titigrou ] kikou!!j'ai un problème avec une requete d'insertion que voici: $requete = "INSERT INTO reserver VALUES ('".$reqpseudo['pseudo']."','".$_POST['voiture session [ par lan0sic ] Bonjour,Voila : J'ai fait un systeme de seesion (inscritptionn/connexion) avec un cookie a la connexion. quand on est connecter on ce redirige dans un dans le cadre d'un espace membre [ par Tomcube ] Dans mon interface administration, les membres du staff peuvent rajouter des news. Je voudrais savoir si vous aviez une solution pour que les membres, pseudo frame + question dans une "pseudo" page? [ par Linuss ] Bonjour à tous, Je viens d'intégrer des pseudo-frames à mon site web, et malheuresement je ne sais comment faire lorsqu'une de mes "pseudo" page a bes problèe d'espace membre [ par ouga78 ] Salut J'ai un problème, en fait j'ai trouvé un espace membre je sais plus trop où je l'ai modifié et j'ai remarqué qu'il manquait quelque chose: Par e toujours mon espace membre [ par ouga78 ] Bonjour Dans ma base mysql j'ai créé une table membre et un de ses champ est nommé pseudo. J'ai créé un espace membre et j'aimerai que quand les memb Gros problème de session [ par Linuss ] Bonjour à tous, Je viens de finir me zone membre sur mon site http://www.graphic-motion.net et lorsqu'un membre est connécté, et qu'il va par exemple interdire l'accès page si pas membre [ par cobrachris ] Bonsoir,je voudrais savoir comment faire pour qu'une personne non logué sur le site, ne puisse pas affiché un formulaire pour enregistrer des données. injection sql et $_POST [ par papipsycho ] bonjour a tous voila se matin je me suis dit que jallait fait la chasse o faille sur mon site j'ai commencer par les xss sa c fini mais les injection connexion echoué à l'espace membre (sous IE) [ par Franquito ] Bonjour à tous ! Je connaissais les divergences d'interpretation entre FF et IE pour le css, mais pas pour le PHP ! JE developpe actuellement un sit


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,640 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales