begin process at 2013 06 19 10:32:32
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > ESPACE MEMBRE VERSION 3 EN PHP 5

ESPACE MEMBRE VERSION 3 EN PHP 5


 Information sur la source

Note :
9,17 / 10 - par 6 personnes
9,17 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :espace membre, session membre, membre, espace membres Niveau :Débutant Date de création :09/02/2013 Date de mise à jour :26/02/2013 12:58:48 Vu / téléchargé :5 124 / 948

Auteur : JejeScript

Ecrire un message privé
Commentaire sur cette source (39)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Nouvelle version de mon Espace membre

Adresse de l'ancien : http://www.phpcs.com/codes/ESPACE-MEMBRE_54699.asp x

Plusieurs fonctions et modules :

PHP 5 avec utilisation de PDO

1 Membres avec niveaux d'autorisation
  => Mot de passe sécurisé, et captcha
  => Inscription avec plusieurs niveaux : administrateur, modérateur, membre
  => connexion avec jeton de connexion et adresse IP enregistrée
  => Visualisation et gestions des connexions
2 Messagerie Complète
  => Lecture de Message
  => Création de Message avec smiley
  => Envoie de Message
  => Effacement de message
3 Espace Administration
  => Gestion des membres
  => Visualisation des Autres fiches membres
  => Activation ou désactivation membres
  => Gestion des niveaux : membre, modérateur, admin
4 Espace Membre
  => Fiche Membre Perso
  => Avatar
  => Autorisation de visualisation d'informations personnelles
  => Visualisation des Autres fiches membres

Le fichier design n'est pas dans la source de code source car il est trop gros,
vous pouvez le télécharger ici :
http://dbmwebdesign.fr/Modules/espace-membre/cre er-espace-membre.html


