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


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

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?

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

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.

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

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);

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

eric

Oui.

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

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?

Montre le code ou tu remplis ta session

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;
}

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

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');
            }
        }
    }

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

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

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

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.

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>'; ?>