slam4:php:codeigniter:session

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
slam4:php:codeigniter:session [2014/12/17 03:06] – [Sessions et objets métier] jcheronslam4:php:codeigniter:session [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 99: Ligne 99:
  
 ===== Sessions et objets métier ===== ===== Sessions et objets métier =====
-Pour assurer la persistance des objet en session, il est parfois préférable de sur-définir la méthode **__sleep** de chacun d'entre eux, de façon à définir les membres à sérialiser :+Pour assurer la persistance des objet en session, il est parfois préférable de sur-définir la méthode **_sleep** de chacun d'entre eux, de façon à définir les membres à sérialiser :
  
 <sxh php;title:Utilisateur.php> <sxh php;title:Utilisateur.php>
Ligne 112: Ligne 112:
     }     }
 } }
 +</sxh>
 +
 +<WRAP important round 80%>
 +La limite de taille de la session codeIgniter étant de **4ko**, il peut être nécessaire pour dépasser cette limite d'utiliser la base de données pour les sessions.
 +</WRAP>
 +
 +==== Utilisation de la base de données ====
 +
 +Dans le fichier config.php, modifier la ligne suivante :
 +
 +<sxh php;title:config.php;highlight:[5]>
 +$config['sess_cookie_name'] = 'ci_session';
 +$config['sess_expiration'] = 7200;
 +$config['sess_expire_on_close'] = FALSE;
 +$config['sess_encrypt_cookie'] = FALSE;
 +$config['sess_use_database'] = TRUE;
 +$config['sess_table_name'] = 'ci_sessions';
 +$config['sess_match_ip'] = FALSE;
 +$config['sess_match_useragent'] = TRUE;
 +$config['sess_time_to_update'] = 300;
 +</sxh>
 +
 +Créer la table nécéssaire dans votre BDD sur ce modèle :
 +<sxh sql>
 +CREATE TABLE IF NOT EXISTS  `ci_sessions` (
 + session_id varchar(40) DEFAULT '0' NOT NULL,
 + ip_address varchar(45) DEFAULT '0' NOT NULL,
 + user_agent varchar(120) NOT NULL,
 + last_activity int(10) unsigned DEFAULT 0 NOT NULL,
 + user_data text NOT NULL,
 + PRIMARY KEY (session_id),
 + KEY `last_activity_idx` (`last_activity`)
 +);
 </sxh> </sxh>
  
 <html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:libraries" class="wikilink1" title="slam4:php:libraries"><< Bibliothèques</a></div></html><html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:validation" class="wikilink1" title="slam4:php:codeigniter:validation">Validation des formulaires >></a></div></html> <html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:libraries" class="wikilink1" title="slam4:php:libraries"><< Bibliothèques</a></div></html><html><div class="btn"><a href="/doku.php?id=slam4:php:codeigniter:validation" class="wikilink1" title="slam4:php:codeigniter:validation">Validation des formulaires >></a></div></html>
 +
 +==== Utilisation des sessions natives PHP ====
 +
 +Librairie phpSession : {{:slam4:php:codeigniter:phpsession.php|}}
 +
 +=== Démarrage ===
 +Soit dans autoload.php :
 +<sxh>
 +$autoload['libraries'] = array('phpsession');
 +</sxh>
 +Soit dans un contrôleur :
 +<sxh php>
 +class UnControleur extends \CI_Controller{
 +function __construct()
 +   {
 +        parent::__construct();
 +            $this->load->library('phpsession');
 +   }
 +</sxh>
 +<WRAP round important 80%>
 +Attention, en cas de sérialisation/désérialisation d'objets en session, pour éviter le message d'erreur **_php_incomplete_class object**
 +il est nécessaire de charger les modèles concernés avant le démarrage de la session, la session ne doit dans ce cas démarrer ou reprendre que dans un contrôleur, et non dans l'autoload !
 +</WRAP>
 +
 +
  • slam4/php/codeigniter/session.1418781984.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)