Espace membre problème de redirection

Invité
Invité n'ayant pas de compte PHPfrance

23 nov. 2013, 12:28

Bonjour à vous,

Je viens de mettre en place un espace membre sur mon site.

Le script fonctionne, l'inscription à la base MySql fonctionne par contre aucune redirection n'aboutisse, chaque validation crée une boucle et reviens à l'index.

Je pense avoir des mauvaises redirection dans mon script PHP après la fonction 'URLSITE', mais je ne trouve pas mes erreurs.

Si quelqu'un a le courage de regarder ce code, merci d'avance.
<?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;
    }
 
    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
 
    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 = '<span class="error-info">L\'adresse email'.$email.' existe d&eacute;j&agrave;,<br />veuillez en saisir une autre et recommencer l\'inscription.</span>';
                        }
                    }
                    else {
                        $resultat = '<span class="error-info">L\'adresse email saisie n\'est pas valide, <br />veuillez recommencer l\'inscription.</span>';
                    }
                }
                else {
                    $resultat = '<span class="error-info">L\'identifiant saisi existe d&eacute;j&agrave;,<br />veuillez en choisir un autre et recommencer l\'inscription.</span>';
                }
            }
            else {
                $resultat = '<span class="error-info">Le champ "Saisir un Mot de Passe" et le champ "Resaisir un Mot de Passe" doivent &ecirc;tre identiques, <br />veuillez recommencer l\'inscription.</span>';
            }
        }
        else {
            $resultat = '<span class="error-info">Vous devez remplir tout les champs, <br />veuillez recommencer l\'inscription.</span>';
        }
        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 &agrave; 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.'/espacemembre/index.php"><span class="blue">Connexion</span></a>';
            break;
 
            case 2 :
            Activation::activationMail($pseudo);
            $resultat = 'Votre inscription est termin&eacute;e, un email de confirmation vient 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 cette op&eacute;ration 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
 
    public static function deconnexion($redirection) {
        $_SESSION = array();
        session_destroy();
        if(!empty($redirection)) {
            redirection(URLSITE.'/'.$redirection);
        }
    }
 
    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 ".RepairBike;
                $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 '<span class="error-info">"Erreur lors de l\'envoie de votre mot de passe.</span>';
                }
            }
            else {
                return '<span class="error-info">L\'adresse email '.$email.' n\'existe pas,<br />veuillez en saisir une autre et recommencer.</span>';
            }
        }
        else {
            return '<span class="error-info">L\'adresse email saisi n\'est pas valide.</span>';
        }
    }
    // fonction de connexion des membres
 
 
    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
 
    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
    //                ****************
 
 
    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.'/espacemembre/membre/index.php');
                break;
 
                case 2 :
                $_SESSION['niveau'] = '2';
                $redirect = redirection(URLSITE.'/espacemembre/moderateur/index.php');
                break;
 
                case 3 :
                $_SESSION['niveau'] = '3';
                $redirect = redirection(URLSITE.'/espacemembre/administrateur/index.php');
                break;
            }
        }
        elseif($donnee['activation'] === '5') {
            $redirect = redirection(URLSITE.'/espacemembre/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.'/espacemembre/activationMail.php');
                break; 
 
                case 3 :
                $redirect = redirection(URLSITE.'/espacemembre/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
    /
    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-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
 
    public static function membre($id, $captcha, $jeton, $niveau) {
        if(empty($id) OR empty($captcha) OR empty($jeton)) {
            redirection(URLSITE.'/espacemembre/deconnexion.php');
        }
        else {
            if($niveau !== '1') {
                redirection(URLSITE.'/espacemembre/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.'/espacemembre/deconnexion.php');
            }
            else {
                if(Membre::info($id, 'activation') === '5') {
                    redirection(URLSITE.'/espacemembre/banni.php');
                }
                return true;
            }
        }
    }
    // protection de l'espace moderateur
    /
    public static function moderateur($id, $captcha, $jeton, $niveau) {
        if(empty($id) OR empty($captcha) OR empty($jeton)) {
            redirection(URLSITE.'/espacemembre/deconnexion.php');
        }
        else {
            if($niveau !== '2') {
                redirection(URLSITE.'/espacemembre/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.'/espacemembre/deconnexion.php');
            }
            else {
                if(Membre::info($id, 'activation') === '5') {
                    redirection(URLSITE.'/espacemembre/banni.php');
                }
                return true;
            }
        }
    }
    // protection de l'espace administrateur
 
    public static function administrateur($id, $captcha, $jeton, $niveau) {
        if(empty($id) OR empty($captcha) OR empty($jeton)) {
            redirection(URLSITE.'/espacemembre/deconnexion.php');
        }
        else {
            if($niveau !== '3') {
                redirection(URLSITE.'/espacemembre/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.'/espacemembre/deconnexion.php');
            }
            else {
                if(Membre::info($id, 'activation') === '5') {
                    redirection(URLSITE.'/espacemembre/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 .= '<div class="list">
<div class="col1"></div>
<div class="col2">Le '.date('d/m/Y', $jeton['date']).' &agrave; '.date('H:i:s', $jeton['date']).'</div>
<div class="col3">'.$jeton['ip_connexion'].'</div>
<div class="col4">
                    <form method="post" action="">
<input type="hidden" value="'.$jeton['id'].'" name="id_jeton">
<input type="submit" value="Supprimer" name="supprime_connexion" class="statut-switch" />
</form>
</div>
</div>';
        }
        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, $twitter, $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(':twitter', $twitter);
        $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 = '<span class="error-info">Une erreur est survenue pendant la mise &agrave; jour de votre mot de passe.</span>';
                    }
                }
                else {
                    $resultat = '<span class="error-info">Vous n\'avez pas saisi correctement votre mot de passe actuel,<br />veuillez recommencer.</span>';
                }
            }
            else {
                $resultat = '<span class="error-info">Les champs "Votre nouveau mot de passe" et "Saisir &agrave; nouveau le mot de passe" doivent &ecirc;tre identiques,<br />veuillez recommencer.</span>';
            }
        }
        else {
            $resultat = '<span class="error-info">Pour changer de mot de passe vous devez remplir tout les champs,<br />veuillez recommencer.</span>';
        }
        return $resultat;
    }
 
} // Fin de la classe Membre
 
###########################################################################################
 
// La classe Message
class Message {
 
    // Verification que le message envoye ne contient pas de mots interdits
 
    public static function interdit($message=NULL) {
 
    $motInterdit = "/\b(..)\b/ui";
        $message = str_replace("'", "", $message);
        if(!empty($message)) {
            if(preg_match($motInterdit, $message)) {
                return false;
            }
            else {
                return true;
            }
        }
        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).';
        }
    }
 
    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.'/espacemembre/design/img/email-open.png" width="30" height="33" align="absmiddle">';
            }
            else {
                $image = '<img src="'.URLSITE.'/espacemembre/design/img/email-new-icon.png" width="30" height="33" align="absmiddle">';
            }
            $liste .= '<div class="list">
<div class="col5">'.$image.'</div>
<div class="col2">Le '.date('d/m/Y', $donnee['timestamp']).' &agrave; '.date('H:i:s', $donnee['timestamp']).'</div>
<div class="col3"><a href="profil_membre.php?id='.$donnee['id_expediteur'].'">'.Membre::info($donnee['id_expediteur'], 'pseudo').'</a></div>
<div class="col4"><a href="message.php?id='.$donnee['id'].'">'.$donnee['titre'].'</a></div>
</div>';
        }
        if(!empty($liste)) {
            return $liste;
        }
        else {
            return '<div class="list">Vous n\'avez aucun message</div>';
        }
    }
    // 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();
    }
 
    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 '<span-class="error-info">Votre message ou votre titre contient du language SMS ou des mots interdits, veuillez recommencer.</span>'.$message;
                    }
                }
                else {
                    return '<span-class="error-info">Vous devez saisir un message.</span>';
                }
            }
            else {
                return '<span-class="error-info">Vous devez saisir un titre au message.</span>';
            }
        }
        else {
            return '<span-class="error-info">Vous devez choisir un destinataire.</span>';
        }
    }
    // 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 '<span-class="error-info">Vous devez saisir un message.</span>';
            }
        }
        else {
            return '<span-class="error-info">Vous devez saisir un titre au message.</span>';
        }
    }
    // 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.'/espacemembre/design/img/email-open.png" width="30" height="33" align="absmiddle">';
            }
            else {
                $image = '<img src="'.URLSITE.'/espacemembre/design/img/email-new-icon.png" width="30" height="33" align="absmiddle">';
            }
            if($donnee['effacer']==1) {
                $image = '<img src="'.URLSITE.'/espacemembre/design/img/suppr-icon.png" width="30" height="33" align="absmiddle">';
            }
            $liste .= '<div class="list">
