!!! AUCUNE BALISE HTML NE DOIT ETRE ENVOYE AVANT UNE SESSION !!!
Car les sessions modifient le header (entête) de la page et mais quand le header est déjà lancé il ne peut plus être modifié.
- session_start() indique que l'on demande l'ouverture d'une session
- session_register("variable") indique que l'on enregistre une variable dans la session (attention de ne pas mettre le $ devant le nom de la variable)
- session_unregister() permet de détruire une variable de session
- session_is_registered() renvoit si la variable de session existe ou pas
- session_name() permet le connaitre le nom de la session mais vous pouvez trés bien le changer en faisant session_name(nomdemasession)
- session_id() nous permet de connaitre l'id de la session courante. Vous pouvez le changer en faisant session_id(nomdelasession)
- session_destroy() détruit toutes les variables de la sessions en cours
- session_write_close() sert à écrire les données de session et termine la session.
- session_save_path() indique le dossier ou sont enregistrées les sessions sur le server mais vous pouvez modifier ce dossier en faisant session_save_path(chemindemondossier)
- session_get_cookie_params() permet d'avoir tous les renseignements sur la session courante.Tout ça est retourné dans un tableau, utilisons ici la fonction print_r pour afficher tout le contenu du tableau (la fonction print_r affiche le contenu de tout tableau, pas seulement pour les sessions, utilse pour le debug)
Info de la session courante :
Array ( [lifetime] => 0 [path] => / [domain] => [secure] => )
les variables retournées sont :
lifetime -> La durée de vie du cookie de la variable
path -> Le chemin de stockage du cookie de la session
domain -> Le domaine du cookie de la session
secure -> Indique si le cookie de session doit etre envoyé que par une connexion sécurisé
- session_set_cookie_params() permet de modifier les 3 premières variables reçue par session_get_cookie_params(). Méthode d'utilisation :
session_set_cookie_params(durée de vie du cookie de session,Chemin de sotckage du cookie de session,Domaine du cookie de session)
- session_set_save_handler() indique a php d'utiliser des fonctions personnalisées pour la gestions des sessions.
Cette fonction prend 6 attributs :
- Ouvrir
- Fermer
- Lire
- Ecrire
- Detruire
- Nettoyer
pour chacun de ses attributs vous devrez faire une fonction ou vous indiquerez tout ce que vous voulez en vous servant des conseils et des fonctions de cette page.
- session_encode converti l'ensemble des variables de sessions en une chaine de caracteres unique
- session_decode recré les variables de session converties par session_encode
- session_module_name permet de définir ou de connaitre le gestionnaire de session utilisé :
- files : les données sont temporairement enregistrées
- user : vous voulez personnaliser le stockage
- session_cache_limiter() affiche la restriction du cache appliquée. Vous pouvez aussi la définir en faisant session_cache_limiter(Variable)
Variable doit prendre comme valeur :
- nocache pour que la page ne soit pas mis en cache par le client
- public pour autoriser la mise en cache
- private est un peu plus restrictif que public
- private_no_expire permet de ne pas envoyer l'entete expire
- session_cache_expire() sert à définir ou à connaitre la durée avant expiration du cache. Pour changer l'expiration faite session_cache_expire(nombredeseconde)
=== LES ERREURS === (maj 12/11/2003)
J'ai décidé, vu le grand nombre de message que je reçoi portant souvent sur la meme chose, de mettre ici les erreurs les plus rencontrées sur les sessions
--- "Warning: Cannot send session cache limiter - headers already sent ........"
Comme je l'ai dit plus haut, il ne faut pas de html ou une ligne blanche avant le debut de la session. Donc assurez vous que les 2 premieres ligne de votre page soit :
<?
session_start();
Comme ça au moins vous etre sur que votre session sera bien ouverte.
Si dans le script vous avez la meme erreur alors que les 2 premieres lignes sont bonne, cela peut etre du à plusieur chose :
- Vous essayez d'ajouté une variable de session alors que le html a déjà était lancé.
- Une ligne de votre script génére un message d'erreur. Ce message s'affiche (il est donc en html) et donc le html est lancé, modification des header de la page impossible.
===================
Si vous avez d'autres messages d'erreurs qui ne sont pas répertoriés ici, envoyé les moi en précisant (si vous l'avait) la solution. Sinon envoyé moi un message pour que je vous aide.
Voila vous savez tout sur les sessions.
Si vous avez un problemes sur les sessions ou sur autre choses passer sur le forum j'y suis souvent !!
Bon coding !!
++