Accueil > > > TOUT SUR LES SESSIONS
TOUT SUR LES SESSIONS
Information sur la source
Description
Comme promis a hicksman voici un tuto sur les sessions. Vous trouverez d'abord un petit exemple de 5 pages qui montre l'utilisation simple d'une session, comment on enregistre des variable, comment on les éffaces, comment on ferme la session ... Ensuite vous trouverez les explications sur toutes les fonctions relatives aux sessions. Pour faire ce tuto, je me suis aidé de "la bible php" pour certaines fonctions que je n'utilise jamais. Je vous conseil ce livre de 1400 pages trés complets mais assez cher par contre :-/ (59? essayez la fnac c'est moins cher souvent)
Source
>>>>> page index.php
<?
$variable = "tortue"; // on initie la variable
session_start(); // Démarage de la session OBLIGATOIRE
session_register("variable"); // On enregistre une variable appelée "variable" dans la session SANS LE $ DEVANT
if (session_is_registered(variable)) // si la variable est enregistrée
{
echo "Variable de session <b>enregistrée</b> ...<br>";
echo "<a href=\"viewsession.php\">Options des sessions</a><br>";
echo "<br><br>L'id de la session est <b>".session_id()."</b> ";
exit;
}
else // La variable n'est pas enregistrée
{
echo "Variable de session <b>non enregistrée</b> ...";
exit;
}
?>
----------------------------------------------------------------------------------------
>>>>> page viewsession.php
<?
session_start(); // Démarage de la sessions OBLIGATOIRE
echo "La variable de session qui a été enregistrée est <b>".$_SESSION[variable]."</b><br>";
echo "<a href=\"ajoutvariable.php\">Ajoutons une variable à la session</a><br>";
// Notez ici le $_SESSION qu'il faut utiliser lorsque register_global est à off
// Nous aurions pu écrire directement $varaible mais
// depuis la dernière version de php les register_global sont à off dans la configuration initial
// dans un soucis de sécurité. Donc pensez à utiliser cette orthographe pour vous servir de vos variables de session
echo "<br><br>L'id de la session est <b>".session_id()."</b>";
exit;
?>
----------------------------------------------------------------------------------------
>>>>> page ajoutvariable.php
<?
session_start(); // Démarage de la sessions OBLIGATOIRE
$nom = "Geniale";
session_register("nom"); // On enregistre une variable appelée "nom" dans la session SANS LE $ DEVANT
if (session_is_registered(nom)) // si la variable est enregistrée
{
echo "Opération réussie, La variable <b>\"nom\"</b> a été enregistrée dans la session<br>";
echo "<a href=\"effacement.php\">Effaçons maintenant la variable \"nom\"</a><br>";
echo "<br><br>L'id de la session est <b>".session_id()."</b>";
exit;
}
else
{
echo "Enregistrement <b>raté</b> ...";
exit;
}
?>
----------------------------------------------------------------------------------------
>>>>> page effacement.php
<?
session_start(); // Démarage de la sessions OBLIGATOIRE
if (session_is_registered(nom)) // si la variable nommée "nom" est enregistrée on peut l'éffacer
{
echo "La variable nom a comme valeur <b>".$_SESSION[nom]."</b><br>";
if (session_unregister(nom)) // si elle est éffacée
{
echo "La variable <b>\"nom\"</b> a été éffacée ...<br>";
echo "La preuve, essayons de l'afficher ici : <b>".$_SESSION[nom]."</b><br>";
echo "<a href=\"destruction.php\">Destruction des variables de session</a><br>";
echo "<br><br>L'id de la session est <b>".session_id()."</b>";
exit;
}
else // éffacement raté
{
echo "Effacement raté ...";
exit;
}
}
else // la variable nommée nom n'existe pas
{
echo "La variable nommée \"nom\" n'existe pas ...";
exit;
}
?>
----------------------------------------------------------------------------------------
>>>>> page destruction.php
<?
session_start(); // Démarage de la sessions OBLIGATOIR
session_unset();
if (session_destroy())
{
echo "A ce stade il nous reste la Variable <b>\"variable\"</b> enregistrée<br>";
echo "Normalement <b>session_destroy</b> et <b>session_unset</b> l'ont détruit, testons ceci : ".$_SESSION[variable]."<br>";
echo "<b>Rien n'apparait</b>, la variable n'existe plus et si il y en avait eu d'autre, elles n'existeraient plus<br>";
echo "Opération réussie<br>";
echo "<br><br>L'id de la session est <b>".session_id()."</b><br>";
echo "Oups elle n'exite plus nom plus ;-)<br><br>";
exit;
}
else
{
echo "Effacement raté ...";
exit;
}
?>
Conclusion
!!! 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 !! ++
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOURTECHDAYS PARIS 2010 : PLEINIèRE DERNIER JOUR par ROMELARD Fabrice
Cette session est la dernière pleinière de ces 3 jours de TechDays Paris 2010. Généralement, cette troisième journée est plus axée sur l'avenir vu par Microsoft. Après un retour sur l'avenir vu par la Science Fiction ou par ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : IMPORT CSVRE : IMPORT CSV par ykhider
Cliquez pour lire la suite par ykhider
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
Comparez les prix

HTC Magic
Entre 429€ et 429€
|