Espace membre avec MVC

Par M-Project, il y a 13 ans


Salut à tous !

Est-ce que cela serait possible de faire un tutoriel sur comment créer un espace membre avec Connexion, inscription, gestion des membres etc... mais avec le MVC utilisé dans le tutoriel "Développer un site en php de A à Z" ?

Merci.

19 réponses

erfou, il y a 13 ans

Salut,

as tu essayé de modifier le config.php?
tu ajoutes un prefix Router::prefix('membre','membre')
et dans le hook, tu ajoute un elseif en modifiant admin vers membre

il faudra aussi créer les fonctions autorisées aux membres, par exemple membre_poster_un_truc, membre_modifier_mon_profil...

Eric

M-Project, il y a 13 ans

Ah oui effectivement. Mais aussi j'ai un problème : Je n'arrive pas à récupérer le pseudo de la personne connecté, comment faire?

erfou, il y a 13 ans

salut,
ca se passe dans UsersConroller, login.
if(!empty($user)){
...
}
soit tu fais un $_session 'pseudo']=$user->pseudo;
soit tu utilises la fonction write() de l'objet Session.

Eric

M-Project, il y a 13 ans

Merci de ta réponse erfou, j'ai mis $_SESSION'login'] = $user->login; au bon endroit, mais ensuite, comment je fais pour afficher le pseudo dans une page? J'ai essayer : <?php echo $user->login; ?>, mais ça ne fonctionne pas.

erfou, il y a 13 ans

Salut,
$user est un objet accessible depuis le controller UsersController seulemnt . C'est pour ca qu'on mets la valeur dans $_SESSION. en effet, $_session est accessible de partout, tant que l'on pas pas fait unset($_SESSION'lavariable']) ou session_destroy
$_SESSION est comme $_POST, $_GET. ces sont des variables superglobales pour en savoir plus :
http://php.net/manual/fr/language.variables.superglobals.php
eric

M-Project, il y a 13 ans

J'ai fais exactement ce que tu as dis, mais j'ai cette erreur : Notice: Undefined index: login in /view/index/index.php on line 1.

J'ai mis dans ma page ça -> <?php echo $_SESSION 'login']; ?>
Et dans mon UserController ça -> $_SESSION'login'] = $user->login; juste après ça : $this->session->write('user',$user);

erfou, il y a 13 ans

est ce que tu t'es deconnecté / connecté?

eric

M-Project, il y a 13 ans

Oui.

erfou, il y a 13 ans

Salut, peux tu faire un var_dump($_SESSION) pour voir ce qu'il ya dedans et poster le resultat?

M-Project, il y a 13 ans

J'ai ça :

array(1) { "user"]=> object(stdClass)#5 (4) { "id"]=> string(1) "(l'id)" "login"]=> string(7) "(Mon pseudo)" "password"]=> string(40) "(Le mot de passe chiffré)" "rank"]=> string(5) "(Le rang)" } "login"]=> NULL }

Ce qu'il y a entre parenthèses c'est moi qui l'a écrit là. Ça dois venir du Login => NULL non?

djtec, il y a 13 ans

Montre le code ou tu remplis ta session

M-Project, il y a 13 ans

J'ai mis le code que erfou m'a dit de mettre dans UserController, ici comme il me la dit :

if(!empty($user)){
$this->session->write('user',$user);
$_SESSION"login"] = $user->login;
}

erfou, il y a 13 ans

peux tu donner le code complet de la fonction login?
Eric

M-Project, il y a 13 ans
function login(){
        if($this->request->data){
            $data = $this->request->data;
            $data->password = sha1($data->password);
            $this->loadModel('user');
            $user = $this->user->findFirst(array(
                'conditions' => array('login' => $data->login,'password' => $data->password
            )));
            if(!empty($user)){
                $this->session->write('user',$user);
                $_SESSION"login"] = $user->login;
            }
            $this->request->data->password = '';
        }
        if($this->session->isLogged()){
            if($this->session->user('rank') == 'admin'){
                $this->redirect('cockpit');
            }
        }
    }
Duowen, il y a 13 ans

Bonjour,j'ai le m^meprobleme
avec un hook:
?php
if($this->request->prefix == 'admin'){
$this->layout = 'admin';
if(!$this->Session->isLogged() || $this->Session->user('role') != 'admin'){
$this->redirect('users/login');
elseif($this->request->prefix == 'user'){
$this->layout = 'user';
if(!$this->Session->isLogged() || $this->Session->user('role') != 'member'){
$this->redirect('users/login');
}
}
et un
?>

( ! ) Parse error: syntax error, unexpected T_ELSEIF in C:\wamp\www\etontine\Site\config\hook.php on line 6
Call Stack

Time Memory Function Location

1 0.0010 372872 {main}( ) ..\index.php:0
2 0.0099 603400 Dispatcher->__construct( ) ..\index.php:11
3 0.0100 604176 Dispatcher->loadController( ) ..\Dispatcher.php:17
4 0.0112 661720 Controller->__construct( ) ..\Dispatcher.php:47

iriven, il y a 13 ans

salut Duowen! tu as des problemes avec tes accolades. remplace ton code par celui-ci:

<?php
if($this->request->prefix == 'admin'){
$this->layout = 'admin'; 
if(!$this->Session->isLogged() || $this->Session->user('role') != 'admin')$this->redirect('users/login'); 
}
elseif($this->request->prefix == 'user'){
$this->layout = 'user'; 
if(!$this->Session->isLogged() || $this->Session->user('role') != 'member')$this->redirect('users/login');
}
?>
Duowen, il y a 13 ans

Merci Alfred,

As-tu un script session.php du tuto MVC de A à Z adapté en espace membre ?
Je souhaite garder l'architecture du MVC du tuto mais avec une authentification obligatoire pour accéder à la racine du blog

iriven, il y a 13 ans

salut c'est à la classe usersController de s'adapter à la classe session car cette derniere est deja integré dans ton systeme mvc. même s'il est vrai que l'une coe l'autre peuvent subir des améliorations tres poussées, ce que je te conseille d'ailleur de faire.

Xtr3me, il y a 13 ans

Faut chercher à comprendre le tutoriel pas le suivre bêtement parce que là vous n'avez l'air d'avoir rien appris du tout... Je suis arrivé au terme des 7 jours et en examinant le code, ce qu'il faisait j'ai compris comment fonctionné l'architecture MVC(j'ai fait un site avec un design que j'ai fait moi même) au final j'ai pu rajouté une fonction qui me permet de rajouter des produits dans une table produits et qui les affichent sur la bonne page, un aperçu du produit dans le panneau d'administration etc... et là je suis en train d'adapter le tutoriel Créer un panier PHP sur le MVC. Et rien ne vous empêche de faire des recherches sur le net si un problème intervient ;) il y a multitudes de tutoriels sur les espaces membres il y en a même un ici qui permet la gestion des permissions etc...

Sinon pour l'auteur de ce topic, voici comment tu peux afficher le pseudo de l'utilisateur:

'.stripslashes(htmlspecialchars($_POST'pseudo'])).'

.
Tu tapes par exemple:

<?php echo '<p>Bienvenue '.stripslashes(htmlspecialchars($_POST'login'])).' sur ma page perso </p>'; ?>