<div class="col5">'.$image.'</div>
<div class="col2">Le '.date('d/m/Y', $donnee['timestamp']).' &agrave; '.date('H:i:s', $donnee['timestamp']).'</div>
<div class="col3"><a href="profil_membre.php?id='.$donnee['id_destinataire'].'">'.Membre::info($donnee['id_destinataire'], 'pseudo').'</a></div>
<div class="col4">'.$donnee['titre'].'</div>
</div>';
        }
        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 class="avatar-box"><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.'/espacemembre/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="statut-switch"> <input type="submit" name="supprim" value="Supprimer" class="statut-switch">';
            }
            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="statut-switch">';
            }
            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="statut-switch"> <input type="submit" name="moderateur" value="Passer Mod&eacute;rateur" class="statut-switch">';
                    break;
                    case 2 :
                    $niveau = 'Mod&eacute;rateur';
                    $action = '<input type="hidden" value="'.$donnee['id'].'" name="id"> <input type="submit" name="bannir" value="Bannir" class="statut-switch"> <input type="submit" name="membre" value="Repasser Membre" class="statut-switch">';
                    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="statut-switch">';
                    break;
                }
            }
            $liste .= '<div class="list">
<div class="col1"></div>
<div class="col2"><a href="profil_membre.php?id='.$idMembre.'">'.$pseudo.'</a></div>
<div class="col3">'.$niveau.'</div>
<div class="col4"><form action="" method="post">'.$action.'</form></div>
</div>';
        }
        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="statut-switch">';
            }
            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="statut-switch">';
            }
            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="statut-switch">';
                    break;
                    case 2 :
                    $niveau = 'Mod&eacute;rateur';
                    $action = '';
                    break;
                    case 3 :
                    $niveau = 'Administrateur';
                    $action = '';
                    break;
                    case 4 :
                    $niveau = 'Cr&eacute;ateur';
                    $action = '';
                    break;
                }
            }
            $liste .= '<div class="list">
<div class="col1"></div>
<div class="col2"><a href="profil_membre.php?id='.$idMembre.'">'.$pseudo.'</a></div>
<div class="col3">'.$niveau.'</div>
<div class="col4"><form action="" method="post">'.$action.'</form></div>
</div>';
        }
        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\'administrateur du site '.NOMSITE.' vous a banni de l\'espace membre.'."\n\n";
        $message .= 'Pour le motif suivant : '."\n";
        $message .= $messagePost."\n";
        $message .= 'Cordialement,'."\n";
        $message .= NOM_SITE.'.'."\n";
        mail(MAIL_SITE, $sujet, $message, $headers);
        //              *******************             //
        redirection(URLSITE.'/espacemembre/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.'/espacemembre/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.'/espacemembre/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.'/espacemembre/administrateur/listeMembre.php');
    }
 
} // Fin de la classe administrateur
?>

Petit nouveau ! | 7 Messages

23 nov. 2013, 13:04

Ci dessous le lien pour visualiser le module espace membre.

http://repairbike.esy.es

PS: le module s'ouvre dans une Iframe