Source

  • <?php
  • include('define.php');
  • // La fonction de redirection de base
  • function redirection($url, $time=0) {
  • if (!headers_sent()) {
  • header("refresh: $time;url=$url");
  • exit;
  • }
  • else {
  • echo '<meta http-equiv="refresh" content="',$time,';url=',$url,'">';
  • }
  • }
  • // La classe de connexion a la bdd
  • class Bdd {
  • private static $connexion = NULL;
  • public static function connectBdd() {
  • if(!self::$connexion) {
  • self::$connexion = new PDO(DNS, USER, PASS);
  • self::$connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  • }
  • return self::$connexion;
  • }
  • } // Fin de la classe de connexion a la bdd
  • ###########################################################################################
  • // La classe de recuperation de l'ip visiteur
  • class Ip {
  • // function recuperation ip
  • public static function get_ip() {
  • if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  • $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
  • }
  • elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
  • $ip = $_SERVER['HTTP_CLIENT_IP'];
  • }
  • else {
  • $ip = $_SERVER['REMOTE_ADDR'];
  • }
  • return $ip;
  • }
  • } // Fin de la classe de recuperation de l'ip visiteur
  • ###########################################################################################
  • // La classe de cryptage
  • class Cryptage {
  • // Fonction de cryptage
  • public static function crypter($var) {
  • $sel = "48@tiOP";
  • $Cript = md5($var);
  • $crypt = sha1($Cript, $sel);
  • return $crypt;
  • }
  • // creation d'une chaine aleatoire
  • public static function chaine($nb_car, $chaine='AZERTYUIOPQSDFGHJKLMWXCVBNazertyuiopqsdfghjklmwxcvbn123456789') {
  • $nb_lettres = strlen($chaine)-1;
  • $generation = '';
  • for($i=0; $i < $nb_car; $i++)
  • {
  • $pos = mt_rand(0, $nb_lettres);
  • $car = $chaine[$pos];
  • $generation .= $car;
  • }
  • return $generation;
  • }
  • } // Fin de la classe de cryptage
  • ###########################################################################################
  • // La classe captcha
  • class Captcha {
  • // Fonction de creation d'un captcha
  • // $a => chiffre entre 1 et 5
  • // $b => chiffre entre 1 et 5
  • // $resultat => le resultat de l'operation
  • // $phrase => le texte du captcha
  • // Retourne un tableau contenant la phrase et le resultat du captcha
  • public static function captchaCreate() {
  • $a = rand(1, 5);
  • $b = rand(1, 5);
  • $resultat = $a + $b;
  • $phrase = 'Combien font '.$a.' + '.$b.' : ';
  • return array($resultat, $phrase);
  • }
  • // Fonction d'envoie du captcha
  • // Creation d'une session contenant le resultat du captcha
  • // Retourne la phrase du captcha
  • public function captcha() {
  • list($resultat, $phrase) = Captcha::captchaCreate();
  • $_SESSION['captcha'] = $resultat;
  • return $phrase;
  • }
  • // Fonction de verification du resultat du captcha
  • // Si le resultat du captcha a ete poste
  • // Si la reponse est egale a la session captcha
  • // Retourne vrai
  • // Si la reponse est fausse
  • // retourne faux
  • // Si le resultat n'est pas envoye
  • // Retourne faux
  • public static function captchaVerif() {
  • if(!empty($_POST['captcha'])) {
  • if($_POST['captcha'] == $_SESSION['captcha']) {
  • return true;
  • }
  • else {
  • return false;
  • }
  • }
  • else {
  • return false;
  • }
  • }
  • } // Fin de la classe captcha
  • ###########################################################################################
  • // La classe d'inscription
  • class Inscription {
  • // Fonction d'inscription
  • // Si l'identifiant, l'email le mot de passe un et le mot de passe deux sont poster
  • // Si les deux mot de passe sont identiques
  • // Si le pseudo n'existe pas dans la bdd
  • // Si l'email est valide
  • // Si l'email n'existe pas dans la bdd
  • // creation du profil
  • // creation de la protection des info du profil
  • // envoie du message de bienvenue
  • // Retourne Activation du profil
  • // Sinon
  • // Retourne email existe deja
  • // Sinon
  • // Retourne email non valide
  • // Sinon
  • // Retourne le pseudo existe
  • // Sinon
  • // Retourne les 2 mots de passe sont !=
  • // Sinon
  • // Retourne remplir tout les champs
  • public static function inscrire($identifiant, $email, $passeUn, $passeDe) {
  • if(!empty($identifiant) AND !empty($email) AND !empty($passeUn) AND !empty($passeDe)) {
  • if($passeUn === $passeDe) {
  • $verifIdentifiant = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.PSEUDO);
  • $verifIdentifiant -> bindParam(':identifiant', $identifiant, PDO::PARAM_STR, 50);
  • $verifIdentifiant -> execute();
  • if($verifIdentifiant -> rowCount() != 1) {
  • if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
  • $verifMail = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.EMAIL);
  • $verifMail -> bindParam(':email', $email);
  • $verifMail -> execute();
  • if($verifMail -> rowCount() != 1) {
  • Inscription::profil($identifiant, $email, $passeUn);
  • Inscription::protect($identifiant);
  • Inscription::message($identifiant);
  • $resultat = Inscription::activer($identifiant);
  • }
  • else {
  • $resultat = 'L\'adresse email '.$email.' existe d&eacute;j&agrave;,<br />veuillez en saisir une autre et recommencer l\'inscription..';
  • }
  • }
  • else {
  • $resultat = 'L\'adresse email saisi n\'est pas valide, <br />veuillez recommencer l\'inscription.';
  • }
  • }
  • else {
  • $resultat = 'L\'identifiant saisi existe d&eacute;j&agrave;,<br />veuillez en choisir un autre et recommencer l\'inscription.';
  • }
  • }
  • else {
  • $resultat = 'Le champ &quot;Saisir un Mot de Passe&quot; et le champ &quot;Resaisir un Mot de Passe&quot; doivent &ecirc;tre identiques, <br />veuillez recommencer l\'inscription.';
  • }
  • }
  • else {
  • $resultat = 'Vous devez remplir tout les champs, <br />veuillez recommencer l\'inscription.';
  • }
  • return $resultat;
  • }
  • // creation du profil
  • public static function profil($identifiant, $email, $pass) {
  • $pass = Cryptage::crypter($pass);
  • $resultat = Bdd::connectBdd()->prepare(INSERT.MEMBREZ.PROFIL);
  • $resultat -> bindParam(':pseudo', $identifiant);
  • $resultat -> bindParam(':email', $email);
  • $resultat -> bindParam(':pass', $pass);
  • $resultat -> execute();
  • }
  • // creation de la protection du profil
  • public static function protect($pseudo) {
  • $id = Membre::recupId($pseudo);
  • $resultat = Bdd::connectBdd()->prepare(INSERT.ACCESPROFILZ.INSCRIPTION);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • }
  • // creation du message de bienvenue
  • public static function message($pseudo) {
  • $id = Membre::recupId($pseudo);
  • $idexp = '2';
  • $titre = 'Bienvenue et Profil';
  • $date = time();
  • $message = 'Bienvenue dans votre espace membre<br />Pensez &agrave; mettre a jour votre profil';
  • $resultat = Bdd::connectBdd()->prepare(INSERT.MESSAGEZ.BIENVENUE);
  • $resultat -> bindParam(':id_exp', $idexp);
  • $resultat -> bindParam(':id_dest', $id);
  • $resultat -> bindParam(':titre', $titre);
  • $resultat -> bindParam(':date', $date);
  • $resultat -> bindParam(':message', $message);
  • $resultat -> execute();
  • }
  • // activation du membre
  • // recuperation de la methode d'activation du site
  • // puis activation du membre
  • public static function activer($pseudo) {
  • $activation = Bdd::connectBdd()->prepare(SELECT.ALL.ACTIVATION.METHODEACTIV);
  • $activation -> execute();
  • $methode = $activation -> fetch(PDO::FETCH_ASSOC);
  • switch($methode['id']) {
  • case 1 :
  • Activation::activationAuto($pseudo);
  • $resultat = 'Votre inscription est termin&eacute;e, vous pouvez maintenant vous connecter.<br /><a href="'.URLSITE.'/index.php">Connexion</a>';
  • break;
  • case 2 :
  • Activation::activationMail($pseudo);
  • $resultat = 'Votre inscription est termin&eacute;e, un email de confirmation viens de vous &ecirc;tre envoy&eacute;,<br />pensez a v&eacute;rifier vos spams.';
  • break;
  • case 3 :
  • $resultat = 'Votre inscription est termin&eacute;e, un administarteur ou un mod&eacute;rateur doit la valider,<br />un email de confirmation vous sera envoy&eacute; d&egrave;s que se sera effectu&eacute;,<br />pensez a v&eacute;rifier vos spams.';
  • break;
  • }
  • return $resultat;
  • }
  • } // Fin de la classe d'inscription
  • ###########################################################################################
  • // La classe connexion membre
  • class Connexion {
  • // fonction de deconnexion
  • // ecrasement des session dans un tableau
  • // destruction du tableau
  • // Si une page de redirection est choisi
  • // redirection vers la page
  • public static function deconnexion($redirection) {
  • $_SESSION = array();
  • session_destroy();
  • if(!empty($redirection)) {
  • redirection(URLSITE.'/'.$redirection);
  • }
  • }
  • // mot de passe oublier
  • // Si l'email est valide
  • // Si l'email existe dans la bdd
  • // creation d'un nouveau mot de passe
  • // enregistrement du nouveau mot de passe
  • // Si l'envoie de l'email avec nouveau mot de passe est ok
  • // retourne message d'information
  • // Sinon
  • // retourne erreur de l'envoie
  • // Sinon
  • // retourne email existe pas dans la bdd
  • // Sinon
  • // Retourne email nn valide
  • public static function passOubli($email) {
  • if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
  • $verifMail = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.EMAIL);
  • $verifMail -> bindParam(':email', $email);
  • $verifMail -> execute();
  • if($verifMail -> rowCount() !== 1) {
  • $donnee = $verifMail -> fetch(PDO::FETCH_ASSOC);
  • $newPass = Cryptage::chaine(8);
  • $cryptPass = Cryptage::crypter($newPass);
  • $enregistrePass = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJPASS.EMAIL);
  • $enregistrePass -> bindParam(':newPass', $cryptPass);
  • $enregistrePass -> bindParam(':email', $email);
  • $enregistrePass -> execute();
  • // ************************* //
  • $headers ='From: "'.$donnee['nom'].' '.$donnee['prenom'].'"'.$email.''."\n";
  • $headers .='Reply-To: '.MAILSITE.''."\n";
  • $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
  • $headers .='Content-Transfer-Encoding: 8bit';
  • $sujet = "Nouveau mot de passe pour ".NOMSITE;
  • $message = 'Bonjour '.$donnee['pseudo'].','."\n\n";
  • $message .= "Voici votre nouveau mot de passe : ".$newPass."\n\n";
  • $message .= 'Cordialement,'."\n";
  • $message .= NOM_SITE.'.'."\n";
  • if(mail(MAIL_SITE, $sujet, $message, $headers)) {
  • return 'Un nouveau mot de passe viens de vous &ecirc;tre envoy&eacute;,<br />pensez &agrave; v&eacute;rifiez vos spams.';
  • }
  • else {
  • return 'Erreur lors de l\'envoie de votre mot de passe.';
  • }
  • }
  • else {
  • return 'L\'adresse email '.$email.' n\'existe pas,<br />veuillez en saisir une autre et recommencer.';
  • }
  • }
  • else {
  • return 'L\'adresse email saisi n\'est pas valide.';
  • }
  • }
  • // fonction de connexion des membres
  • // Si verification du captcha => ok, et que l'identifiant et le mot de passe sont postes
  • // Si login existe
  • // Si mot de passe est ok
  • // Creation de la session
  • // Enregistrement du jeton de connexion
  • // Redirection vers page au choix
  • // -> membre, moderateur, administrateur
  • // Si mot de passe faux => retourne faux
  • // Si login existe pas => retourne faux
  • // Si le captcha est faux => retourne faux
  • public static function connexionCreate() {
  • if(Captcha::captchaVerif() AND !empty($_POST['login']) AND !empty($_POST['pass'])) {
  • if(Connexion::verifLogin($_POST['login'])) {
  • if(Connexion::verifPass($_POST['pass'], $_POST['login'])) {
  • $_SESSION['id'] = Membre::recupId($_POST['login']);
  • $_SESSION['jeton'] = Connexion::jeton($_POST['login']);
  • Connexion::niveau($_POST['login']);
  • }
  • else {
  • return false;
  • }
  • }
  • else {
  • return false;
  • }
  • }
  • else {
  • return false;
  • }
  • }
  • // Fonction de verification que l'identifiant existe dans la bdd
  • public static function verifLogin($login) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
  • $resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
  • $resultat -> execute();
  • if($resultat -> rowCount() === 1) {
  • return true;
  • }
  • else {
  • return false;
  • }
  • }
  • // Function de verification du mot de passe
  • public static function verifPass($pass, $login) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
  • $resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • if(Cryptage::crypter($pass) === $donnee['password']) {
  • return true;
  • }
  • else {
  • return false;
  • }
  • }
  • // La fonction de gestion des jetons de connexion lors de la connexion d'un membre
  • // Si il esiste un jeton de connexion appertenant au membre qui se connecte avec la meme adresse ip
  • // -> mise a jour de la date de connexion dans la table des jetons de connexion
  • // -> retourne le jeton
  • // Si il n'existe pas
  • // -> creation d'un jeton de connexion
  • // -> enregistrement du jeton
  • // -> retourne le jeton
  • public static function jeton($login) {
  • $id = Membre::recupId($login);
  • $ip = Ip::get_ip();
  • $date = time();
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONCONNEXION);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':ip', $ip);
  • $resultat -> execute();
  • if($resultat -> rowCount() === 1) {
  • $donnee = $resultat->fetch(PDO::FETCH_ASSOC);
  • $id = Membre::recupId($login);
  • $maj = Bdd::connectBdd()->prepare(UPDATE.JETONZ.JETONDATE.JETONMEMBRE);
  • $maj -> bindParam(':id', $id);
  • $maj -> bindParam(':date', $date);
  • $maj -> execute();
  • return $donnee['jeton'];
  • }
  • else {
  • $jeton = Cryptage::crypter(Cryptage::chaine(10));
  • $insert = Bdd::connectBdd()->prepare(INSERT.JETONZ.JETONVALUES);
  • $insert -> bindParam(':id', $id) ;
  • $insert -> bindParam(':jeton', $jeton) ;
  • $insert -> bindParam(':ip', $ip);
  • $insert -> bindParam(':date', $date);
  • $insert -> execute();
  • return $jeton;
  • }
  • }
  • // Fonction de recuperation du niveau du membre
  • // 3 possibilite -> Membre, moderateur, administrateur
  • // ****************
  • // Verification que le membre est actif
  • // Si actif -> verification du niveau du membre
  • // Redirection -> Membre, moderateur, administrateur
  • // Si banni
  • // -> redirection vers page d'information
  • // Si pas actif
  • // Recherche de la methode d'activation des membres
  • // -> activation auto -> retourne la fonction au debut
  • // -> activation par mail -> envoie le mail d'activation puis redirige vers une page d'information
  • // -> activation maunel -> redirige vers une page d'information
  • public static function niveau($login) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
  • $resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
  • $resultat -> execute();
  • $donnee = $resultat->fetch(PDO::FETCH_ASSOC);
  • if($donnee['activation'] === '1') {
  • switch($donnee['niveau']) {
  • case 1 :
  • $_SESSION['niveau'] = '1';
  • $redirect = redirection(URLSITE.'/membre/index.php');
  • break;
  • case 2 :
  • $_SESSION['niveau'] = '2';
  • $redirect = redirection(URLSITE.'/moderateur/index.php');
  • break;
  • case 3 :
  • $_SESSION['niveau'] = '3';
  • $redirect = redirection(URLSITE.'/administrateur/index.php');
  • break;
  • }
  • }
  • elseif($donnee['activation'] === '5') {
  • $redirect = redirection(URLSITE.'/banni.php');
  • }
  • else {
  • $activation = Bdd::connectBdd()->prepare(SELECT.ALL.ACTIVATION.METHODEACTIV);
  • $activation -> execute();
  • $methode = $activation->fetch(PDO::FETCH_ASSOC);
  • switch($methode['id']) {
  • case 1 :
  • Activation::activationAuto($login);
  • return Connexion::niveau($login);
  • break;
  • case 2 :
  • Activation::activationMail($login);
  • $redirect = redirection(URLSITE.'/activationMail.php');
  • break;
  • case 3 :
  • $redirect = redirection(URLSITE.'/activationAdmin.php');
  • break;
  • }
  • }
  • return $redirect;
  • }
  • } // Fin de la classe de connexion membre
  • ###########################################################################################
  • // La classe activation
  • class Activation {
  • // fonction activation automatique
  • public static function activationAuto($login) {
  • $activ = '1';
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.ACTIVMEMBRE.LOGIN);
  • $resultat -> bindParam(':login', $login);
  • $resultat -> bindParam(':activer', $activ);
  • $resultat -> execute();
  • }
  • // fonction activation par email
  • // Si un mail d'activation a deja ete envoye
  • // recuperation du jeton d'activation
  • // Sinon
  • // creation d'un jeton d'activation
  • // et enregistrement dans la bdd
  • // Si le mail est envoye
  • // retourne vrai
  • // Sinon
  • // retourne faux
  • public static function activationMail($login) {
  • $id = Membre::recupId($login);
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETONMAIL.IDMEMBRE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • if($resultat -> rowCount() === 1) {
  • $donnee = $resultat->fetch(PDO::FETCH_ASSOC);
  • $jeton = $donnee['jeton'];
  • }
  • else {
  • $jeton = Cryptage::crypter(Cryptage::chaine(10));
  • $insert = Bdd::connectBdd()->prepare(INSERT.JETONMAILZ.JETONMAILVALUES);
  • $insert -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $insert -> bindParam(':jeton', $jeton);
  • $insert -> execute();
  • }
  • if(Activation::activationEnvoiMail($login, $jeton)) {
  • return true;
  • }
  • else {
  • return false;
  • }
  • }
  • // envoie du mail d'activation
  • public static function activationEnvoiMail($login, $jeton) {
  • $headers ='From: "'.Membre::info($login, 'nom').' '.Membre::info($login, 'prenom').'"'.Membre::info($login, 'email').''."\n";
  • $headers .='Reply-To: '.MAILSITE.''."\n";
  • $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
  • $headers .='Content-Transfer-Encoding: 8bit';
  • $sujet = "Activation de l'espace membre ".NOMSITE;
  • $message = 'Bonjour '.Membre::info($login, 'pseudo').','."\n\n";
  • $message .= "Voici votre lien d'activation pour l'espace membre ".NOMSITE." : ".URLSITE."activation.php?securite=".$jeton.". ";
  • $message .= 'Cliquez sur ce lien ou copier-le et coller-le dans votre navigateur.'."\n\n\n";
  • $message .= 'Cordialement,'."\n";
  • $message .= NOM_SITE.'.'."\n";
  • mail(MAIL_SITE, $sujet, $message, $headers);
  • }
  • // verification du jeton d'activation
  • public static function activationVerife($jeton) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETONMAIL.JETONACTIVATION);
  • $resultat -> bindParam(':jeton', $jeton);
  • $resultat -> execute();
  • if($resultat -> rowCount() === 1) {
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • Activation::activationAuto($donnee['login']);
  • return true;
  • }
  • else {
  • return false;
  • }
  • }
  • } // Fin de la classe d'activation
  • ###########################################################################################
  • // La classe de protection des espaces -> membre, moderateur et administrateur
  • class ProtectEspace {
  • // protection de l'espace membre
  • // Verification que les parametres de sessions existent
  • // $id => $_session['id']
  • // $captcha => $_session['captcha']
  • // $jeton=> $_session['jeton']
  • // $niveau => $_session['niveau']
  • // verification que le niveau n'est pas different de 1
  • // Si il y a une erreur
  • // redirection vers la page de deconnexion
  • // Sinon
  • // Verification que le jeton de connexion appartient bien au membre connecte
  • // Si ce n'est pas le cas
  • // redirection vers la deconnexion
  • // Sinon
  • // Si le membre est banni
  • // Redirection vers la page d'information de bannissement
  • // Sinon
  • // Retourne Vrai
  • public static function membre($id, $captcha, $jeton, $niveau) {
  • if(empty($id) OR empty($captcha) OR empty($jeton)) {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • else {
  • if($niveau !== '1') {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONSESSION);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':jeton', $jeton);
  • $resultat -> execute();
  • if($resultat -> rowCount() !== 1) {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • else {
  • if(Membre::info($id, 'activation') === '5') {
  • redirection(URLSITE.'/banni.php');
  • }
  • return true;
  • }
  • }
  • }
  • // protection de l'espace moderateur
  • // Verification que les parametres de sessions existent
  • // $id => $_session['id']
  • // $captcha => $_session['captcha']
  • // $jeton=> $_session['jeton']
  • // $niveau => $_session['niveau']
  • // verification que le niveau n'est pas different de 2
  • // Si il y a une erreur
  • // redirection vers la page de deconnexion
  • // Sinon
  • // Verification que le jeton de connexion appartient bien au moderateur connecte
  • // Si ce n'est pas le cas
  • // redirection vers la deconnexion
  • // Sinon
  • // Si le membre est banni
  • // Redirection vers la page d'information de bannissement
  • // Sinon
  • // Retourne Vrai
  • public static function moderateur($id, $captcha, $jeton, $niveau) {
  • if(empty($id) OR empty($captcha) OR empty($jeton)) {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • else {
  • if($niveau !== '2') {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONSESSION);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':jeton', $jeton);
  • $resultat -> execute();
  • if($resultat -> rowCount() !== 1) {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • else {
  • if(Membre::info($id, 'activation') === '5') {
  • redirection(URLSITE.'/banni.php');
  • }
  • return true;
  • }
  • }
  • }
  • // protection de l'espace administrateur
  • // Verification que les parametres de sessions existent
  • // $id => $_session['id']
  • // $captcha => $_session['captcha']
  • // $jeton=> $_session['jeton']
  • // $niveau => $_session['niveau']
  • // verification que le niveau n'est pas different de 3
  • // Si il y a une erreur
  • // redirection vers la page de deconnexion
  • // Sinon
  • // Verification que le jeton de connexion appartient bien a l'administrateur connecte
  • // Si ce n'est pas le cas
  • // redirection vers la deconnexion
  • // Sinon
  • // Si le membre est banni
  • // Redirection vers la page d'information de bannissement
  • // Sinon
  • // Retourne Vrai
  • public static function administrateur($id, $captcha, $jeton, $niveau) {
  • if(empty($id) OR empty($captcha) OR empty($jeton)) {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • else {
  • if($niveau !== '3') {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONSESSION);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':jeton', $jeton);
  • $resultat -> execute();
  • if($resultat -> rowCount() !== 1) {
  • redirection(URLSITE.'/deconnexion.php');
  • }
  • else {
  • if(Membre::info($id, 'activation') === '5') {
  • redirection(URLSITE.'/banni.php');
  • }
  • return true;
  • }
  • }
  • }
  • // compte le nombre de jeton de connexion pour le membre
  • public static function compteJeton($id) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONMEMBRE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • return '<a href="listeJeton.php">Il y a '.$resultat -> rowCount().' adresse(s) ip qui se connecte(nt) &agrave; votre espace membre.</a>';
  • }
  • // Liste des jeton de connexion du membre
  • public static function listeJeton($id) {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONMEMBRE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • while($jeton = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $liste .= '<tr>
  • <td align="center">Le '.date('d/m/Y', $jeton['date']).' &agrave; '.date('H:i:s', $jeton['date']).'</td>
  • <td align="center">'.$jeton['ip_connexion'].'</td>
  • <td align="center">
  • <form method="post" action="">
  • <input type="hidden" value="'.$jeton['id'].'" name="id_jeton">
  • <input type="submit" value="Supprimer" name="supprime_connexion" class="input" />
  • </form>
  • </td>
  • </tr>';
  • }
  • return $liste;
  • }
  • // effacer un jeton de connexion
  • public static function deleteJeton($id) {
  • $resultat = Bdd::connectBdd()->prepare(DELETE.JETON.ID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • }
  • }
  • ###########################################################################################
  • // La classe Membre
  • class Membre {
  • //Fonction de recuperation de l'id d'un membre
  • public static function recupId($login) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
  • $resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • return $donnee['id'];
  • }
  • // Fonction de recuperation des infos membre
  • // $id => id du membre
  • // $info => information qu l'on veux
  • public static function info($id, $info) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.ID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • $infoMembre = $resultat -> fetch(PDO::FETCH_ASSOC);
  • return $infoMembre[$info];
  • }
  • // protection affichage information membre
  • public static function protectInfo($id, $info) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACCESPROFIL.IDMEMBRE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • if($donnee[$info] === '1') {
  • $affiche = Membre::info($id, $info);
  • }
  • else {
  • $affiche = 'Non disponible';
  • }
  • return $affiche;
  • }
  • // changer autorisation d'une information du profil
  • // deux choix :
  • // -> Rendre visible aux autres membres
  • // -> Cacher l'information aux autres membres
  • // ***************************
  • public static function profilVisibilite($id, $info) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACCESPROFIL.IDMEMBRE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • if($donnee[$info] === '1') {
  • $maj = '0';
  • }
  • else {
  • $maj = '1';
  • }
  • $update = Bdd::connectBdd()->prepare(UPDATE.ACCESPROFILZ.' SET '.$info.MAJACCESPROFIL.IDMEMBRE);
  • $update -> bindParam(':maj', $maj);
  • $update -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $update -> execute();
  • redirection('profil.php');
  • }
  • // visibilite d'une information d'un membre
  • public static function visibilite($id, $info) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACCESPROFIL.IDMEMBRE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • if($donnee[$info] === '1') {
  • return 'Cacher';
  • }
  • else {
  • return 'Rendre Visible';
  • }
  • }
  • // Mise a jour du profil du membre
  • public static function majProfil($id, $naissance, $genre, $nom, $prenom, $email, $facebook, $twister, $site, $tel, $adresse, $cp, $ville, $mailing, $description) {
  • $description = filter_var($description, FILTER_SANITIZE_STRING);
  • $description = nl2br($description);
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJPROFIL);
  • $resultat -> bindParam(':email', $email);
  • $resultat -> bindParam(':tel', $tel);
  • $resultat -> bindParam(':adresse', $adresse);
  • $resultat -> bindParam(':cp', $cp);
  • $resultat -> bindParam(':ville', $ville);
  • $resultat -> bindParam(':genre', $genre);
  • $resultat -> bindParam(':naissance', $naissance);
  • $resultat -> bindParam(':nom', $nom);
  • $resultat -> bindParam(':prenom', $prenom);
  • $resultat -> bindParam(':facebook', $facebook);
  • $resultat -> bindParam(':twister', $twister);
  • $resultat -> bindParam(':site', $site);
  • $resultat -> bindParam(':description', $description);
  • $resultat -> bindParam(':mailing', $mailing);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • redirection('profil.php');
  • }
  • // changer de mot de passe
  • public static function newPass($id, $passActuel, $newPassUn, $newPassDe) {
  • if(!empty($passActuel) AND !empty($newPassUn) AND !empty($newPassDe)) {
  • if($newPassUn === $newPassDe) {
  • $verifPass = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.ID);
  • $verifPass -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $verifPass -> execute();
  • $dataPass = $verifPass -> fetch(PDO::FETCH_ASSOC);
  • if($dataPass['password'] === Cryptage::crypter($passActuel)) {
  • $newPass = Cryptage::crypter($newPassUn);
  • $majPass = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJPASS.ID);
  • $majPass -> bindParam(':newPass', $newPass);
  • $majPass -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • if($majPass -> execute()) {
  • $resultat = 'Votre mot de passe a &eacute;t&eacute; chang&eacute; avec succ&egrave;s.';
  • }
  • else {
  • $resultat = 'Une erreur est survenue pendant la mise &agrave; jour de votre mot de passe.';
  • }
  • }
  • else {
  • $resultat = 'Vous n\'avez pas saisi correctement votre mot de passe actuel,<br />veuillez recommencer.';
  • }
  • }
  • else {
  • $resultat = 'Les champs &quot;Votre nouveau mot de passe&quot; et &quot;Saisir &agrave; nouveau le mot de passe&quot; doivent &ecirc;tre identiques,<br />veuillez recommencer.';
  • }
  • }
  • else {
  • $resultat = 'Pour changer de mot de passe vous devez remplir tout les champs,<br />veuillez recommencer.';
  • }
  • return $resultat;
  • }
  • } // Fin de la classe Membre
  • ###########################################################################################
  • // La classe Message
  • class Message {
  • // Verification que le message envoye ne contient pas de mots interdits
  • // Mots interdits -> insultes et language sms
  • // si le message ne contient pas de mots interdit
  • // retourne vrai
  • // sinon
  • // retourne faux
  • public static function interdit($message) {
  • // Liste des 899 mots interdits dans l'espace membre
  • // -> insultes
  • // -> language SMS
  • // Vous pouvez allonger cette liste en mettant ( | ) sans espace entre chaque mot interdit
  • $motInterdit = "/\b(anus|baise|baisee|baisent|baiser|baises|baisé|baisée|baisées|baisés|baiz|bande de tâches|bander|barez-vous|barrez-vous-batard|batarde|batardes|batards|bite|bites|bitte|bittes|bondage|bondages|bonnasse|bonnasses|bordel|bordels|branle|branler|branles|branlette|branlettes|branlé|branlés|bâtard|bâtarde|bâtardes|bâtards|bèz|c o n|c o*n|c o^n|c*o n|c*o*n|c*on|c^o n|c^o^n|caca|cacas|casse-toi|cassez-vous|chatte|chiasse|chie|chient|chier|chié|chiées|chiés|clitau|clito|co n|co*n|cocu|cocus|con|con nard|con nards|conar|conard|conarde|conardes|conards|conasse|conasses|connar|connard|connarde|connardes|connards|connasse|connasses|conne|Connerie|Conneries|connes|cons|couille|couilles|couye|couyes|creve|crève|cul|culs|cuni|cunilingus|de ta mer|de ta mere|de ta mèr|de ta mère|debil|debile|debiles|débil|débile|débiles|echangisme|emerde|emerdent|emerder|emerdeur|emerdeurs|emerdeuse|emerdeuses|emerdé|emerdée|emerdés|emmerde|emmerdent|emmerder|emmerdeur|emmerdeurs|emmerdeuse|emmerdeuses|emmerdé|emmerdée|emmerdés|en cul|en cule|en culer|en cules|encule|enculer|encules|enculé|enculés|enfoiré|enfoirée|enfoirées|enfoirés|et ta mere|et ta mère|exta|f o ck|f o k|F U C K|f u ck|f.uck|f_u_c_k|faire mettre|fcuk|fcvk|fela tion|felation|fella tion|fellation|fI_Ick|fl_lck|fo ck|foc k|fock|foutoir|foutoire|foutre|foutrement|fu c k|fu ck|fu.ck|fuc|fuc.k|FUCK|fuk|fuque|fuuck|fuuuck|fuuuuck|fuuuuuck|fvck|féla tion|féla tions|félation|félations|gouine|gouines|gouinne|gouinnes|groniasse|groniasses|k o n|k o*n|k o^n|k o_n|k*o n|k*o*n|k*on|k^o n|k^o^n|k_o n|k_o_n|ko n|ko*n|kon|konasse|konasses|konnasse|konnasses|kons|Lesbien|Lesbiene|Lesbienes|lesbienne|Lesbiens|Lesbo|Lesbos|maso|masturbator|masturbe|masturber|masturbé|masturbée|masturbées|masturbés|meeerdes|meeerdeux|meerdes|meerdeux|merdes|merdeux|morveuse|morveuses|morveux|nasi|nasis|nazi|nazis|negre|negres|negrillon|negrillons|negro|negros|nibard|nibards|nichon|nichons|nik|nike|nique|niquer|niqué|niquée|niquées|niqués|negre|negres|negro|negros|negresse|négresse|nègre|nègres|négrillon|négrillons|négro|négros|ordure|ordures|p u t a i n|p u t a i n s|partouse|partouses|partouze|partouzes|pd|pdd|pddd|pdddd|pddddd|pdddddd|pddddddd|pds|pedale|pedales|pede|pederaste|pederastes|pedes|penis|pennis|petasse|petasses|phuck|pignouf|pignoufette|pi|noufettes|pignoufs|pisse|pissee|pissees|pisser|pisses|pissé|pissée|pissées|pissés|plouc|ploucs|plouk|plouks|porno|pornos|pouffiass|pouffiasse|pouffiasses|poufiasse|pouf­fiass|pouf­fiasse|pouf­fiasses|Prostitue|Prostituee|Prostituees|Prostitues|Prostitué|Prostituée|Prostituées|Prostitués|prout|put|put ain|put ains|put in|put ins|put1|putain|putains|pute|putes|putin|putins|putte|puttes|puttin|puttins|pédale|pédales|pédé|pédéraste|pédérastes|pédés|pénétration|pétasse|pétasses|s e x|s e x e|s e x*e|s e xe|s e*x|s ex|s ex e|s ex*e|s exe|sado|salau|salaud|salauds|salaus|salaut|salauts|sale arabe|sallo|sallop|sallopard|sallopards|sallope|sallopes|salloppard|salloppards|salloppe|salloppes|sallos|sallot|sallots|salo|salop|salopard|salopards|salope|salopes|saloppard|saloppards|saloppe|saloppes|salos|salot|salots|se x|se*x|sex|sex e|sex*e|sexe|shit|skinhead|sodomie|sodomise|sodomisee|sodomisees|sodomisent|sodomiser|sodomises|sodomisé|sodomisée|sodomisées|sodomisés|sperm|sperme|spermes|suce|suck|tete de noeud|tetes de noeud|tête de noeud|têtes de noeud|va te faire|va te fer|va te fere|va te fèr|va te fère|vagin|vagins|zizi|zizis|1e|1st|1dispo|1posibl|1diféren|1trec|1ternet|1vit|1mn|2min|2ri1|2l8|2labal|2m1|2mand|2van|2vanc|4me|5pa|6gar|6garet|6né|6nema|6T|7adir|7ad|10ko|ab1to|akro|a2m1|af'r|afr|aJ|aG|éD|alé|AR|aPero|a+|apré|aprè|aprem|aprè-mi10|apré-mi10|areT|ariv|a12c4|asap|avan|avanC|ayé|abiT|azar|aniv|aK|aps|avc|avk|azar|AL1DI|ard|admin|ADMIN|ATK|arf|balaD|bavar|bavarD|bi1|bi1sur|bi1to|bizz|bap|bsr|boC|blèm|B|b1|bc|Bdo|BG|bj|bocou|bogos|bye|cé|cad|c b1|c sa|c cho|c 2 labal|c mal1|CT|chanG|capou|chuis|chanmé|CriE|C|camé|cam|came|Cdla|celib|celibatR|chi1|Clib|cok1|cokin|cokine|cok1e|colR|comen|dico|cc|colok|condé|dak|danC|ds|D6D|DpenC|dê|dS100|DzSPré|Dzolé|dsl|DtST|diskuT|douT|d1gue|daron|D|daronne|darone|deuspi|dico|die|DEF|écouT|empr1T|enfR|en+|épaT|éxagR|exClen|exQzé|exiG|éziT|Er|E|enkor|entouK|entouka|epaT|ErE|ErEze|fRfet|fiR|meuf|fliP|francè|FR|frR|fr8|foto|FM|FMloJ|F|fb|frero|foo|fliKé|flik|fone|fonetel|gan|Gen|Gnial|gré|glnD|GraV|G la N|GPTléplon|G|gova|gater6|gd|gde|Gnial|grav|gro|Gséré|GG|HT|H|hard|hl|IR|isTrik|ID|ImaJn|I|ie|irl|jalou|jamé|j'le sav|jenémar|jSpR ktu va bi1|jtm|je t'M|j'tapLdkej'pe|jeteléDjadi|jT|jr|JuG|J|jaten|jme|jsai|jsui|jtem|jtaim|Kdo|keum|Kfar|Kfé|Kl1|Knon|Kc|klR|koQ|kEr|komanD|Kom|komencava|koncR|kontST|kruL|karaT|ke|kL|kLq1|kelkun|keske|keske C|kekina|kestion|ki|kil|koi|koa|kwa|koi29|K|KS|kisdé|kif|jtkif|k7|kan|Ksos|LcKc|lol|l1di|lakL|lekL|l8|lH|l'S tomB|LC|L|LVL|ll|mek|magaz1|m1tNan|mnt|mè|kaze|malad|mal1|manG|mat1|max|mm|ménaG|mR|mê|msg|mne|m jvb|MDR|moy1|muscQ|muscu|muzik|muzic|M|m'man|MP|msg|ml|NRV|néCsR|nRvE|nc|no|nb|nombrE|nouvL|nouvo|NRJ|N|news|ns|ok1|oQne|Ojourd8|ojourd'8|ouf|orEr|otL|OQP|Ô|oZ|ouvR|O|oci|oreur|ou1j|ouinj|OMG|partut|partt|paC|péyé|pRturB|pE|piG|poa|po1|poz|pr|pk|prtan|prtant|preC|pb|P|p'pa|ptdr|POULAGA|PANAM|PANAME|poto|pr|ppr|pti|ptite|plon|qoa|qd|quiT|Q|QG|reuch|remps|rapl|ra|rejo1|rdv|répt|rstp|rep|resto|retard|réu|réucir|ri1|rafr|ras|ru|r|reuf|savapa|sniiif|snif|slt|slt cav ?|savoar|semN|stp|sk8|seur|spor|strC|S|sked|SKEUD|tR|tarD|tps|Tê|ti2|tle +bo|tpa fâché|TT|tabitou|2day|tjr|tt|tr1|trankil|taf|tafer|tu vi1 2m1 ?|T|Tci|tsss|ts|utilizé|U|vazi|Vlo|vR|vi1|vs|VoyaG|vrMen|V|VIP|W|WE|W.E|wesh|WTF|wé|wi|wy|X|X-trem|Xtrem|xpldr|Xcité|Xcit|xd|xplorer|xplozé|xploz|xplor|yo|y|é|ye|yè|ya|yâ|Z|zN|ziva|zonmé)\b/ui";
  • $message = str_replace("'", "", $message);
  • if(strstr($motInterdit, $message)) {
  • return false;
  • }
  • else {
  • return true;
  • }
  • }
  • // nombre de nouveau message du membre connecte
  • public static function nouveauNb($id) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.NBNEW);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • if($resultat -> rowCount() === 0) {
  • return 'Vous n\'avez aucun nouveau message';
  • }
  • else {
  • return 'Vous avez '.$resultat -> rowCount().' nouveau(x) message(s).';
  • }
  • }
  • // liste des messages du membre
  • // liste a vide
  • // recherche des messages adresses au membre connecte et non efface par le membre
  • // Dans une boucle
  • // Si le message est deja lu
  • // image lu
  • // Sinon
  • // image non lu
  • // **********************
  • // affichage du ou des messages
  • // Fin de la boucle
  • // **********************
  • // si la liste n'est pas vide
  • // retourne la liste des messages
  • // Sinon
  • // retourne vous n'avez aucun message
  • public static function liste($id) {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.MESSAGELISTE);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • if($donnee['lu'] === '1') {
  • $image = '<img src="'.URLSITE.'/design/image/Lu.png" width="24" height="24" align="absmiddle">';
  • }
  • else {
  • $image = '<img src="'.URLSITE.'/design/image/Non_Lu.png" width="24" height="24" align="absmiddle">';
  • }
  • $liste .= '<tr>
  • <td>'.$image.'</td>
  • <td align="center">Le '.date('d/m/Y', $donnee['timestamp']).' &agrave; '.date('H:i:s', $donnee['timestamp']).'</td>
  • <td align="center"><a href="profil_membre.php?id='.$donnee['id_expediteur'].'">'.Membre::info($donnee['id_expediteur'], 'pseudo').'</a></td>
  • <td align="center"><a href="message.php?id='.$donnee['id'].'">'.$donnee['titre'].'</a></td>
  • </tr>';
  • }
  • if(!empty($liste)) {
  • return $liste;
  • }
  • else {
  • return '<tr><td align="center" colspan="4">Vous n\'avez aucun message</td></tr>';
  • }
  • }
  • // Affiche le message recut
  • public static function info($id, $info) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.ID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • return $donnee[$info];
  • }
  • // message lu
  • public static function lu($id) {
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MESSAGEZ.LU.ID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • }
  • // efface message
  • public static function efface($id) {
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MESSAGEZ.EFFACE.ID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • }
  • // envoie d'un message
  • // Si le destinataire et ok
  • // Si le titre est ok
  • // Si le message est ok
  • // Si le message et le titre ne contiennent pas des mots interdits
  • // Nettoyage du message et du titre
  • // Enregistrement dans la bdd
  • // retourne Vrai
  • // Sinon
  • // retourne une erreur
  • // Sinon
  • // retourne une erreur
  • // Sinon
  • // retourne une erreur
  • // Sinon
  • // retourne une erreur
  • public static function messageEnvoi($id_exp, $destinataire, $titre, $message) {
  • if(!empty($destinataire)) {
  • if(!empty($titre)) {
  • if(!empty($message)) {
  • if(Message::interdit($message)) {
  • $message = nl2br(filter_var($message, FILTER_SANITIZE_STRING));
  • $titre = filter_var($titre, FILTER_SANITIZE_STRING);
  • $date = time();
  • $resultat = Bdd::connectBdd()->prepare(INSERT.MESSAGEZ.MESSAGEINSERT);
  • $resultat -> bindParam(':id_exp', $id_exp, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':id_dest', $destinataire, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':titre', $titre);
  • $resultat -> bindParam(':date', $date);
  • $resultat -> bindParam(':message', $message);
  • $resultat -> execute();
  • return 'Votre message est envoy&eacute;';
  • }
  • else {
  • return 'Votre message ou votre titre contient du language SMS ou des mots interdits, veuillez recommencer.<br />'.$message;
  • }
  • }
  • else {
  • return 'Vous devez saisir un message.';
  • }
  • }
  • else {
  • return 'Vous devez saisir un titre au message.';
  • }
  • }
  • else {
  • return 'Vous devez choisir un destinataire.';
  • }
  • }
  • // Message a tous les membres
  • public static function messageAll($titre, $message) {
  • if(!empty($titre)) {
  • if(!empty($message)) {
  • $id = '2';
  • $all = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.NOID);
  • $all -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $all -> execute();
  • $message = nl2br(filter_var($message, FILTER_SANITIZE_STRING));
  • $titre = filter_var($titre, FILTER_SANITIZE_STRING);
  • $date = time();
  • $id_exp = '2';
  • while($tous = $all -> fetch(PDO::FETCH_ASSOC)) {
  • $destinataire = $tous['id'];
  • $resultat = Bdd::connectBdd()->prepare(INSERT.MESSAGEZ.MESSAGEINSERT);
  • $resultat -> bindParam(':id_exp', $id_exp, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':id_dest', $destinataire, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':titre', $titre);
  • $resultat -> bindParam(':date', $date);
  • $resultat -> bindParam(':message', $message);
  • $resultat -> execute();
  • }
  • return 'Votre message est envoy&eacute;';
  • }
  • else {
  • return 'Vous devez saisir un message.';
  • }
  • }
  • else {
  • return 'Vous devez saisir un titre au message.';
  • }
  • }
  • // liste des messages envoyes
  • public static function listeEnvoi($id) {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.IDEXP);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • if($donnee['lu']==1) {
  • $image = '<img src="'.URLSITE.'/design/image/Lu.png" width="24" height="24" align="absmiddle">';
  • }
  • else {
  • $image = '<img src="'.URLSITE.'/design/image/Non_Lu.png" width="24" height="24" align="absmiddle">';
  • }
  • if($donnee['effacer']==1) {
  • $image = '<img src="'.URLSITE.'/design/image/faux.png" width="24" height="24" align="absmiddle">';
  • }
  • $liste .= '<tr>
  • <td>'.$image.'</td>
  • <td align="center">Le '.date('d/m/Y', $donnee['timestamp']).' &agrave; '.date('H:i:s', $donnee['timestamp']).'</td>
  • <td align="center"><a href="profil_membre.php?id='.$donnee['id_destinataire'].'">'.Membre::info($donnee['id_destinataire'], 'pseudo').'</a></td>
  • <td align="center">'.$donnee['titre'].'</td>
  • </tr>';
  • }
  • if(!empty($liste)) {
  • return $liste;
  • }
  • else {
  • return '<tr><td align="center" colspan="4">Vous n\'avez pas envoy&eacute; de message</td></tr>';
  • }
  • }
  • // liste des destinataires possible pour nouveau message
  • public static function choixDestinataire($id) {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.NOID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $liste .= '<option value="'.$donnee['id'].'">'.$donnee['pseudo'].'</option>';
  • }
  • return $liste;
  • }
  • } // Fin de la classe message
  • ###########################################################################################
  • // la classe smiley
  • class Smiley {
  • // Affiche la liste des smileys
  • public static function liste() {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.SMILEY);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $liste .= '<a href="javascript:void(0);" onClick="smiley(\'S'.$donnee['id'].'S\');"><img src="'.URLSITE.'/'.$donnee['url'].'" width="32" height="32" /></a>';
  • }
  • return $liste;
  • }
  • // Affiche les smileys dans le message
  • public static function affiche($text) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.SMILEY);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $text = str_replace($donnee['bbcode'], '<img src="'.URLSITE.'/'.$donnee['url'].'" width="32" height="32" align="absmiddle" />', $text);
  • }
  • return $text;
  • }
  • } // Fin de la classe smiley
  • ###########################################################################################
  • // La classe Avatar
  • class Avatar {
  • // affiche l'avatar du membre
  • public static function membre($id) {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.AVATAR.ID);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • $donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
  • return $donnee['url'];
  • }
  • // liste des avatars
  • public static function liste() {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.AVATAR);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $liste .= '<div id="avatar"><img src="'.URLSITE.'/'.$donnee['url'].'" width="120" height="120" alt="Avatar" title="Avatar"><br /><input type="radio" value="'.$donnee['id'].'" name="id_avatar"></div>';
  • }
  • return $liste;
  • }
  • // mise a jour avatar
  • public static function maj($id, $id_avatar) {
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJAVATAR.ID);
  • $resultat -> bindParam(':idAvatar', $id_avatar, PDO::PARAM_INT, 11);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • redirection('profil.php');
  • }
  • } // Fin de la classe Avatar
  • ###########################################################################################
  • // La classe Info sur le site
  • class InfoSite {
  • // Nombre de membres
  • public static function membreNb() {
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE);
  • $resultat -> execute();
  • if($resultat -> rowCount() === 0) {
  • return 'Il y a aucun membre inscrit';
  • }
  • else {
  • return 'Il y a '.$resultat -> rowCount().' membres inscrits';
  • }
  • }
  • // Liste des activations possible
  • public static function listeActivation() {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACTIVATION);
  • $resultat -> execute();
  • while($option = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • if($option['activation'] === '1') {
  • $liste .= '<option value="'.$option['id'].'" selected="selected">'.$option['mode'].'</option>';
  • }
  • else {
  • $liste .= '<option value="'.$option['id'].'">'.$option['mode'].'</option>';
  • }
  • }
  • return $liste;
  • }
  • // changer le mode d'activation
  • public static function activationChange($id) {
  • $activ = '1';
  • $oui = Bdd::connectBdd()->prepare(UPDATE.ACTIVATIONZ.CHANGEMETOD.ID);
  • $oui -> bindParam(':activ', $activ);
  • $oui -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • if($oui -> execute()) {
  • $desac = '0';
  • $non = Bdd::connectBdd()->prepare(UPDATE.ACTIVATIONZ.CHANGEMETOD.NOI);
  • $non -> bindParam(':activ', $desac);
  • $non -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $non -> execute();
  • }
  • redirection(URLSITE.'/administrateur/activation.php');
  • }
  • // Liste des membres pour les administrateurs
  • public static function listeMembre($id) {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.' ORDER BY activation ASC');
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $idMembre = $donnee['id'];
  • $pseudo = $donnee['pseudo'];
  • if($donnee['activation'] === '5') {
  • $niveau = 'Banni';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="debannir" value="D&eacute;bannir" class="input"> <input type="submit" name="supprim" value="Supprimer" class="input">';
  • }
  • elseif($donnee['activation'] === '0') {
  • $niveau = 'Nouvel(le) inscrit(e)';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"><input type="submit" name="inscription" value="Valider l\'inscription" class="input">';
  • }
  • else {
  • switch($donnee['niveau']) {
  • case 1 :
  • $niveau = 'Membre';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="input"> <input type="submit" name="moderateur" value="Passer Mod&eacute;rateur" class="input">';
  • break;
  • case 2 :
  • $niveau = 'Mod&eacute;rateur';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="input"> <input type="submit" name="membre" value="Repasser Membre" class="input">';
  • break;
  • case 3 :
  • $niveau = 'Administrateur';
  • $action = '';
  • break;
  • case 4 :
  • $niveau = 'Cr&eacute;ateur';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="supprim" value="Supprimer" class="input">';
  • break;
  • }
  • }
  • $liste .= '<tr>
  • <td align="center"><a href="profil_membre.php?id='.$idMembre.'">'.$pseudo.'</a></td>
  • <td align="center">'.$niveau.'</td>
  • <td align="center"><form action="" method="post">'.$action.'</form></td>
  • </tr>';
  • }
  • return $liste;
  • }
  • // Liste des membres pour les moderateurs
  • public static function listeMembreModo($id) {
  • $liste = '';
  • $resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.' ORDER BY activation ASC');
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
  • $idMembre = $donnee['id'];
  • $pseudo = $donnee['pseudo'];
  • if($donnee['activation'] === '5') {
  • $niveau = 'Banni';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="debannir" value="D&eacute;bannir" class="input">';
  • }
  • elseif($donnee['activation'] === '0') {
  • $niveau = 'Nouvel(le) inscrit(e)';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"><input type="submit" name="inscription" value="Valider l\'inscription" class="input">';
  • }
  • else {
  • switch($donnee['niveau']) {
  • case 1 :
  • $niveau = 'Membre';
  • $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="input">';
  • break;
  • case 2 :
  • $niveau = 'Mod&eacute;rateur';
  • $action = '';
  • break;
  • case 3 :
  • $niveau = 'Administrateur';
  • $action = '';
  • break;
  • case 4 :
  • $niveau = 'Cr&eacute;ateur';
  • $action = '';
  • break;
  • }
  • }
  • $liste .= '<tr>
  • <td align="center"><a href="profil_membre.php?id='.$idMembre.'">'.$pseudo.'</a></td>
  • <td align="center">'.$niveau.'</td>
  • <td align="center"><form action="" method="post">'.$action.'</form></td>
  • </tr>';
  • }
  • return $liste;
  • }
  • } // Fin de la classe Info sur le site
  • ###########################################################################################
  • // La classe administrateur
  • class Admin {
  • // bannir un membre
  • public static function bannir($id, $messagePost) {
  • $activ = '5';
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.ACTIVMEMBRE.ID);
  • $resultat -> bindParam(':activer', $activ);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • // ******************* //
  • $headers ='From: "'.Membre::info($login, 'nom').' '.Membre::info($login, 'prenom').'"'.Membre::info($login, 'email').''."\n";
  • $headers .='Reply-To: '.MAILSITE.''."\n";
  • $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
  • $headers .='Content-Transfer-Encoding: 8bit';
  • $sujet = "Bannissement l'espace membre ".NOMSITE;
  • $message = 'Bonjour '.Membre::info($login, 'pseudo').','."\n\n";
  • $message .= 'L\'administarteur du site '.NOMSITE.' vous a banni de l\'espace membre.'."\n\n";
  • $message .= 'Voici la raison : '."\n";
  • $message .= $messagePost."\n";
  • $message .= 'Cordialement,'."\n";
  • $message .= NOM_SITE.'.'."\n";
  • mail(MAIL_SITE, $sujet, $message, $headers);
  • // ******************* //
  • redirection(URLSITE.'/administrateur/listeMembre.php');
  • }
  • // debannir un membre
  • public static function debannir($id) {
  • $activ = '1';
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.ACTIVMEMBRE.ID);
  • $resultat -> bindParam(':activer', $activ);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • redirection(URLSITE.'/administrateur/listeMembre.php');
  • }
  • // Passer un membre -> moderateur
  • public static function passeModo($id) {
  • $niveau = '2';
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.NIVEAU.ID);
  • $resultat -> bindParam(':niveau', $niveau);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • redirection(URLSITE.'/administrateur/listeMembre.php');
  • }
  • // passer un moderateur -> membre
  • public static function passeMembre($id) {
  • $niveau = '1';
  • $resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.NIVEAU.ID);
  • $resultat -> bindParam(':niveau', $niveau);
  • $resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
  • $resultat -> execute();
  • redirection(URLSITE.'/administrateur/listeMembre.php');
  • }
  • } // Fin de la classe administrateur
  • ?>
