Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

UN TITIT TUTO SUR LES SESSIONS


Information sur la source

Catégorie :Tutoriaux Niveau : Débutant Date de création : 12/06/2004 Date de mise à jour : 12/06/2004 09:12:43 Vu / téléchargé: 28 687 / 5 612

Note :
9,5 / 10 - par 12 personnes
9,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (28)
Ajouter un commentaire et/ou une note

Description

Ben voila, c'est un petit tuto sur les sessions...
Je vous explique comment:
* démarrer / détruire une session
* enregistrer / supprimer des variables de sessions
* un petit exemple de zone membre
* un autre exemple: comment détecter si le visiteur accepte les cookies et qu'est ce qu'il faut faire si ce n'est pas le cas
 

Conclusion

Voila, j'attends vos commentaires et critiques pour le mettre à  jour!

@++

R@f
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de plopman le 12/06/2004 14:43:49

Bravo, voila un bon commantaire, bien presenté et soigné :o) . Tres comprehensif pour tout le monde, encore bravo .
Moi je dis 9/10
Pour ton exemple, meme si il ne faut pas tout mélanger, tu aurais pu faire un exemple complet avec inscriptions de membres ... ( avec Bdd ou docs Text )
Bonne continuation
PLopman

signaler à un administrateur
Commentaire de coockiesch le 12/06/2004 14:45:15

Salut!
Je vais voir poure faire cet update.
Merci pour ton commentaire!

@++

R@f

signaler à un administrateur
Commentaire de Nox le 12/06/2004 19:06:49

Salut!

Merci pour ce rapide et efficace tuto!

Je n'avais jamais touché aux sessions avant, et ça m'a beauoup apporté, je commençais justement un nouveau site ;)

Merci! 9/10

signaler à un administrateur
Commentaire de RedFo1 le 13/06/2004 08:04:29

salut,

merci pour ce tut tout simple. J'ai remplacé les cookies par des sessions sans problème :)
Par contre, je me demande juste : dans la fonction de déconnexion, est-ce vraiment nécessaire de mettre session_unset() puis session_destroy() ? Je n'ai mis que session_destroy() et ça marche sans problème (le serveur supprime le fichier de session et on est bien déconnecté) Est-ce qu'il vaut mieux ajouter session_unset() pour des raisons de sécurité ou est-ce que ça va ?

@+

signaler à un administrateur
Commentaire de RedFo1 le 13/06/2004 08:29:48

et j'ai aussi oublié : est-ce qu'il ne faudrait pas mettre des session_destroy() un peu partout où un login faux génère une erreur ? A chaque fois, la fonction session_start() génère une session si l'utilisateur n'autorise pas les cookies... ça fait vite beaucoup de fichiers sur le serveur... Par exemple, que se passe-t-il si une personne non connectée et refusant les cookies ouvre page2.php et la raffraîchit 10 fois ? Je n'ai pas essayé, mais à mon avis il crée 11 sessions sur le serveur.
pour la page2, je mettrais bien :

if(!isset($_GET['SID'])){die("Pas de session ouverte");}
session_id($_GET['SID']);
session_start();
echo 'La variable de session vaut: ' . $_SESSION['variable'];
echo '<br><br><a href="' . url('page3.php') . '">Page3</a>';

et pour membre.php :
session_start();
if(!isset($_SESSION['pseudo']))
{
header("location: index.php"); // redirection
session_destroy();
exit; // arrêt du script
}

enfin... je débute alors j'en suis pas sûr, mais en tout cas avec ce genre de précautions, mon serveur garde son dossier de sessions vide quand je vais dans un espace réservé sans cookies et sans être loggué.

@+

signaler à un administrateur
Commentaire de coockiesch le 13/06/2004 11:57:12

Salut!
De toute facon, les sessions sont supprimées après le temps limite... Je peux pas tester pour la création de 11 fichiers car mon titi serveur est down, paix à son âme. Mais je le ferai dès que j'aurai formaté le tout, :D

Le session_unset n'est pas obligatoire, un moyen de bien enfoncer le clou, ;-)

Merci pour vox commentaires

@++

R@f

signaler à un administrateur
Commentaire de koko le 13/06/2004 14:47:11

un autre moyen pour détruire les variables de sessions :
$_SESSION = Array();
:)

