bonjour,
J'ai développé une application avec cakephp 2.x. Tout marche bien en local mais un fois envoyé sur le serveur dédié, en ligne (pour la production), le session flash et l’authentification ne marche plus. J'arrive plus à me loguer.
merci d'avance !

9 réponses


Inspirat
Réponse acceptée

C'est peut-être la configuration de ton hébergement qui pose problème, dans le fichier "core.php" modifie la chose suivante:

// app/Config/core.php - Ligne 218 à 220

Configure::write('Session', array(
    //'defaults' => 'php'
    'defaults' => 'cake' // Utilise le système de stockage de CakePHP
));
sekouzed
Auteur
Réponse acceptée

ça marche à present;
j'ai aussi mit les droits sur le app/tmp/ a 777
merci à toi inspira!!

Visiblement les sessions ne sont pas activé sur ton serveur, vérifie dans ton php.ini ;)

sekouzed
Auteur

tout d'abord; merci de m'avoir repondu
mais j'ai un hebergement mitualisé(rectification), et j'ai pas acces au php.ini
en plus j'ai deja un site sous wordpress qui marche bien dans un sous docier

D'accord, il y a aucun message d'erreur ?
Met une copie neuve de CakePHP sur cet hébergement, il te dira ce qui ne va pas sur la première page normalement ;)

sekouzed
Auteur

voila mon code d'autentification:

public function login() {
if ($this->request->is('post')) {
debug($this->request->data);
if ($this->Auth->login()) {
//die('log');
debug($this->Session->read());
return $this->redirect($this->Auth->redirect());
} else {
//die('no log');
$this->Session->setFlash(__("Nom d'user ou mot de passe invalide, réessayer"));
}
}
}

le : if ($this->Auth->login()) return toujour false et le $this->Session->setFlash ne fonctionne pas.
sekouzed
Auteur

le code suivant ne marche pas:
$this->Session->write('test','testval');
debug($this->Session->read());

par contre avec du code php suivant, marche bien :
session_start();
$_SESSION['coco']='cocoval';
echo $_SESSION['coco'];
debug($_SESSION);

donc je me dis que le problem vien de la configurationde la session dans app/config/core.php
Configure::write('Session', array(
'defaults' => 'php'
));
le soussi est q g ne sais pas comment le configuré pour l'adopté a mon serveur

Dans ton controller AppController, est-ce que tu as pensé à ajouter les composants nécessaires ?

// app/Controller/AppController.php
public $components = array(
    'Session', 
    'Cookie',
    'Auth'
);

PS: n'hésite pas à utiliser les blocs de code pour une meilleure lisibilité de tes bouts de code ;)

sekouzed
Auteur

oui tout a fait

//app/Controller/AppController.php
<?php
 App::uses('Controller', 'Controller');
 class AppController extends Controller {
    public $components = array('Session','Cookie','Auth');
}

et voila pour user

//app/Controller/UserController.php
<?php
 class UsersController extends AppController {
     public function beforeFilter() {
        $this->Auth->allow('index', 'view','add', 'logout');
    }

    public function login() {
        if ($this->request->is('post')) {
            debug($this->request->data);
            if ($this->Auth->login()) {
            //die('log');
                debug($this->Session->read()); 
                return $this->redirect($this->Auth->redirect());
            } else {
             //die('no log');
                $this->Session->setFlash(__("Nom d'user ou mot de passe invalide, réessayer"));
            }
        }
    }

    public function logout() {
        return $this->redirect($this->Auth->logout());
    }

    public function index() {

                //$this->Session->write('test','testval'); 
                //debug($this->Session->read()); 

                session_start();
                $_SESSION['coco']='cocoval';
                echo $_SESSION['coco'];
                debug($_SESSION); 
                session_destroy();
                die();
        //$this->User->recursive = 0;
        //$this->set('users', $this->paginate());
    }

    public function view($id = null) {
        $this->User->id = $id;
        if (!$this->User->exists()) {
            throw new NotFoundException(__('User invalide'));
        }
        $this->set('user', $this->User->read(null, $id));
    }

    public function add() {
        if ($this->request->is('post')) {
            $this->User->create();
            if ($this->User->save($this->request->data)) {
                $this->Session->setFlash(__('L\'user a été sauvegardé'));
                return $this->redirect(array('action' => 'index'));
            } else {
                $this->Session->setFlash(__('L\'user n\'a pas été sauvegardé. Merci de réessayer.'));
            }
        }
    }

}