<?php 
include('define.php');

// La fonction de redirection de base
function redirection($url, $time=0) {
	if (!headers_sent()) {
		header("refresh: $time;url=$url"); 
		exit;
	}
	else {
		echo '<meta http-equiv="refresh" content="',$time,';url=',$url,'">';
	}
}

// La classe de connexion a la bdd
class Bdd {
	private static $connexion = NULL;
	
	public static function connectBdd() {
		if(!self::$connexion) {
			self::$connexion = new PDO(DNS, USER, PASS);
			self::$connexion -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		}
		return self::$connexion;
	}
	
} // Fin de la classe de connexion a la bdd

###########################################################################################

// La classe de recuperation de l'ip visiteur
class Ip {
	// function recuperation ip
	public static function get_ip() { 
		if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
			$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
		} 
		elseif(isset($_SERVER['HTTP_CLIENT_IP'])) { 
			$ip = $_SERVER['HTTP_CLIENT_IP'];
		} 
		else { 
			$ip = $_SERVER['REMOTE_ADDR'];
		} 
		return $ip;
	}
} // Fin de la classe de recuperation de l'ip visiteur

###########################################################################################

// La classe de cryptage
class Cryptage {
	
	// Fonction de cryptage
	public static function crypter($var) {
		$sel = "48@tiOP";
		$Cript = md5($var);
		$crypt = sha1($Cript, $sel);
		return $crypt;
	}
	// creation d'une chaine aleatoire
	public static function chaine($nb_car, $chaine='AZERTYUIOPQSDFGHJKLMWXCVBNazertyuiopqsdfghjklmwxcvbn123456789') {
		$nb_lettres = strlen($chaine)-1;
		$generation = '';
		for($i=0; $i < $nb_car; $i++)
		{
			$pos = mt_rand(0, $nb_lettres);
			$car = $chaine[$pos];
			$generation .= $car;
		}
		return $generation;
	}
	
} // Fin de la classe de cryptage