mais il y a certains trucs (bon des détails c'est vrai) comme les pour les <br> ! <br /> est mieux :p
<input type="text" ... /> a la place de <input type="text" ... >
le xhtml !

j'ai eu peur de voir des fonctions obsolètes mais c'est bon ^^

signaler à un administrateur
Commentaire de coockiesch le 13/06/2004 17:07:48

"j'ai eu peur de voir des fonctions obsolètes mais c'est bon ^^"
Dans le genre session_register et $HTTP_SESSION_VARS ??? :D

P.S Comme je l'ai dis au début du tuto, je m'attarde pas sur le (X)HTML... Bien que je risque de faire un formulaire d'inscription comme l'a suggéré plopman.

@++

R@f

signaler à un administrateur
Commentaire de koko le 13/06/2004 19:38:04

"Dans le genre session_register et $HTTP_SESSION_VARS ??? :D"
tout a fait ^^

signaler à un administrateur
Commentaire de kimmelf2 le 13/09/2004 00:06:26

actuellement, je travail sur un groupware (eGroupWare pour etre precis). c'est un ensemble d'applis (calendrier, carnet d'adresse, editeur de site ....) regroupees pour generer le "vrai" site. c'est a dire que tu te log une fois au debut et ensuite ca te donne acces (en fonction de tes droits evidemment) a l'admin des differentes applis.

la seule page qui est accessible sans login, c'est le resultat du generateur de site, qui comme son nom l'indique sert a generer un site public... :-)

j'ai bien compris le principe dans l'ensemble : on choppe l'id se session dans le cookie, on le verifie dans la bdd, si c'est ok on accede a la page demandee, sinon on est renvoye a la page de loggin. c'est simple car tout est soumis aux sessions sauf le site genere donc il suffit de retirer dans le site genere le bout de code qui test la session.

moi, voici ce que je veux faire :

je prend un compte gratos chez www.hebergeur.com (nom generique, je ne saismeme pas si ca existe :-) ) =>
www.hebergeur.com/moncompte/

quelqu'un qi tape cette url tombe sur un site public qui va afficher par exemple des news, proposer des downloads (legaux evidemment, des projets persos surtout) etc.

par contre, si je tape www.hebergeur.com/moncompte/admin/loggin.php, que je tape mon loggin/pwd, je suis renvoye sur la page d'acceuil www.hebergeur.com/moncompte qui me propose alors toutes les options d'admin des modules : un lien pour administrer les news, un lien pour administrer les downloads ....

peux tu me donner des conseils ???

merci d'avance

signaler à un administrateur
Commentaire de coockiesch le 13/09/2004 18:27:47

Salut!
Je comprends pas trop... Quel est le pb précis?

@++

R@f

signaler à un administrateur
Commentaire de kimmelf2 le 13/09/2004 23:07:12

en fait, je me suis trop complique pour rien !!!
ce que je voulais, c'est un peu comme ici : on arrive sur un site avec divers modules : "pub & sponsors" , "pub" , "rechercher sur le site" ..... dans lesquels on ne peut rien configurer . normal :-)

par contre, lorsque l'admin se log, (je suppose) il peut choisir de voire le site + des liens d'admins pour chaques blocs.

je m'explique : le site propose sans doute des liens dans la barre de titre de chaque module. ainsi, un bloc avec le titre "pub" pourrais voire, pour l'admin, son titre devenir "pub - deplacer le bloc - modifier le bloc - supprimer le bloc" et c'est exactement ca que je veux obtenir

je pense avoir ete + clair

en fait, je cherchais trop complique, je ne sais meme pas trop ce ke je cherchais de si dur ....

c'est hyper simple :
-1- un page de log
-2- une BDD qui me stock les logins, passwords, et statut de l'utilisateur : 2=admin, 1=abonne, 0=anonyme
-3- une fonction qui affiche un text en fonction du statu du user, style
function sess_print($statut, $txt)
{
if ($_SESSION['statut'] >= statut) print $txt;
}
-4- arrivee sur le site : considere comme anonyme
-5- qd le user se log, on place dans la session une variable qui stock le statu du user en question
-6- pour gerer les liens d'admin (cas ou les blocs sont generes par des classes)
echo $this->titre;
sess_print(ADMIN , " - <a href=\"modif.php?block_id=XXX\">Modifier ce bloc</a> - <a href=................);

ainsi : (ANONYME, "txt") affiche le texte a tout le monde
(USER, "txt") affiche le texte pour un user ou l'admin
(ADMIN, "txt") affiche le texte uniquement pour l'admin

netement + simple que ce que je prevoyais

signaler à un administrateur
Commentaire de coockiesch le 14/09/2004 17:47:03

Salut!
Ce que je veux dire, c'est tu attends quoi de moi? Je peux pas te faire un script, alors... ?

@++

R@f

signaler à un administrateur
Commentaire de kimmelf2 le 14/09/2004 23:18:57

tiens mon 2e post n'est pas passe ...

a l'origine, je cherchais des conseils pour mettre au point la gestion d'acces a mon site. je me suis rendu compte que je m'etais complique le truc pour rien. et j'ai donne le principe de ce que je vais mettre en place au cas ou ca interresserai quelqu'un. c'est peut etre pas la meilleure soluce mais bon .....

sinon y'a un truc que je comprend pas trop : en regardant plusieurs sources de groupwares, beaucoup lient leur gestion de session a une BDD. est ce que c'est vraiment utile ???

je ne parle pas de sauvegarder les donnees stockees dans la session vers la BDD, si on donne la possibilite a un utilisateur de parametrer son espace de travail par exemple, c'est normal de le sauvegarder pour le ressortir la fois suivante.

je parle en fait d'une sorte d'historique des sessions.
c'est utile ?????

signaler à un administrateur
Commentaire de coockiesch le 15/09/2004 10:51:00

Bon, ca va etre dur de continuer comme ca... Si tu veux, files moi tom adresse MSN par message privé et on voit...

@++

R@f

signaler à un administrateur
Commentaire de apz le 25/10/2004 00:00:29

Meme avis que plopman,

Citation:

Plopman a dit :

Bravo, voila un bon commantaire, bien presenté et soigné :o) . Tres comprehensif pour tout le monde, encore bravo .
Moi je dis 9/10
Pour ton exemple, meme si il ne faut pas tout mélanger, tu aurais pu faire un exemple complet avec inscriptions de membres ... ( avec Bdd ou docs Text )
Bonne continuation
PLopman
------------------------------------------------------------------

