Bonjour,

J'ai suivis le tutoriel Tutoriel PHP _ Développer un site _ Jour 7, Authentification. J'ai presque fini, mais j'ai une erreur quand je suis connecté avec le login et le mot de passe et je veux accéder aux pages commençant par exemple: http://localhost/Tuto/Site/cockpit/posts/edit/3. Les erreurs sont les suivant:
Notice: Undefined property: PostsController::$Session in C:\Sites\Tuto\Site\config\hook.php on line 4

Fatal error: Call to a member function isLogged() on a non-object in C:\Sites\Tuto\Site\config\hook.php on line 4

mon hook.php:

<?php
if($this->request->prefix == 'admin'){
$this->layout = 'admin';
if(!$this->Session->isLogged() || $this->Session->user('role') != 'admin'){
$this->redirect('users/login');
}
}
?>

mon Session.php:

public function write($key,$value){
$_SESSION$key] = $value;
}

public function read($key = null){
if($key){
if(isset($_SESSION$key])){
return $_SESSION$key];
}else{
return false;
}
}else{
return $_SESSION;
}
}

public function isLogged(){
return isset($_SESSION'User']->id);
}

public function user($key){
if($this->read('User')){
if(isset($this->read('User')->$key)){
return $this->read('User')->$key;
}else{
return false;
}
}
return false;
}
}

mon UsersController:

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);
}
$this->request->data->password = '';
}
if($this->Session->isLogged()){
if($this->Session->user('role') == 'admin'){
$this->redirect('admin/posts/index');
}else{
$this->redirect('');
}
}
}

function logout(){
unset($_SESSION'User']);
$this->Session->setFlash('Vous êtes maintenant déconnecté');
$this->redirect('/');
}
}

Puis, quand je veux accéder au http://localhost/Tuto/Site/admin/posts/edit/2 j'ai l'erreur suivant: Warning: require(C:\Sites\Tuto\Site\controller\AdminController.php): failed to open stream: No such file or directory in C:\Sites\Tuto\Site\core\Dispatcher.php on line 49

Merci d'avance!!

1 réponse


Salut, Il disais que le fichier AdminController ne trouve pas dans le dossier controller.