###########################################################################################

// La classe captcha
class Captcha {
	
	// Fonction de creation d'un captcha
	// $a => chiffre entre 1 et 5
	// $b => chiffre entre 1 et 5
	// $resultat => le resultat de l'operation
	// $phrase => le texte du captcha
	// Retourne un tableau contenant la phrase et le resultat du captcha
	public static function captchaCreate() {
		$a = rand(1, 5);
		$b = rand(1, 5);
		$resultat = $a + $b;
		$phrase = 'Combien font '.$a.' + '.$b.' : ';
		return array($resultat, $phrase);
	}
	// Fonction d'envoie du captcha
	// Creation d'une session contenant le resultat du captcha
	// Retourne la phrase du captcha
	public function captcha() {
		list($resultat, $phrase) = Captcha::captchaCreate();
		$_SESSION['captcha'] = $resultat;
		return $phrase;
	}
	// Fonction de verification du resultat du captcha
	// Si le resultat du captcha a ete poste
	// 		Si la reponse est egale a la session captcha
	// 			Retourne vrai
	//		Si la reponse est fausse
	// 			retourne faux
	// Si le resultat n'est pas envoye
	// 		Retourne faux
	public static function captchaVerif() {
		if(!empty($_POST['captcha'])) {
			if($_POST['captcha'] == $_SESSION['captcha']) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	 
} // Fin de la classe captcha

###########################################################################################

// La classe d'inscription
class Inscription {
	
	// Fonction d'inscription
	// Si l'identifiant, l'email le mot de passe un et le mot de passe deux sont poster
	//		Si les deux mot de passe sont identiques
	//			Si le pseudo n'existe pas dans la bdd
	//				Si l'email est valide
	//					Si l'email n'existe pas dans la bdd
	//						creation du profil
	//						creation de la protection des info du profil
	//						envoie du message de bienvenue
	//						Retourne Activation du profil
	//					Sinon
	//						Retourne email existe deja
	//				Sinon
	//					Retourne email non valide
	//			Sinon
	//				Retourne le pseudo existe
	//		Sinon
	//			Retourne les 2 mots de passe sont !=
	// Sinon 
	// 		Retourne remplir tout les champs
	public static function inscrire($identifiant, $email, $passeUn, $passeDe) {
		if(!empty($identifiant) AND !empty($email) AND !empty($passeUn) AND !empty($passeDe)) {
			if($passeUn === $passeDe) {
				$verifIdentifiant = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.PSEUDO);
				$verifIdentifiant -> bindParam(':identifiant', $identifiant, PDO::PARAM_STR, 50);
				$verifIdentifiant -> execute();
				if($verifIdentifiant -> rowCount() != 1) {
					if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
						$verifMail = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.EMAIL);
						$verifMail -> bindParam(':email', $email);
						$verifMail -> execute();
						if($verifMail -> rowCount() != 1) {
							Inscription::profil($identifiant, $email, $passeUn);
							Inscription::protect($identifiant);
							Inscription::message($identifiant);
							$resultat = Inscription::activer($identifiant);
						}
						else {
							$resultat = 'L\'adresse email '.$email.' existe d&eacute;j&agrave;,<br />veuillez en saisir une autre et recommencer l\'inscription..';
						}
					}
					else {
						$resultat = 'L\'adresse email saisi n\'est pas valide, <br />veuillez recommencer l\'inscription.';
					}
				}
				else {
					$resultat = 'L\'identifiant saisi existe d&eacute;j&agrave;,<br />veuillez en choisir un autre et recommencer l\'inscription.';
				}
			}
			else {
				$resultat = 'Le champ &quot;Saisir un Mot de Passe&quot; et le champ &quot;Resaisir un Mot de Passe&quot; doivent &ecirc;tre identiques, <br />veuillez recommencer l\'inscription.';
			}
		}
		else {
			$resultat = 'Vous devez remplir tout les champs, <br />veuillez recommencer l\'inscription.';
		}
		return $resultat;
	}
	// creation du profil
	public static function profil($identifiant, $email, $pass) {
		$pass = Cryptage::crypter($pass);
		$resultat = Bdd::connectBdd()->prepare(INSERT.MEMBREZ.PROFIL);
		$resultat -> bindParam(':pseudo', $identifiant);
		$resultat -> bindParam(':email', $email);
		$resultat -> bindParam(':pass', $pass);
		$resultat -> execute();
	}
	// creation de la protection du profil
	public static function protect($pseudo) {
		$id = Membre::recupId($pseudo);
		$resultat = Bdd::connectBdd()->prepare(INSERT.ACCESPROFILZ.INSCRIPTION);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
	}
	// creation du message de bienvenue
	public static function message($pseudo) {
		$id = Membre::recupId($pseudo);
		$idexp = '2';
		$titre = 'Bienvenue et Profil';
		$date = time();
		$message = 'Bienvenue dans votre espace membre<br />Pensez &agrave; mettre a jour votre profil';
		$resultat = Bdd::connectBdd()->prepare(INSERT.MESSAGEZ.BIENVENUE);
		$resultat -> bindParam(':id_exp', $idexp);
		$resultat -> bindParam(':id_dest', $id);
		$resultat -> bindParam(':titre', $titre);
		$resultat -> bindParam(':date', $date);
		$resultat -> bindParam(':message', $message);
		$resultat -> execute();
	}
	// activation du membre
	// recuperation de la methode d'activation du site
	// puis activation du membre
	public static function activer($pseudo) {
		$activation = Bdd::connectBdd()->prepare(SELECT.ALL.ACTIVATION.METHODEACTIV);
		$activation -> execute();
		$methode = $activation -> fetch(PDO::FETCH_ASSOC);
		switch($methode['id']) {
			case 1 :
			Activation::activationAuto($pseudo);
			$resultat = 'Votre inscription est termin&eacute;e, vous pouvez maintenant vous connecter.<br /><a href="'.URLSITE.'/index.php">Connexion</a>';
			break;
				
			case 2 :
			Activation::activationMail($pseudo);
			$resultat = 'Votre inscription est termin&eacute;e, un email de confirmation viens de vous &ecirc;tre envoy&eacute;,<br />pensez a v&eacute;rifier vos spams.';
			break;	
				
			case 3 :
			$resultat = 'Votre inscription est termin&eacute;e, un administarteur ou un mod&eacute;rateur doit la valider,<br />un email de confirmation vous sera envoy&eacute; d&egrave;s que se sera effectu&eacute;,<br />pensez a v&eacute;rifier vos spams.';
			break;	
		}
		return $resultat;
	}
	
} // Fin de la classe d'inscription

###########################################################################################

// La classe connexion membre
class Connexion {
	
