Utiliser les données de session dans le Crochet dans CodeIgniter 2.1.0
J'utilise CodeIgniter avec la version 2.1.0. Je veux utiliser des Crochets pour l'authentification de la connexion. Cela signifie que je veux dans chaque contrôleur de vérifier les données de la session si loggedin ou pas. Je tiens donc à utiliser des crochets. Je fais le code suivant pour le faire:
Dans le fichier de configuration
$config['enable_hooks'] = TRUE;
Dans le fichier hooks.php
$hook['post_controller_constructor'][] = array(
'class' => 'SessionData',
'function' => 'initializeData',
'filename' => 'loginHelper.php',
'filepath' => 'hooks',
'params' => array()
);
Dans le fichier loginHelper.php
class SessionData{
var $CI;
function __construct(){
$this->CI =& get_instance();
}
function initializeData() {
//This function will run after the constructor for the controller is ran
//Set any initial values here
if (!$this->session->userdata('username')) { //This is line 13
redirect('login');
}
}
}
Mais il génère l'erreur suivante:
A PHP Error was encountered
Severity: Notice
Message: Undefined property: SessionData::$session
Filename: hooks/loginHelper.php
Line Number: 13
Comment puis-je résoudre ce problème?
OriginalL'auteur Ariful Islam | 2012-03-24
Vous devez vous connecter pour publier un commentaire.
"Appelé très tôt au cours de l'exécution du système. Seul l'indice de référence et les crochets de la classe ont été chargés à ce point..."
Vous devez charger toutes les bibliothèques et modèles manuellement que vous utilisez à l'intérieur de Crochet:
Et l'utilisation
$this->CI->session->userdata()
au lieu de$this->session->userdata()
.La première phrase est la description de l'
pre_system
maintenant. Pas sûr à ce sujet avant.OriginalL'auteur safarov
Comme mentionné par safarov, à ce point quand votre crochet est en cours d'exécution, pas de bibliothèques sont chargées par le CodeIgniter système et uniquement de référence et des crochets bibliothèques sont chargées. À ce stade, vous pouvez utiliser n'importe quel CodeIgniter caractéristiques qui sont chargés au Contrôleur de temps de fonctionnement.
Dans votre classe
sessionData
vous devez charger la classe session à l'aide de la CodeIgniter super objet.Le code ci-dessus est modifié votre code, et j'ai placé le code safarov mentionné.
OriginalL'auteur SudhumSoft
OriginalL'auteur Gianpiere
Je suis en supposant que vous avez oublié de charger votre session de la bibliothèque.
OriginalL'auteur Bananenspin
La solution est l'extension de la CI_Controller exemple:
OriginalL'auteur Gianpiere
Vous devez utiliser le get_instance de sorte que vous pouvez accéder à la bibliothèque de la session
Enregistrer le membre id de session dans $member_id
De charger la bibliothèque du membre
Utiliser le $member_id dans la méthode de membre de la bibliothèque
OriginalL'auteur Ahmed Al Bermawy