Bonne continuation merci.

signaler à un administrateur
Commentaire de Arnauti le 27/11/2004 19:59:34

Bonjour, super code mais je n'arrive pas à le faire par mysql .
Je m'explique :

J'ai plusieur user et donc j'ai une table Internaute et je ne sais pas comment faire pour faire les vérifications à partir de ma table.

SI quelqun peut m'aider SVP

signaler à un administrateur
Commentaire de coockiesch le 28/11/2004 01:03:48

Salut!
Tu fais un truc genre:
SELECT pass FROM tbl_membres WHERE pseudo='$pseudo'

Si tu as 0 retours --> le gars s'est planté de pseudo
Sinon: tu compares les pass

@++

R@f

signaler à un administrateur
Commentaire de Matt 261 le 20/07/2006 16:26:47

Excellent ce tuto ! Travail remarquable bravo. Une petite question tout de même : comment adapter ce tuto pour que l'on aille chercher les membres dans un base de donnée?

signaler à un administrateur
Commentaire de coockiesch le 20/07/2006 16:45:19

Salut!
Il faut remplacer la partie:
/*
Vérification des données
Notez qu'il est possible de vérifier ces valeurs
dans une base de données pour gérer plusieurs utilisateurs
*/
if($password == 'pass' && $pseudo == 'toto')
{
$_SESSION['pseudo'] = 'toto'; // création d'une variable de session
header("location: index.php"); // redirection
exit;
}
// si le pseudo est faux
else if($pseudo != 'toto')
{
header("location: index.php?erreur=1");
exit;
}
// le mot de passe est faux
else
{
header("location: index.php?erreur=2");
exit;
}

Par les requêtes MySQL et les tests:
- on fait un select selon le nom ( on récupère le mot de passe ):
si on a 0 retours --> pseudo n'existe pas
- on compare le passe de la bdd avec celui donné:
si c'est différent, password incorrect...

Voilà, en espérant que ça t'aide...

@++

R@f

signaler à un administrateur
Commentaire de Matt 261 le 20/07/2006 16:51:20

Merci pour ta réponse (ultra) rapide -! C'est sympa. - qui m'éclaire un peu. Si ce n'est pas trops demander, est-ce que tu pourrais eventuellement me faire un exemple car je viens de me plonger dans le php il y a juste quelques jour, me rendant compte en faisant mon site web que le php serait indisponible. Merci d'avance ! :D

signaler à un administrateur
Commentaire de coockiesch le 21/07/2006 14:54:33

Salut!
Contacte moi par MP, si tu veux... Tu peux me filer ton MSN, aussi, :)

@++

R@f

signaler à un administrateur
Commentaire de Matt 261 le 21/07/2006 15:09:53

Ok d'accord, je t'envoie un MP tout de suite. Merci beaucoup :D .

@+
Matt

signaler à un administrateur
Commentaire de tibob135 le 04/12/2007 01:46:49

EllE est où la table?

merci

signaler à un administrateur
Commentaire de coockiesch le 04/12/2007 07:21:03

Salut!
Nulle part ;-)

D'ailleurs, la description n'en parle pas:
on
Ben voila, c'est un petit tuto sur les sessions...
Je vous explique comment:
* démarrer / détruire une session
* enregistrer / supprimer des variables de sessions
* un petit exemple de zone membre
* un autre exemple: comment détecter si le visiteur accepte les cookies et qu'est ce qu'il faut faire si ce n'est pas le cas

Raf

signaler à un administrateur
Commentaire de dededede4 le 12/05/2008 14:33:46 7/10

pas mal...

Dommage, tu aurait tu faire quelque petit détail qui facilite la vie,
genre la conecte a cql, et une liste des persone inscrite avec leur date...

Simple, sa m'auré évité de copier coller des truk :D

signaler à un administrateur
Commentaire de dededede4 le 12/05/2008 16:11:32

--'
Jsuis con :D
J'ai pas regarder le scriipt conplétement, ne lit pas les connerie que j'ai a propo de sql x)

signaler à un administrateur
Commentaire de nono171 le 06/07/2008 22:24:04 10/10

J'ai vraiment trouvé ça instructif, merci beaucoup !

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.