	// fonction de deconnexion
	// ecrasement des session dans un tableau
	// destruction du tableau
	// 		Si une page de redirection est choisi
	//			redirection vers la page
	public static function deconnexion($redirection) {
		$_SESSION = array();
		session_destroy();
		if(!empty($redirection)) {
			redirection(URLSITE.'/'.$redirection);
		}
	}
	// mot de passe oublier
	// Si l'email est valide
	// 		Si l'email existe dans la bdd
	// 			creation d'un nouveau mot de passe
	// 			enregistrement du nouveau mot de passe
	// 			Si l'envoie de l'email avec nouveau mot de passe est ok
	//				retourne message d'information
	//			Sinon
	//				retourne erreur de l'envoie
	//		Sinon
	//			retourne email existe pas dans la bdd
	// Sinon
	// Retourne email nn valide
	public static function passOubli($email) {
		if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
			$verifMail = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.EMAIL);
			$verifMail -> bindParam(':email', $email);
			$verifMail -> execute();
			if($verifMail -> rowCount() !== 1) {
				$donnee = $verifMail -> fetch(PDO::FETCH_ASSOC);
				$newPass = Cryptage::chaine(8);
				$cryptPass = Cryptage::crypter($newPass);
				$enregistrePass = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJPASS.EMAIL);
				$enregistrePass -> bindParam(':newPass', $cryptPass);
				$enregistrePass -> bindParam(':email', $email);
				$enregistrePass -> execute();
				//               *************************                //
				$headers ='From: "'.$donnee['nom'].' '.$donnee['prenom'].'"'.$email.''."\n";
				$headers .='Reply-To: '.MAILSITE.''."\n";
				$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
				$headers .='Content-Transfer-Encoding: 8bit'; 
				$sujet = "Nouveau mot de passe pour ".NOMSITE;
				$message = 'Bonjour '.$donnee['pseudo'].','."\n\n";
				$message .= "Voici votre nouveau mot de passe : ".$newPass."\n\n";
				$message .= 'Cordialement,'."\n";
				$message .= NOM_SITE.'.'."\n";
				if(mail(MAIL_SITE, $sujet, $message, $headers)) {
					return 'Un nouveau mot de passe viens de vous &ecirc;tre envoy&eacute;,<br />pensez &agrave; v&eacute;rifiez vos spams.';
				}
				else {
					return 'Erreur lors de l\'envoie de votre mot de passe.';
				}
			}
			else {
				return 'L\'adresse email '.$email.' n\'existe pas,<br />veuillez en saisir une autre et recommencer.';
			}
		}
		else {
			return 'L\'adresse email saisi n\'est pas valide.';
		}
	}
	// fonction de connexion des membres
	// Si verification du captcha => ok, et que l'identifiant et le mot de passe sont postes
	// 		Si login existe 
	//			Si mot de passe est ok 
	//				Creation de la session
	//				Enregistrement du jeton de connexion
	//				Redirection vers page au choix
	//					-> membre, moderateur, administrateur
	//			Si mot de passe faux => retourne faux
	// 		Si login existe pas => retourne faux
	// Si le captcha est faux => retourne faux
	public static function connexionCreate() {
		if(Captcha::captchaVerif() AND !empty($_POST['login']) AND !empty($_POST['pass'])) {
			if(Connexion::verifLogin($_POST['login'])) {
				if(Connexion::verifPass($_POST['pass'], $_POST['login'])) {
					$_SESSION['id'] = Membre::recupId($_POST['login']);
					$_SESSION['jeton'] = Connexion::jeton($_POST['login']);
					Connexion::niveau($_POST['login']);
				}
				else {
					return false;
				}
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	// Fonction de verification que l'identifiant existe dans la bdd
	public static function verifLogin($login) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
		$resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
		$resultat -> execute();
		if($resultat -> rowCount() === 1) {
			return true;
		}
		else {
			return false;
		}
	}
	// Function de verification du mot de passe
	public static function verifPass($pass, $login) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
		$resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		if(Cryptage::crypter($pass) === $donnee['password']) {
			return true;
		}
		else {
			return false;
		}
	}
	// La fonction de gestion des jetons de connexion lors de la connexion d'un membre
	// Si il esiste un jeton de connexion appertenant au membre qui se connecte avec la meme adresse ip
	// 	-> mise a jour de la date de connexion dans la table des jetons de connexion
	//  -> retourne le jeton
	// Si il n'existe pas 
	// 	-> creation d'un jeton de connexion
	// 	-> enregistrement du jeton
	//  -> retourne le jeton
	public static function jeton($login) {
		$id = Membre::recupId($login);
		$ip = Ip::get_ip();
		$date = time();
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONCONNEXION);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> bindParam(':ip', $ip);
		$resultat -> execute();
		if($resultat -> rowCount() === 1) {
			$donnee = $resultat->fetch(PDO::FETCH_ASSOC);
			$id = Membre::recupId($login);
			$maj = Bdd::connectBdd()->prepare(UPDATE.JETONZ.JETONDATE.JETONMEMBRE);
			$maj -> bindParam(':id', $id);
			$maj -> bindParam(':date', $date);
			$maj -> execute();
			return $donnee['jeton'];
		}
		else {
			$jeton = Cryptage::crypter(Cryptage::chaine(10));
			$insert = Bdd::connectBdd()->prepare(INSERT.JETONZ.JETONVALUES);
			$insert -> bindParam(':id', $id) ; 
			$insert -> bindParam(':jeton', $jeton) ;
			$insert -> bindParam(':ip', $ip);
			$insert -> bindParam(':date', $date);
			$insert -> execute();
			return $jeton;
		}
	}
	// Fonction de recuperation du niveau du membre
	// 	3 possibilite -> Membre, moderateur, administrateur
	//                ****************
	// Verification que le membre est actif
	// Si actif -> verification du niveau du membre
	// 		Redirection -> Membre, moderateur, administrateur
	// Si banni
	// 		-> redirection vers page d'information
	// Si pas actif
	// 		Recherche de la methode d'activation des membres
	//		-> activation auto -> retourne la fonction au debut
	// 		-> activation par mail -> envoie le mail d'activation puis redirige vers une page d'information
	// 		-> activation maunel -> redirige vers une page d'information
	public static function niveau($login) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
		$resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
		$resultat -> execute();
		$donnee = $resultat->fetch(PDO::FETCH_ASSOC);
		if($donnee['activation'] === '1') {
			switch($donnee['niveau']) {
				case 1 :
				$_SESSION['niveau'] = '1'; 
				$redirect = redirection(URLSITE.'/membre/index.php');
				break;
				
				case 2 :
				$_SESSION['niveau'] = '2';
				$redirect = redirection(URLSITE.'/moderateur/index.php');
				break;
				
				case 3 :
				$_SESSION['niveau'] = '3';
				$redirect = redirection(URLSITE.'/administrateur/index.php');
				break;
			}
		}
		elseif($donnee['activation'] === '5') {
			$redirect = redirection(URLSITE.'/banni.php');
		}
		else {
			$activation = Bdd::connectBdd()->prepare(SELECT.ALL.ACTIVATION.METHODEACTIV);
			$activation -> execute();
			$methode = $activation->fetch(PDO::FETCH_ASSOC);
			switch($methode['id']) {
				case 1 :
				Activation::activationAuto($login);
				return Connexion::niveau($login);
				break;
				
				case 2 :
				Activation::activationMail($login);
				$redirect = redirection(URLSITE.'/activationMail.php');
				break;	
				
				case 3 :
				$redirect = redirection(URLSITE.'/activationAdmin.php');
				break;	
			}
		}
		return $redirect;
	}
	
} // Fin de la classe de connexion membre

###########################################################################################

// La classe activation
class Activation {
	
	// fonction activation automatique
	public static function activationAuto($login) {
		$activ = '1';
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.ACTIVMEMBRE.LOGIN);
		$resultat -> bindParam(':login', $login);
		$resultat -> bindParam(':activer', $activ);
		$resultat -> execute();
	}
	// fonction activation par email
	// Si un mail d'activation a deja ete envoye
	// 		recuperation du jeton d'activation
	// Sinon
	//		creation d'un jeton d'activation 
	//		et enregistrement dans la bdd
	// Si le mail est envoye 
	// 		retourne vrai
	// Sinon
	//		retourne faux
	public static function activationMail($login) {
		$id = Membre::recupId($login);
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETONMAIL.IDMEMBRE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		if($resultat -> rowCount() === 1) {
			$donnee = $resultat->fetch(PDO::FETCH_ASSOC);
			$jeton = $donnee['jeton'];
		}
		else {
			$jeton = Cryptage::crypter(Cryptage::chaine(10));
			$insert = Bdd::connectBdd()->prepare(INSERT.JETONMAILZ.JETONMAILVALUES);
			$insert -> bindParam(':id', $id, PDO::PARAM_INT, 11);
			$insert -> bindParam(':jeton', $jeton);
			$insert -> execute();
		}
		if(Activation::activationEnvoiMail($login, $jeton)) {
			return true;
		}
		else {
			return false;
		}
	}
	// envoie du mail d'activation
	public static function activationEnvoiMail($login, $jeton) {
		$headers ='From: "'.Membre::info($login, 'nom').' '.Membre::info($login, 'prenom').'"'.Membre::info($login, 'email').''."\n";
		$headers .='Reply-To: '.MAILSITE.''."\n";
		$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
		$headers .='Content-Transfer-Encoding: 8bit'; 
		$sujet = "Activation de l'espace membre ".NOMSITE;
		$message = 'Bonjour '.Membre::info($login, 'pseudo').','."\n\n";
		$message .= "Voici votre lien d'activation pour l'espace membre ".NOMSITE." : ".URLSITE."activation.php?securite=".$jeton.". ";
		$message .= 'Cliquez sur ce lien ou copier-le et coller-le dans votre navigateur.'."\n\n\n";
		$message .= 'Cordialement,'."\n";
		$message .= NOM_SITE.'.'."\n";
		mail(MAIL_SITE, $sujet, $message, $headers);
	}
	// verification du jeton d'activation
	public static function activationVerife($jeton) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETONMAIL.JETONACTIVATION);
		$resultat -> bindParam(':jeton', $jeton);
		$resultat -> execute();
		if($resultat -> rowCount() === 1) {
			$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
			Activation::activationAuto($donnee['login']);
			return true;
		}
		else {
			return false;
		}
	}
	
} // Fin de la classe d'activation

###########################################################################################

// La classe de protection des espaces -> membre, moderateur et administrateur
class ProtectEspace {
	
	// protection de l'espace membre
	// Verification que les parametres de sessions existent
	// $id => $_session['id']
	// $captcha => $_session['captcha']
	// $jeton=> $_session['jeton']
	// $niveau => $_session['niveau']
	// verification que le niveau n'est pas different de 1
	// Si il y a une erreur
	// 		redirection vers la page de deconnexion
	// Sinon
	//		Verification que le jeton de connexion appartient bien au membre connecte
	//		Si ce n'est pas le cas
	//			redirection vers la deconnexion
	// 		Sinon 
	//			Si le membre est banni
	//				Redirection vers la page d'information de bannissement
	//			Sinon
	//				Retourne Vrai
	public static function membre($id, $captcha, $jeton, $niveau) {
		if(empty($id) OR empty($captcha) OR empty($jeton)) {
			redirection(URLSITE.'/deconnexion.php');
		}
		else {
			if($niveau !== '1') {
				redirection(URLSITE.'/deconnexion.php');
			}
			$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONSESSION);
			$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
			$resultat -> bindParam(':jeton', $jeton);
			$resultat -> execute();
			if($resultat -> rowCount() !== 1) {
				redirection(URLSITE.'/deconnexion.php');
			}
			else {
				if(Membre::info($id, 'activation') === '5') {
					redirection(URLSITE.'/banni.php');
				}
				return true;
			}
		}
	}
	// protection de l'espace moderateur
	// Verification que les parametres de sessions existent
	// $id => $_session['id']
	// $captcha => $_session['captcha']
	// $jeton=> $_session['jeton']
	// $niveau => $_session['niveau']
	// verification que le niveau n'est pas different de 2
	// Si il y a une erreur
	// 		redirection vers la page de deconnexion
	// Sinon
	//		Verification que le jeton de connexion appartient bien au moderateur connecte
	//		Si ce n'est pas le cas
	//			redirection vers la deconnexion
	// 		Sinon 
	//			Si le membre est banni
	//				Redirection vers la page d'information de bannissement
	//			Sinon
	//				Retourne Vrai
	public static function moderateur($id, $captcha, $jeton, $niveau) {
		if(empty($id) OR empty($captcha) OR empty($jeton)) {
			redirection(URLSITE.'/deconnexion.php');
		}
		else {
			if($niveau !== '2') {
				redirection(URLSITE.'/deconnexion.php');
			}
			$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONSESSION);
			$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
			$resultat -> bindParam(':jeton', $jeton);
			$resultat -> execute();
			if($resultat -> rowCount() !== 1) {
				redirection(URLSITE.'/deconnexion.php');
			}
			else {
				if(Membre::info($id, 'activation') === '5') {
					redirection(URLSITE.'/banni.php');
				}
				return true;
			}
		}
	}
	// protection de l'espace administrateur
	// Verification que les parametres de sessions existent
	// $id => $_session['id']
	// $captcha => $_session['captcha']
	// $jeton=> $_session['jeton']
	// $niveau => $_session['niveau']
	// verification que le niveau n'est pas different de 3
	// Si il y a une erreur
	// 		redirection vers la page de deconnexion
	// Sinon
	//		Verification que le jeton de connexion appartient bien a l'administrateur connecte
	//		Si ce n'est pas le cas
	//			redirection vers la deconnexion
	// 		Sinon 
	//			Si le membre est banni
	//				Redirection vers la page d'information de bannissement
	//			Sinon
	//				Retourne Vrai
	public static function administrateur($id, $captcha, $jeton, $niveau) {
		if(empty($id) OR empty($captcha) OR empty($jeton)) {
			redirection(URLSITE.'/deconnexion.php');
		}
		else {
			if($niveau !== '3') {
				redirection(URLSITE.'/deconnexion.php');
			}
			$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONSESSION);
			$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
			$resultat -> bindParam(':jeton', $jeton);
			$resultat -> execute();
			if($resultat -> rowCount() !== 1) {
				redirection(URLSITE.'/deconnexion.php');
			}
			else {
				if(Membre::info($id, 'activation') === '5') {
					redirection(URLSITE.'/banni.php');
				}
				return true;
			}
		}
	}
	// compte le nombre de jeton de connexion pour le membre
	public static function compteJeton($id) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONMEMBRE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		return '<a href="listeJeton.php">Il y a '.$resultat -> rowCount().' adresse(s) ip qui se connecte(nt) &agrave; votre espace membre.</a>';
	}
	// Liste des jeton de connexion du membre
	public static function listeJeton($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.JETON.JETONMEMBRE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($jeton = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$liste .= '<tr>
					<td align="center">Le '.date('d/m/Y', $jeton['date']).' &agrave; '.date('H:i:s', $jeton['date']).'</td>
					<td align="center">'.$jeton['ip_connexion'].'</td>
					<td align="center">
					<form method="post" action="">
					<input type="hidden" value="'.$jeton['id'].'" name="id_jeton">
					<input type="submit" value="Supprimer" name="supprime_connexion" class="input" />
					</form>
					</td>
				</tr>';
		}
		return $liste;
	}
	// effacer un jeton de connexion
	public static function deleteJeton($id) {
		$resultat = Bdd::connectBdd()->prepare(DELETE.JETON.ID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
	}
	
}

###########################################################################################

