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 [2012/12/08 20:21] – [Sessions CodeIgniter] jcheronslam4:php:codeigniter:session [2019/08/31 14:21] (Version actuelle) – modification externe 127.0.0.1
Ligne 2: Ligne 2:
  
 <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>
 +
 +  - [[slam4:php:codeigniter|Introduction à CodeIgniter]]
 +  - [[slam4:php:codeigniter:helpers|Helpers]]
 +  - [[slam4:php:codeigniter:libraries|Bibliothèques]]
 +  - Sessions CodeIgniter
 +  - [[slam4:php:codeigniter:validation|Validation des formulaires]]
 +  - [[slam4:php:codeigniter:orm|ORM IgnitedRecord]]
 +  - [[slam4:php:codeigniter:doctrine|Doctrine]]
 +  - [[slam4:php:codeigniter:javascript|Javascript et codeIgniter]]
  
   * [[http://ellislab.com/codeigniter/user-guide/libraries/sessions.html| Aide codeIgniter sur les sessions]]   * [[http://ellislab.com/codeigniter/user-guide/libraries/sessions.html| Aide codeIgniter sur les sessions]]
Ligne 61: Ligne 70:
                );                );
  
-$this->session->set_userdata($newdata);+$this->session->set_userdata("user",$newdata);
 </code> </code>
  
Ligne 88: Ligne 97:
 $this->session->set_flashdata('item', 'value'); $this->session->set_flashdata('item', 'value');
 </code> </code>
 +
 +===== 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 :
 +
 +<sxh php;title:Utilisateur.php>
 +/**
 + * Utilisateur
 + */
 +class Utilisateur
 +{
 +    ...
 +    public function __sleep(){
 +    return array('id','login','password','nom','prenom','mail');
 +    }
 +}
 +</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>
 +
 +<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.1354994507.txt.gz
  • Dernière modification : il y a 6 ans
  • (modification externe)