// La classe Membre
class Membre {
	//Fonction de recuperation de l'id d'un membre
	public static function recupId($login) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.LOGIN);
		$resultat -> bindParam(':login', $login, PDO::PARAM_STR, 50);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		return $donnee['id'];
	}
	// Fonction de recuperation des infos membre
	// $id => id du membre
	// $info => information qu l'on veux
	public static function info($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.ID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		$infoMembre = $resultat -> fetch(PDO::FETCH_ASSOC);
		return $infoMembre[$info];
	}
	// protection affichage information membre
	public static function protectInfo($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACCESPROFIL.IDMEMBRE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		if($donnee[$info] === '1') {
			$affiche = Membre::info($id, $info);
		}
		else {
			$affiche = 'Non disponible';
		}
		return $affiche;
	}
	// changer autorisation d'une information du profil
	// deux choix :
	// 		-> Rendre visible aux autres membres
	//		-> Cacher l'information aux autres membres
	//  		***************************
	public static function profilVisibilite($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACCESPROFIL.IDMEMBRE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		if($donnee[$info] === '1') {
			$maj = '0';
		}
		else {
			$maj = '1';
		}
		$update = Bdd::connectBdd()->prepare(UPDATE.ACCESPROFILZ.' SET '.$info.MAJACCESPROFIL.IDMEMBRE);
		$update -> bindParam(':maj', $maj);
		$update -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$update -> execute();
		redirection('profil.php');
	}
	// visibilite d'une information d'un membre
	public static function visibilite($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACCESPROFIL.IDMEMBRE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		if($donnee[$info] === '1') {
			return 'Cacher';
		}
		else {
			return 'Rendre Visible';
		}
	}
	// Mise a jour du profil du membre
	public static function majProfil($id, $naissance, $genre, $nom, $prenom, $email, $facebook, $twister, $site, $tel, $adresse, $cp, $ville, $mailing, $description) {
		$description = filter_var($description, FILTER_SANITIZE_STRING);
		$description = nl2br($description);
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJPROFIL);
		$resultat -> bindParam(':email', $email);
		$resultat -> bindParam(':tel', $tel);
		$resultat -> bindParam(':adresse', $adresse);
		$resultat -> bindParam(':cp', $cp);
		$resultat -> bindParam(':ville', $ville);
		$resultat -> bindParam(':genre', $genre);
		$resultat -> bindParam(':naissance', $naissance);
		$resultat -> bindParam(':nom', $nom);
		$resultat -> bindParam(':prenom', $prenom);
		$resultat -> bindParam(':facebook', $facebook);
		$resultat -> bindParam(':twister', $twister);
		$resultat -> bindParam(':site', $site);
		$resultat -> bindParam(':description', $description);
		$resultat -> bindParam(':mailing', $mailing);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		redirection('profil.php');
	}
	// changer de mot de passe
	public static function newPass($id, $passActuel, $newPassUn, $newPassDe) {
		if(!empty($passActuel) AND !empty($newPassUn) AND !empty($newPassDe)) {
			if($newPassUn === $newPassDe) {
				$verifPass = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.ID);
				$verifPass -> bindParam(':id', $id, PDO::PARAM_INT, 11);
				$verifPass -> execute();
				$dataPass = $verifPass -> fetch(PDO::FETCH_ASSOC);
				if($dataPass['password'] === Cryptage::crypter($passActuel)) {
					$newPass = Cryptage::crypter($newPassUn);
					$majPass = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJPASS.ID);
					$majPass -> bindParam(':newPass', $newPass);
					$majPass -> bindParam(':id', $id, PDO::PARAM_INT, 11);
					if($majPass -> execute()) {
						$resultat = 'Votre mot de passe a &eacute;t&eacute; chang&eacute; avec succ&egrave;s.';
					}
					else {
						$resultat = 'Une erreur est survenue pendant la mise &agrave; jour de votre mot de passe.';
					}
				}
				else {
					$resultat = 'Vous n\'avez pas saisi correctement votre mot de passe actuel,<br />veuillez recommencer.';
				}
			}
			else {
				$resultat = 'Les champs &quot;Votre nouveau mot de passe&quot; et &quot;Saisir &agrave; nouveau le mot de passe&quot; doivent &ecirc;tre identiques,<br />veuillez recommencer.';
			}
		}
		else {
			$resultat = 'Pour changer de mot de passe vous devez remplir tout les champs,<br />veuillez recommencer.';
		}
		return $resultat;
	}
	
} // Fin de la classe Membre

###########################################################################################

// La classe Message
class Message {
	
	// Verification que le message envoye ne contient pas de mots interdits
	// Mots interdits -> insultes et language sms
	// si le message ne contient pas de mots interdit 
	// 		retourne vrai
	// sinon
	//		retourne faux
	public static function interdit($message) {
	// Liste des 899 mots interdits dans l'espace membre
	// 		-> insultes
	// 		-> language SMS
	// Vous pouvez allonger cette liste en mettant ( | ) sans espace entre chaque mot interdit
	$motInterdit = "/\b(anus|baise|baisee|baisent|baiser|baises|baisé|baisée|baisées|baisés|baiz|bande de tâches|bander|barez-vous|barrez-vous-batard|batarde|batardes|batards|bite|bites|bitte|bittes|bondage|bondages|bonnasse|bonnasses|bordel|bordels|branle|branler|branles|branlette|branlettes|branlé|branlés|bâtard|bâtarde|bâtardes|bâtards|bèz|c o n|c o*n|c o^n|c*o n|c*o*n|c*on|c^o n|c^o^n|caca|cacas|casse-toi|cassez-vous|chatte|chiasse|chie|chient|chier|chié|chiées|chiés|clitau|clito|co n|co*n|cocu|cocus|con|con nard|con nards|conar|conard|conarde|conardes|conards|conasse|conasses|connar|connard|connarde|connardes|connards|connasse|connasses|conne|Connerie|Conneries|connes|cons|couille|couilles|couye|couyes|creve|crève|cul|culs|cuni|cunilingus|de ta mer|de ta mere|de ta mèr|de ta mère|debil|debile|debiles|débil|débile|débiles|echangisme|emerde|emerdent|emerder|emerdeur|emerdeurs|emerdeuse|emerdeuses|emerdé|emerdée|emerdés|emmerde|emmerdent|emmerder|emmerdeur|emmerdeurs|emmerdeuse|emmerdeuses|emmerdé|emmerdée|emmerdés|en cul|en cule|en culer|en cules|encule|enculer|encules|enculé|enculés|enfoiré|enfoirée|enfoirées|enfoirés|et ta mere|et ta mère|exta|f o ck|f o k|F U C K|f u ck|f.uck|f_u_c_k|faire mettre|fcuk|fcvk|fela tion|felation|fella tion|fellation|fI_Ick|fl_lck|fo ck|foc k|fock|foutoir|foutoire|foutre|foutrement|fu c k|fu ck|fu.ck|fuc|fuc.k|FUCK|fuk|fuque|fuuck|fuuuck|fuuuuck|fuuuuuck|fvck|féla tion|féla tions|félation|félations|gouine|gouines|gouinne|gouinnes|groniasse|groniasses|k o n|k o*n|k o^n|k o_n|k*o n|k*o*n|k*on|k^o n|k^o^n|k_o n|k_o_n|ko n|ko*n|kon|konasse|konasses|konnasse|konnasses|kons|Lesbien|Lesbiene|Lesbienes|lesbienne|Lesbiens|Lesbo|Lesbos|maso|masturbator|masturbe|masturber|masturbé|masturbée|masturbées|masturbés|meeerdes|meeerdeux|meerdes|meerdeux|merdes|merdeux|morveuse|morveuses|morveux|nasi|nasis|nazi|nazis|negre|negres|negrillon|negrillons|negro|negros|nibard|nibards|nichon|nichons|nik|nike|nique|niquer|niqué|niquée|niquées|niqués|negre|negres|negro|negros|negresse|négresse|nègre|nègres|négrillon|négrillons|négro|négros|ordure|ordures|p u t a i n|p u t a i n s|partouse|partouses|partouze|partouzes|pd|pdd|pddd|pdddd|pddddd|pdddddd|pddddddd|pds|pedale|pedales|pede|pederaste|pederastes|pedes|penis|pennis|petasse|petasses|phuck|pignouf|pignoufette|pi|noufettes|pignoufs|pisse|pissee|pissees|pisser|pisses|pissé|pissée|pissées|pissés|plouc|ploucs|plouk|plouks|porno|pornos|pouffiass|pouffiasse|pouffiasses|poufiasse|pouf­fiass|pouf­fiasse|pouf­fiasses|Prostitue|Prostituee|Prostituees|Prostitues|Prostitué|Prostituée|Prostituées|Prostitués|prout|put|put ain|put ains|put in|put ins|put1|putain|putains|pute|putes|putin|putins|putte|puttes|puttin|puttins|pédale|pédales|pédé|pédéraste|pédérastes|pédés|pénétration|pétasse|pétasses|s e x|s e x e|s e x*e|s e xe|s e*x|s ex|s ex e|s ex*e|s exe|sado|salau|salaud|salauds|salaus|salaut|salauts|sale arabe|sallo|sallop|sallopard|sallopards|sallope|sallopes|salloppard|salloppards|salloppe|salloppes|sallos|sallot|sallots|salo|salop|salopard|salopards|salope|salopes|saloppard|saloppards|saloppe|saloppes|salos|salot|salots|se x|se*x|sex|sex e|sex*e|sexe|shit|skinhead|sodomie|sodomise|sodomisee|sodomisees|sodomisent|sodomiser|sodomises|sodomisé|sodomisée|sodomisées|sodomisés|sperm|sperme|spermes|suce|suck|tete de noeud|tetes de noeud|tête de noeud|têtes de noeud|va te faire|va te fer|va te fere|va te fèr|va te fère|vagin|vagins|zizi|zizis|1e|1st|1dispo|1posibl|1diféren|1trec|1ternet|1vit|1mn|2min|2ri1|2l8|2labal|2m1|2mand|2van|2vanc|4me|5pa|6gar|6garet|6né|6nema|6T|7adir|7ad|10ko|ab1to|akro|a2m1|af'r|afr|aJ|aG|éD|alé|AR|aPero|a+|apré|aprè|aprem|aprè-mi10|apré-mi10|areT|ariv|a12c4|asap|avan|avanC|ayé|abiT|azar|aniv|aK|aps|avc|avk|azar|AL1DI|ard|admin|ADMIN|ATK|arf|balaD|bavar|bavarD|bi1|bi1sur|bi1to|bizz|bap|bsr|boC|blèm|B|b1|bc|Bdo|BG|bj|bocou|bogos|bye|cé|cad|c b1|c sa|c cho|c 2 labal|c mal1|CT|chanG|capou|chuis|chanmé|CriE|C|camé|cam|came|Cdla|celib|celibatR|chi1|Clib|cok1|cokin|cokine|cok1e|colR|comen|dico|cc|colok|condé|dak|danC|ds|D6D|DpenC|dê|dS100|DzSPré|Dzolé|dsl|DtST|diskuT|douT|d1gue|daron|D|daronne|darone|deuspi|dico|die|DEF|écouT|empr1T|enfR|en+|épaT|éxagR|exClen|exQzé|exiG|éziT|Er|E|enkor|entouK|entouka|epaT|ErE|ErEze|fRfet|fiR|meuf|fliP|francè|FR|frR|fr8|foto|FM|FMloJ|F|fb|frero|foo|fliKé|flik|fone|fonetel|gan|Gen|Gnial|gré|glnD|GraV|G la N|GPTléplon|G|gova|gater6|gd|gde|Gnial|grav|gro|Gséré|GG|HT|H|hard|hl|IR|isTrik|ID|ImaJn|I|ie|irl|jalou|jamé|j'le sav|jenémar|jSpR ktu va bi1|jtm|je t'M|j'tapLdkej'pe|jeteléDjadi|jT|jr|JuG|J|jaten|jme|jsai|jsui|jtem|jtaim|Kdo|keum|Kfar|Kfé|Kl1|Knon|Kc|klR|koQ|kEr|komanD|Kom|komencava|koncR|kontST|kruL|karaT|ke|kL|kLq1|kelkun|keske|keske C|kekina|kestion|ki|kil|koi|koa|kwa|koi29|K|KS|kisdé|kif|jtkif|k7|kan|Ksos|LcKc|lol|l1di|lakL|lekL|l8|lH|l'S tomB|LC|L|LVL|ll|mek|magaz1|m1tNan|mnt|mè|kaze|malad|mal1|manG|mat1|max|mm|ménaG|mR|mê|msg|mne|m jvb|MDR|moy1|muscQ|muscu|muzik|muzic|M|m'man|MP|msg|ml|NRV|néCsR|nRvE|nc|no|nb|nombrE|nouvL|nouvo|NRJ|N|news|ns|ok1|oQne|Ojourd8|ojourd'8|ouf|orEr|otL|OQP|Ô|oZ|ouvR|O|oci|oreur|ou1j|ouinj|OMG|partut|partt|paC|péyé|pRturB|pE|piG|poa|po1|poz|pr|pk|prtan|prtant|preC|pb|P|p'pa|ptdr|POULAGA|PANAM|PANAME|poto|pr|ppr|pti|ptite|plon|qoa|qd|quiT|Q|QG|reuch|remps|rapl|ra|rejo1|rdv|répt|rstp|rep|resto|retard|réu|réucir|ri1|rafr|ras|ru|r|reuf|savapa|sniiif|snif|slt|slt cav ?|savoar|semN|stp|sk8|seur|spor|strC|S|sked|SKEUD|tR|tarD|tps|Tê|ti2|tle +bo|tpa fâché|TT|tabitou|2day|tjr|tt|tr1|trankil|taf|tafer|tu vi1 2m1 ?|T|Tci|tsss|ts|utilizé|U|vazi|Vlo|vR|vi1|vs|VoyaG|vrMen|V|VIP|W|WE|W.E|wesh|WTF|wé|wi|wy|X|X-trem|Xtrem|xpldr|Xcité|Xcit|xd|xplorer|xplozé|xploz|xplor|yo|y|é|ye|yè|ya|yâ|Z|zN|ziva|zonmé)\b/ui";
		$message = str_replace("'", "", $message);
		if(strstr($motInterdit, $message)) {
			return false;
		}
		else {
			return true;
		}
	}
	// nombre de nouveau message du membre connecte
	public static function nouveauNb($id) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.NBNEW);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		if($resultat -> rowCount() === 0) {
			return 'Vous n\'avez aucun nouveau message';
		}
		else {
			return 'Vous avez '.$resultat -> rowCount().' nouveau(x) message(s).';
		}
	}
	// liste des messages du membre
	// liste a vide
	// recherche des messages adresses au membre connecte et non efface par le membre
	// Dans une boucle 
	// 		Si le message est deja lu 
	//			image lu
	// 		Sinon
	//			image non lu
	//      **********************
	// 		affichage du ou des messages
	// Fin de la boucle
	//      **********************
	// si la liste n'est pas vide 
	//		retourne la liste des messages
	// Sinon
	// 		retourne vous n'avez aucun message
	public static function liste($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.MESSAGELISTE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			if($donnee['lu'] === '1') {
				$image = '<img src="'.URLSITE.'/design/image/Lu.png" width="24" height="24" align="absmiddle">';
			}
			else {
				$image = '<img src="'.URLSITE.'/design/image/Non_Lu.png" width="24" height="24" align="absmiddle">';
			}
			$liste .= '<tr>
			<td>'.$image.'</td>
			<td align="center">Le '.date('d/m/Y', $donnee['timestamp']).' &agrave; '.date('H:i:s', $donnee['timestamp']).'</td>
			<td align="center"><a href="profil_membre.php?id='.$donnee['id_expediteur'].'">'.Membre::info($donnee['id_expediteur'], 'pseudo').'</a></td>
			<td align="center"><a href="message.php?id='.$donnee['id'].'">'.$donnee['titre'].'</a></td>
			</tr>';
		}
		if(!empty($liste)) {
			return $liste;
		}
		else {
			return '<tr><td align="center" colspan="4">Vous n\'avez aucun message</td></tr>';
		}
	}
	// Affiche le message recut
	public static function info($id, $info) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.ID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		return $donnee[$info];
	}
	// message lu
	public static function lu($id) {
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MESSAGEZ.LU.ID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
	}
	// efface message
	public static function efface($id) {
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MESSAGEZ.EFFACE.ID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
	}
	// envoie d'un message
	// Si le destinataire et ok
	//		Si le titre est ok
	//			Si le message est ok
	//				Si le message et le titre ne contiennent pas des mots interdits
	//					Nettoyage du message et du titre
	//					Enregistrement dans la bdd
	//					retourne Vrai
	//				Sinon
	//					retourne une erreur
	//			Sinon
	//				retourne une erreur
	//		Sinon
	//			retourne une erreur
	// Sinon
	//  	retourne une erreur
	public static function messageEnvoi($id_exp, $destinataire, $titre, $message) {
		if(!empty($destinataire)) {
			if(!empty($titre)) {
				if(!empty($message)) {
					if(Message::interdit($message)) {
						$message = nl2br(filter_var($message, FILTER_SANITIZE_STRING));
						$titre = filter_var($titre, FILTER_SANITIZE_STRING);
						$date = time();
						$resultat = Bdd::connectBdd()->prepare(INSERT.MESSAGEZ.MESSAGEINSERT);
						$resultat -> bindParam(':id_exp', $id_exp, PDO::PARAM_INT, 11);
						$resultat -> bindParam(':id_dest', $destinataire, PDO::PARAM_INT, 11);
						$resultat -> bindParam(':titre', $titre);
						$resultat -> bindParam(':date', $date);
						$resultat -> bindParam(':message', $message);
						$resultat -> execute();
						return 'Votre message est envoy&eacute;';
					}
					else {
						return 'Votre message ou votre titre contient du language SMS ou des mots interdits, veuillez recommencer.<br />'.$message;
					}
				}
				else {
					return 'Vous devez saisir un message.';
				}
			}
			else {
				return 'Vous devez saisir un titre au message.';
			}
		}
		else {
			return 'Vous devez choisir un destinataire.';
		}
	}
	// Message a tous les membres
	public static function messageAll($titre, $message) {
		if(!empty($titre)) {
			if(!empty($message)) {
				$id = '2';
				$all = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.NOID);
				$all -> bindParam(':id', $id, PDO::PARAM_INT, 11);
				$all -> execute();
				$message = nl2br(filter_var($message, FILTER_SANITIZE_STRING));
				$titre = filter_var($titre, FILTER_SANITIZE_STRING);
				$date = time();
				$id_exp = '2';
				while($tous = $all -> fetch(PDO::FETCH_ASSOC)) {
					$destinataire = $tous['id'];
					$resultat = Bdd::connectBdd()->prepare(INSERT.MESSAGEZ.MESSAGEINSERT);
					$resultat -> bindParam(':id_exp', $id_exp, PDO::PARAM_INT, 11);
					$resultat -> bindParam(':id_dest', $destinataire, PDO::PARAM_INT, 11);
					$resultat -> bindParam(':titre', $titre);
					$resultat -> bindParam(':date', $date);
					$resultat -> bindParam(':message', $message);
					$resultat -> execute();
				}
				return 'Votre message est envoy&eacute;';
			}
			else {
				return 'Vous devez saisir un message.';
			}
		}
		else {
			return 'Vous devez saisir un titre au message.';
		}
	}
	// liste des messages envoyes
	public static function listeEnvoi($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MESSAGE.IDEXP);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			if($donnee['lu']==1) {
				$image = '<img src="'.URLSITE.'/design/image/Lu.png" width="24" height="24" align="absmiddle">';
			}
			else {
				$image = '<img src="'.URLSITE.'/design/image/Non_Lu.png" width="24" height="24" align="absmiddle">';
			}
			if($donnee['effacer']==1) {
				$image = '<img src="'.URLSITE.'/design/image/faux.png" width="24" height="24" align="absmiddle">';
			}
			$liste .= '<tr>
					<td>'.$image.'</td>
					<td align="center">Le '.date('d/m/Y', $donnee['timestamp']).' &agrave; '.date('H:i:s', $donnee['timestamp']).'</td>
					<td align="center"><a href="profil_membre.php?id='.$donnee['id_destinataire'].'">'.Membre::info($donnee['id_destinataire'], 'pseudo').'</a></td>
					<td align="center">'.$donnee['titre'].'</td>
				</tr>';
		}
		if(!empty($liste)) {
			return $liste;
		}
		else {
			return '<tr><td align="center" colspan="4">Vous n\'avez pas envoy&eacute; de message</td></tr>';
		}
	}
	// liste des destinataires possible pour nouveau message
	public static function choixDestinataire($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.NOID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$liste .= '<option value="'.$donnee['id'].'">'.$donnee['pseudo'].'</option>';
		}
		return $liste;
	}
	
} // Fin de la classe message

###########################################################################################

// la classe smiley
class Smiley {
	
	// Affiche la liste des smileys
	public static function liste() {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.SMILEY);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$liste .= '<a href="javascript:void(0);" onClick="smiley(\'S'.$donnee['id'].'S\');"><img src="'.URLSITE.'/'.$donnee['url'].'" width="32" height="32" /></a>';
		}
		return $liste;
	}
	// Affiche les smileys dans le message
	public static function affiche($text) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.SMILEY);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$text = str_replace($donnee['bbcode'], '<img src="'.URLSITE.'/'.$donnee['url'].'" width="32" height="32" align="absmiddle" />', $text);
		}
		return $text;
	}
} // Fin de la classe smiley

###########################################################################################

// La classe Avatar
class Avatar {
	
	// affiche l'avatar du membre
	public static function membre($id) {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.AVATAR.ID);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		$donnee = $resultat -> fetch(PDO::FETCH_ASSOC);
		return $donnee['url'];
	}
	// liste des avatars
	public static function liste() {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.AVATAR);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$liste .= '<div id="avatar"><img src="'.URLSITE.'/'.$donnee['url'].'" width="120" height="120" alt="Avatar" title="Avatar"><br /><input type="radio" value="'.$donnee['id'].'" name="id_avatar"></div>';
		}
		return $liste;
	}
	// mise a jour avatar
	public static function maj($id, $id_avatar) {
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.MAJAVATAR.ID);
		$resultat -> bindParam(':idAvatar', $id_avatar, PDO::PARAM_INT, 11);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		redirection('profil.php');
	}
	
} // Fin de la classe Avatar

###########################################################################################

// La classe Info sur le site
class InfoSite {
	
	// Nombre de membres
	public static function membreNb() {
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE);
		$resultat -> execute();
		if($resultat -> rowCount() === 0) {
			return 'Il y a aucun membre inscrit';
		}
		else {
			return 'Il y a '.$resultat -> rowCount().' membres inscrits';
		}
	}
	// Liste des activations possible
	public static function listeActivation() {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.ACTIVATION);
		$resultat -> execute();
		while($option = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			if($option['activation'] === '1') {
				$liste .= '<option value="'.$option['id'].'" selected="selected">'.$option['mode'].'</option>';
			}
			else {
				$liste .= '<option value="'.$option['id'].'">'.$option['mode'].'</option>';
			}
		}
		return $liste;
	}
	// changer le mode d'activation
	public static function activationChange($id) {
		$activ = '1';
		$oui = Bdd::connectBdd()->prepare(UPDATE.ACTIVATIONZ.CHANGEMETOD.ID);
		$oui -> bindParam(':activ', $activ);
		$oui -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		if($oui -> execute()) {
			$desac = '0';
			$non = Bdd::connectBdd()->prepare(UPDATE.ACTIVATIONZ.CHANGEMETOD.NOI);
			$non -> bindParam(':activ', $desac);
			$non -> bindParam(':id', $id, PDO::PARAM_INT, 11);
			$non -> execute();
		}
		redirection(URLSITE.'/administrateur/activation.php');
	}
	// Liste des membres pour les administrateurs
	public static function listeMembre($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.' ORDER BY activation ASC');
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$idMembre = $donnee['id'];
			$pseudo = $donnee['pseudo'];
			if($donnee['activation'] === '5') {
				$niveau = 'Banni';
				$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="debannir" value="D&eacute;bannir" class="input"> <input type="submit" name="supprim" value="Supprimer" class="input">';
			}
			elseif($donnee['activation'] === '0') {
				$niveau = 'Nouvel(le) inscrit(e)';
				$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"><input type="submit" name="inscription" value="Valider l\'inscription" class="input">';
			}
			else {
				switch($donnee['niveau']) {
					case 1 :
					$niveau = 'Membre';
					$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="input"> <input type="submit" name="moderateur" value="Passer Mod&eacute;rateur" class="input">';
					break;
					case 2 :
					$niveau = 'Mod&eacute;rateur';
					$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="input"> <input type="submit" name="membre" value="Repasser Membre" class="input">';
					break;
					case 3 :
					$niveau = 'Administrateur';
					$action = '';
					break;
					case 4 :
					$niveau = 'Cr&eacute;ateur';
					$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="supprim" value="Supprimer" class="input">';
					break;
				}
			}
			$liste .= '<tr>
					<td align="center"><a href="profil_membre.php?id='.$idMembre.'">'.$pseudo.'</a></td>
					<td align="center">'.$niveau.'</td>
					<td align="center"><form action="" method="post">'.$action.'</form></td>
				</tr>';
		}
		return $liste;
	}
	// Liste des membres pour les moderateurs
	public static function listeMembreModo($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.' ORDER BY activation ASC');
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
			$idMembre = $donnee['id'];
			$pseudo = $donnee['pseudo'];
			if($donnee['activation'] === '5') {
				$niveau = 'Banni';
				$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="debannir" value="D&eacute;bannir" class="input">';
			}
			elseif($donnee['activation'] === '0') {
				$niveau = 'Nouvel(le) inscrit(e)';
				$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"><input type="submit" name="inscription" value="Valider l\'inscription" class="input">';
			}
			else {
				switch($donnee['niveau']) {
					case 1 :
					$niveau = 'Membre';
					$action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="input">';
					break;
					case 2 :
					$niveau = 'Mod&eacute;rateur';
					$action = '';
					break;
					case 3 :
					$niveau = 'Administrateur';
					$action = '';
					break;
					case 4 :
					$niveau = 'Cr&eacute;ateur';
					$action = '';
					break;
				}
			}
			$liste .= '<tr>
					<td align="center"><a href="profil_membre.php?id='.$idMembre.'">'.$pseudo.'</a></td>
					<td align="center">'.$niveau.'</td>
					<td align="center"><form action="" method="post">'.$action.'</form></td>
				</tr>';
		}
		return $liste;
	}
	
} // Fin de la classe Info sur le site

###########################################################################################

// La classe administrateur
class Admin {
	
	// bannir un membre
	public static function bannir($id, $messagePost) {
		$activ = '5';
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.ACTIVMEMBRE.ID);
		$resultat -> bindParam(':activer', $activ);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		//				*******************				//
		$headers ='From: "'.Membre::info($login, 'nom').' '.Membre::info($login, 'prenom').'"'.Membre::info($login, 'email').''."\n";
		$headers .='Reply-To: '.MAILSITE.''."\n";
		$headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
		$headers .='Content-Transfer-Encoding: 8bit'; 
		$sujet = "Bannissement l'espace membre ".NOMSITE;
		$message = 'Bonjour '.Membre::info($login, 'pseudo').','."\n\n";
		$message .= 'L\'administarteur du site '.NOMSITE.' vous a banni de l\'espace membre.'."\n\n";
		$message .= 'Voici la raison : '."\n";
		$message .= $messagePost."\n";
		$message .= 'Cordialement,'."\n";
		$message .= NOM_SITE.'.'."\n";
		mail(MAIL_SITE, $sujet, $message, $headers);
		//				*******************				//
		redirection(URLSITE.'/administrateur/listeMembre.php');
	}
	// debannir un membre
	public static function debannir($id) {
		$activ = '1';
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.ACTIVMEMBRE.ID);
		$resultat -> bindParam(':activer', $activ);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		redirection(URLSITE.'/administrateur/listeMembre.php');
	}
	// Passer un membre -> moderateur
	public static function passeModo($id) {
		$niveau = '2';
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.NIVEAU.ID);
		$resultat -> bindParam(':niveau', $niveau);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		redirection(URLSITE.'/administrateur/listeMembre.php');
	}
	// passer un moderateur -> membre
	public static function passeMembre($id) {
		$niveau = '1';
		$resultat = Bdd::connectBdd()->prepare(UPDATE.MEMBREZ.NIVEAU.ID);
		$resultat -> bindParam(':niveau', $niveau);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		redirection(URLSITE.'/administrateur/listeMembre.php');
	}
		
} // Fin de la classe administrateur
?>

 Conclusion

Je suis ouvert à vos commentaires, le but étant de m'améliorer.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

09 février 2013 21:33:50 :
Rajout d'un fichier lisez-moi, qui donne tous les détails pour le fichier design, comment le télécharger et comment le mettre en place.
13 février 2013 11:33:25 :
Correction d'une petite erreur d'écriture du nom d'une table de base de donnée dans le script d'installation, absence de majuscule.
14 février 2013 11:27:22 :
Correction fonction pour les mots interdits : 1) remplacement de strstr() par preg_match(). 2) Variable message=NULL, donc plus d'erreur si oubli de remplir la description dans le profil.
14 février 2013 22:21:13 :
suppression du fichier lisez-moi et changement de lien de téléchargement pour le fichier design : http://dbmwebdesign.fr/Modules/espace-membre/creer-espace-membre.html
26 février 2013 12:58:55 :
Nouveau design réaliser par http://dbmwebdesign.fr/Modules/espace-membre/creer-espace-membre.html

 Sources du même auteur

Source avec Zip TCHAT PHP5, JAVASCRIPT->AJAX
Source avec Zip Source avec une capture ESPACE MEMBRE
Source avec Zip EXEMPLE DE GESTION DE PLUSIEURS STYLES CSS EN PHP
Source avec Zip DATE ET HEURE EN PHP
Source avec Zip LE SITEMAP D'UN SITE

 Sources de la même categorie

Source avec Zip Source avec une capture PHP INFOS SHOUTCAST par jules87
Source avec Zip SAUVEGARDE ADRESSE IP VISITEUR par michael33512
FONCTION DE REDIRECTION par monpoke
Source avec Zip TCHAT PHP5, JAVASCRIPT->AJAX par JejeScript
Source avec Zip Source avec une capture ESPACE MEMBRE par JejeScript

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ESPACE MEMBRE par JejeScript
Source avec Zip ESPACE MEMBRE AVEC IDENTIFICATION par floflode69
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip Source avec une capture ESPACE MEMBRE , AVEC CASE OPTIONNEL , SANS MYSQL par sartoz
Source avec Zip Source avec une capture CONNEXION DISTANTE À ZL-MEMBRE : ESPACE MEMBRES / CLIENTS A... par sam_sam_sam

Commentaires et avis

Commentaire de stay le 09/02/2013 23:07:14 7/10

Salut, je te félicite pour l'ampleur du travail et ton courage.
Tu as passé énormément d'heures la dessus.
Je t'ai noté 7/10 pour cela.

Tu as un bon niveau, tu devrais développer sur un Framework.
Les possibilités de développer un programme robuste, l'application dont tu serais fière de développer et crois-moi, le temps de comprendre que tu maîtrises, tu es développeur dans une boîte.

Moi, cela fait 7 ans que je développe avec le Zend Framework et Smarty (moteur de Template) pour la view.

Développer avec un Framework en MVC te donnera la possibilité de séparer ton code PHP de la view HTML très facilement.
Imagine-toi que l'on code MVC coté client (JavaScript).
C'est le moment d'aller plus loin.

A lire : http://fr.wikipedia.org/wiki/Mod%C3%A8le-Vue-Contr%C3%B4leur

PS: ton HTML n'est pas XHTML ;).

Commentaire de JLN le 11/02/2013 08:17:04

STAY: En somme tu voudrais le voir développer en code objet en quelques sortes. Bon pour la structure, mauvais pour l'optimisation en principe.
jejeScript: Très bon boulot comme le souligne STAY et une bonne structure malgré tout... Tu pouvais même aller au dessus de "Débutant".
J'ai mis 10 rien que le boulot ca les vaut.

Commentaire de christ_28 le 11/02/2013 11:38:45 9/10

Code très soigné et très bien documenté, c'est pourquoi je mets 9.
Par contre un débutant va vite partir voir ailleurs je pense.

Quand j'aurais un peu de temps, j'irais voir le reste et testerais le résultat.
Continue dans cette voie.

PS
J'ai vu des développeur en entreprise où t'aimerais pas passer derrière corriger un bug !

Bon courage et continue dans cette direction.

Commentaire de leonkersten le 11/02/2013 14:06:59

bonjour
j'ai tenté d'installer votre script. A première vue, install.php m'a créé la base de donnée mais m'envoie un message : Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /homez...../install/creer_config.php on line 24
la ligne 24 est : private static $connexion = NULL;

Pourriez vous m'aider à résoudre ce problème?

Merci d'avance
Léon

Commentaire de JejeScript le 11/02/2013 15:58:09

Bonjour leonkersten,

la ligne 24 du fichier creer_config.php est :
define('PASS', $PARAM_mot_passe);

as tu bien saisi ton mot de passe pour la connexion à la base de donnée ?

cordialement.

Commentaire de biggun5962 le 11/02/2013 15:59:02

le site http://www.partage-facile.com/ est dans la liste des sites au contenu potentiellement dangereux et est bloqué par l'anti virus

Commentaire de JejeScript le 11/02/2013 15:59:30

Bonjour Stay, Chris_28,

Merci pour vos commentaire.
Je vais voir pour un MVC, je ne m'en suis jamais servi.
Il faut aller encore plus loin !

Cordialement.

Commentaire de JejeScript le 11/02/2013 16:01:02

Bonjour biggun5962,

merci pour ce commentaire mais personnellement, je n'ai jamais eu de soucis, si d'autre personnes rencontre le même problème je changerais d'endroit pour le fichier design

Cdt.

Commentaire de JejeScript le 11/02/2013 16:03:34

Lut JLN,

J'avais pas vu ton commentaire, merci à toi pour tes encouragement.

PS: ta note n'a pas été prise en compte.

Cordialement.

Commentaire de bj33 le 11/02/2013 17:42:54

Salut

<title>Installation Espace Membres JejeScript</title>
<link href="css.css" rel="stylesheet" type="text/css" />
</head>

<body>
<?php
$err = '';
$ok = '';
if(!empty($_POST['creer_base'])) {
extract($_POST);
if(!empty($Base)) {

$PARAM_hote=$Url_Serveur;
$PARAM_nom_bd=$Base;
$PARAM_utilisateur=$Admin; // nom d'utilisateur pour se connecter
$PARAM_mot_passe=$Passe; // mot de passe de l'utilisateur pour se connecter
define('DNS', 'mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd);
define('SER', 'mysql:host='.$PARAM_hote);
define('USER', $PARAM_utilisateur);
define('PASS', $PARAM_mot_passe);
class Bdd {
private static $connexion = NULL;

public static function connectBdd() {

Alors là, c'est une première!

<<Je vais voir pour un MVC, je ne m'en suis jamais servi.

Corrige déjà çà:) Et une classe === un fichier

<<DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

Encore et toujours :( Et 131 warnings

Commentaire de arta le 12/02/2013 07:50:48

Bonjour tous

Pour suivre ...

Commentaire de lexunivers le 12/02/2013 11:30:24

Bonjour,

Le débutant que je suis, se pose 2 questions:
- que doit-on faire du fichier de 1321 lignes, présenté ci-dessus ?
- quelle doit être l'adresse URL du site ( à rentrer dans le formulaire de connexion) quand on est en "localhost" ? j'ai beau indiquer localhost/mon_site/ rien n'y fait !

Merci à vous

Commentaire de lexunivers le 12/02/2013 14:24:24

Re-Bonjour,

Solution à l'usage des débutants comme je le suis, l'adresse URL du site en "localhost"(à inscrire dans le formulaire de connexion):
http://localhost/le_nom_de_mon_site.

Commentaire de JejeScript le 13/02/2013 09:21:04

Boujour à tous,

BJ33, qu'as tu voulu nous dire ? je suis désolé mais je n'ai rien compris a ton commentaire.

lexunivers, le fichier de 1000 et quelques lignes ci-dessus fait parti du projet ESPACE MEMBRE, et lors de l'installation si vous lisez bien ce qui est écrit,
devant le champ : Url de l'espace membre sans '/' :
dans le champ : ex : http:www.mon.site.fr/espace_membre

Comment voulez-vous vous trompez ? Je pense que c'est à la porté d'un débutant de suivre des instructions.

Cordialement

Commentaire de gmdconcept le 13/02/2013 10:03:27

Bonjour JejeScript;

J'ai chargé ton script qui m'a l'air (à tous points de vue ) de correspondre à ce que je recherche pour mon site.

Mais j'ai un bug que je ne comprends pas....

Installation :
1ère phase OK ( coches vertes nickel )
2ème installation des bases de données ( réponse Ok toutes cases cochées )
Étape suivante : Création de l'admin.
Remplissage des cases >>> Envoi et... Message pourri.

"""" Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S02]: Base table or view not found: 1146 Table 'u702359184_memb.jejescriptaccesfiches' doesn't exist' in /home/u702359184/public_html/membres/install/creer_admin.php:12 Stack trace: #0 /home/u702359184/public_html/membres/install/creer_admin.php(12): PDOStatement->execute() #1 {main} thrown in /home/u702359184/public_html/membres/install/creer_admin.php on line 12 """"

Pourtant, via myphpadmin, cette table """"'u702359184_memb.jejescriptaccesfiches'"""" est bien présente.

D'où cela peut-il venir ?

Merci d'avance pour ta réponse et bonne journée.


Commentaire de stay le 13/02/2013 10:09:15

Salut à tous,

@bj33, il est sûr qu'une classe est égal à un fichier quand ton travail en objet mais pas ici.

Pourquoi je travail avec un Framework !
L'objectif est de mapper les objets avec une base de données relationnelle d'où l'importance des modules contenants des modèles qui sont en réalité, des classes PHP.
Un Framework offres des outils pour réaliser très facilement (une fois que l'on a compris la syntax :)), c'est relations.
Plus d'explication avec les relations Zend_Db_Table : http://framework.zend.com/manual/1.12/fr/zend.db.table.relationships.html
Un exemple avec Synfony : http://trac.symfony-project.org/wiki/sfBookFRmodel

De plus, la gestion du projet devient un jeu d'enfant car avec la librairie disponible par le Framework, on peut très facilement gérer les url.
Exemple un site :
<page type="Zend_Controller_Router_Route">
    <route>:id/:lang/:page</route>
    <reqs id="^[0-9]$" />
    <reqs lang="^[a-z]{2}$" />
    <reqs page="^(.*)+.html$" />
    <defaults module="front" controller="root" action="page" />
</page>

Ici, il y a 7 lignes de codes pour un module, un controller et une action, imaginez-vous que dans mon fichier rooter.xml, il y a plus de 100 lignes de codes.
Tous est fait en object.
Mon plus gros projet à lui seul gère une multitude de site géré avec un même Back-Office avec une gestion d'affiliés, clients, states, etc... partant d'un seul fichier, index.php.

Ici, sûr le projet de @JejeScript, il n'y a aucune importance, au contraire, il utilise une méthode procédural qui est en accord avec la logique de sont projet. Il n'y a pas plus procédural que d'avoir un fichier header.php et footer.php inclus dans un fichier index.php.
J'imagine déjà la fonction _autoload loadent des classes (toute mon enfance :)), aucun intérêt.

Commentaire de JejeScript le 13/02/2013 11:29:11

Bonjour GMDCONCEPT,

Alors oui j'ai une petite idee, il est possible que les majuscule soit pris en compte par tes bdd dans ce cas remplace jejescriptaccesfiches par JejeScriptAccesFiches a la ligne 11 de cette page :  ESPACE_MEMBRE_V3/install/creer_admin.php,

Je vais faire une mise à jour, cela pourrai encore créer des soucis.

Cordialement.

Commentaire de JejeScript le 13/02/2013 11:43:30

Re Stay,

bon pour le moment j'ai commencer à lire la documentation sur Zend Framework, et je ne peux pas dire que je trouve ça très facile, je n'ai toujours pas compris comment installer la choses (rire).

En attendant, j'ai quand même une question : En quoi utiliser un framework et plus simple que Dreamweaver par exemple ?

Cdt.

Commentaire de stay le 13/02/2013 12:23:14

Re, Dreamweaver est un IDE : http://fr.wikipedia.org/wiki/Environnement_de_d%C3%A9veloppement_int%C3%A9gr%C3%A9, mois j'utilise Eclipse : http://fr.wikipedia.org/wiki/Eclipse_%28logiciel%29, car il est tout aussi puissant et gratuit.
Qui dit gratuit, dit mise à jour vers des nouvelles fonctions.

On peut dire que ces IDE sont des Framework : http://fr.wikipedia.org/wiki/Framework, car il peuvent offrir une librairie de code et générer une structure de dossiers et fichiers pour une application web ou autre.
Le Zend Studio : http://www.zend.com/fr/products/studio/ offre cette possibilité.
La une version gratuite proposé par Zend : http://www.zend.com/fr/community/pdt.
Mais bien-sûr, je préfère décider par moi-même quelle structure mon application doit être composée.

Un petit plus qui n'a rien avoir avec la question mais toujours très intéressant, en entreprise, les développeurs travails le plus souvent avec un SVN.
Tortoise associer de subversion pour Eclipse.
Bien-sur à connaitre pour être un bon développeur :)

Il faut uniquement garder en tête que le Framework offres des outils (une librairie).
Le développeur à sa guise décide de coupler la librairie avec une application procédural.
Ou de ne pas travailler avec une méthode MVC.
Ou même de travailler avec plusieurs librairie, comme coupler la librairie du Zend Framework et Smarty.
C'est au développer de décider.

Donc, pour répondre à la question :) je répondrais par une question.
Est-ce-que Dreamweaver propose de générer une structure pour ton application et offres les librairies que tu as envie d'utiliser ?


Commentaire de JejeScript le 13/02/2013 12:37:07

Merci pour cette réponse claire stay,

je pense approfondir le sujet MVC.

Cdt.

Commentaire de stay le 13/02/2013 12:52:20

Super, n'hésites pas à revenir vers moi.

Commentaire de gmdconcept le 13/02/2013 17:54:41

Re  JejeScript;

Effectivement, en remplaçant par des Majuscules, ça passe, l'admin est créé, mais il y a une chose qui m'échappe.

Lors de la tentative de connexion >>> retour à l'accueil / inscription...

Essai avec un utilisateur fictif... Message votre compte est créé, vous pouvez vous connecter.
Clique sur le mot "connexion" et.... retour à l'accueil comme pour l'admin..

Les utilisateurs sont bien créées dans la bdD à la suite du tien avec ton message te tout et tout.... ????

Aurais je loupé un truc ???

Cordialement

Test ici :

http://sakadodos.hourb.com/membres/index.php

( à moins que je trouve le gag avant )

Bonne soirée.

Commentaire de julio69150 le 13/02/2013 20:35:03 9/10

Bonsoir,

j'ai un Warning strstr() empty delimiter : function.php si je ne remplis rien dans la description dans la fiche profil (après avoir validé "Mettre a jour la fiche profil) ? La vérification des mots à bannir ne semble pas fonctionner s'il y en a plusieurs dans une même phrase : Sinon très bonne codification, tous le reste fonctionne correctement

Commentaire de JejeScript le 14/02/2013 11:28:50

Bonjour julio69150,

Merci pour ton commentaire,

Une petite mise à jour avec la correction de la fonction viens d'être faites.

Cordialement.

Commentaire de JLN le 14/02/2013 14:14:12 10/10

Rectification pour la note que je suis sure avoir mis.
Pour les autorités de ce site:
Je ne sais pas pourquoi, certains message disparaissent, pourtant au moment du post je les vois sur la page et une autre fois plus.

Commentaire de JejeScript le 14/02/2013 16:05:29

Merci a toi JLN.

Commentaire de gb66 le 14/02/2013 22:15:57

Ou est le fichier lisez moi je le cherche mais je ne le trouve nulle part

Commentaire de JejeScript le 16/02/2013 14:28:57

Bonjour BG66

J'ai pas remis le fichier lisez-moi dans la dernière mise à jours désolé, mais tu trouvera toutes les explications nécessaires en suivant le lien ci-dessous :

http://dbmwebdesign.fr/Modules/espace-membre/creer-espace-membre.html

Commentaire de biljetli le 17/02/2013 11:22:03

bien fait :D

Commentaire de gb66 le 17/02/2013 22:33:29

Bravo pour ton code!

Commentaire de IkaPro le 20/02/2013 01:26:44

Bonsoir,

J'ai testé ton espace membre et très franchement aucune erreur tous à l'air très bien cependant, il y à aucun design ? seulement les carrés avec des croix ^^

Tu pourrais aussi mettre le dossier design avec le .css, les images, les émoticône...ect ?

Merci et franchement super boulot.

Commentaire de JejeScript le 20/02/2013 01:37:43

Bonsoir,

Le fichier complet avec le design est disponible ici :

http://dbmwebdesign.fr/Modules/espace-membre/creer-espace-membre.html

Commentaire de rabbouba1 le 11/03/2013 20:46:18

excellent :)

Commentaire de lafabla le 01/04/2013 18:09:27

Bonjour! J'ai téléchargé puis installé le code il y a quelques jours, et (presque) tout fonctionne comme sur des roulettes!!! Excellent système, merci JejeScript!

Cependant j'ai une embrouille : quand je suis en mode Membre, le fait de cliquer sur « Black », « Classic » ou « Vintage » coupe automatique le lien avec le css. Je n'ai pas ce problème quand je suis en mode Admin ou Modo. J'ai cherché partout dans le code ce qui aurait pu causer ce bris, mais je trouve pas.

Quelqu'un d'autre a éprouvé cet ennui?

lafabla

Commentaire de rachidanajet le 07/04/2013 23:58:52

salem : je travaille une application et je un petite problème : je cherche comment connecte au base de connaissance et le syntaxe de requête sparql en php  est-ce-que vous m'aider?

Commentaire de Domnu le 09/04/2013 10:11:10 10/10

Vraiment, "une mention d'excellence" à l'auteur de ce script. C'est la première fois que je trouve une application qui fonctionne dés l'installation.
A 70 ans, jeune programmeur amateur, et loin de posséder vos connaissance car ces technologies nous ont atteints trop tard, je reste émerveillé par les prouesses d'une certaine nouvelle génération de programmeur amateur: qui n'ont pas forcément fait l'université pour cela, mais qui développe pourtant plus d'ingéniosité que ceux qui le devraient.
Merci et bravo à jeje, sans oublier ceux qui méritent la même considération.
Une mention très particulière aussi aux acteurs de ce site qui rendent des services inestimables.

Commentaire de IrX le 01/05/2013 17:15:11 10/10

Bonjour,

je me permet de vous contacté pour savoir si vous travailler toujours sur une seconde version de l'espace membres, je l'ai installé est je le trouve vraiment super et très agréable, cependant je souhaiterais savoir comment en t'en qu'admin comment supprimé un user ? édité sont profile, est j'ai remarquer aussi que je ne peut pas faire une demande de mot de passe perdu

cf: http://iweb.freeb0x.fr/guillaume/new_passe.php

j'ai également remarquer que pour choisir le type de validation je doit passez via sql.peut être mes fichier n'ont pas les droit nécessaires. doit -je les changer ?

y'a t'il un autre version qui sortira prochainement ?

Cordialement

Commentaire de JejeScript le 03/05/2013 10:26:22

Bonjour,

Merci DoMNu pour vos encouragement.
Je n'ai pus vous répondre plus avant suite à quelques soucis de santé.

Je suis maintenant de retour est une version 4 de l'espace membre est en cours de développement.

Cordialement,

JejeScript

Commentaire de JejeScript le 03/05/2013 10:29:33

Bonjour IrX,

Comme j'annonce dans mon petit message ci-dessus, oui une version 4 est en cours de développement, j'ai pris un peu de retard avec mes soucis de santé, mais il sortira le plus rapidement possible.

Effectivement, le nouveau mot de passe, je viens de le remarquer grâce à vous ne fonctionne pas,
pour ce qui est de la gestion des users, je n'est pas fait de suppression si je me rappel mais un bannissement, et éditer une fiche membre est impossible, car ce sont ces propres informations personnelles.

Cordialement,

JejeScript

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Aider moi svp [ par Zoé ] je suis débutante dans le pho j'éssais d'installé une section membre (webjeff_espace_membre_v1.11)jai suivie toute les instructions et tout semble bie Cherche script zone membre ! [ par jbrek ] Je cherche un script zone membre en PHP et en base de donnée mySQL (si possible) :Il faudrait :- une confirmation de mot de passe dans le formulaire d Liaison de table. [ par benett ] Bojour à tous,Pouvez-vous m'expliquez comment gérer les liaisons de type N-N entre 2 tables, j'ai un fichier intermédiaire de créer, mais je ne sais p Liaison de table. [ par benett ] Bojour à tous,Pouvez-vous m'expliquez comment gérer les liaisons de type N-N entre 2 tables, j'ai un fichier intermédiaire de créer, mais je ne sais p Mail pour mot de passe d'un membre [ par mojira ] Je peine pour faire un script qui pourrais envoyer un mail avec le mot de passe du membre qui a pu l'oublié...description :formulaire (e-mail) --&gt; 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 session et parametres membres [ par apz ] salut,dans une zone membre, on doit souvent rediriger l'utilisateur vers cette derniere apres une identification reussite, comme suit : header("locati plus rapide que msql_result [ par Isengard ] Bonjour a tous.Je me rappelle avoir vu qqpart (oui oui) qu'il existait un moyen plus rapide que mysql_result.Par exemple j'ai une toable ou chaque lig Prob avec section membre [ par Gamer13 ] g utiliser le tuto suivant à l'adresse http://www.phpcs.com/article.aspx?ID=98je vé pour le tester donc je m'inscrit et quand je veut m'inscrire y m'a prob d'inscription pour un espace membre [ par bricethenetman ] Slt j''avé créer un petit script trés basic pour inscrir les membres de mon site(Insert into... ) à présent je l'ai modifier pour ke si un pseudo exi


Nos sponsors


Sondage...

CalendriCode

Juin 2013
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

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,811 sec (4)

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