Page 1 sur 2
session
Posté : 18 mai 2006, 08:45
par béka
Bonjour tout le monde, voila j'ai fait dans une page index.php un formulaire de trois champs nous permetttant de nous identifier grace a une page login.php afin de pouvoir avoir accès à un espace réservé du site. Mais j'aimerais également créer une session pour que l'utilisateur qui s'est identifié ne soit pas obligé de remplir à nouveau le formulaire d'identification. Par exemple, s'il se trouve dans l'espace privé et qu''il retourne sur la page d'accueil alors s'il veut à nouveau accéder a l'espace privé il doit s'identifier. Et justement c'est ce que je voudrais éviter.
Comment faire? Quelqu'un peut-il m'aider car je ne comprends pas très bien la doc sur les sessions.
Voici mon script qui permet de vérifier l'identification :
<?php
/* login.php
description : page de login pour la selection à accès réservé du lycée hippolyte fontaine
Il propose de s'identifier par un couple nom de login/mot de passe
identificateurs et mots de passe sont conservés dans une BDD */
$connection = mysql_connect("localhost","root");
$db = mysql_select_db("hippolyte",$connection);
$sql = "SELECT login_entreprise FROM entreprise WHERE login_entreprise='".$_POST['login']."'";
$result = mysql_query($sql);
$num = mysql_num_rows($result);
if($num > 0) //Le nom de login a été trouvé
{
$sql = "SELECT login_entreprise FROM entreprise WHERE login_entreprise='$_POST[login]' AND nom_entreprise='$_POST[nom_entreprise]' AND password_entreprise='$_POST[password]'";
$result2 = mysql_query($sql);
$num2 = mysql_num_rows($result2);
if ($num2 > 0) // mot de passe correct
{
$_SESSION['auth']="yes";
$logname = $_POST['login'];
$aujourdhui = date("Y-m-d h:i:s");
$sql = "INSERT INTO login_entreprise(nom_login, date_login) VALUES('$logname', '$aujourdhui')";
mysql_query($sql);
if (!headers_sent())
{
header ("Location: reserve/index.php");
exit;
}
}
else //mot de passe incorrect
{
header("location: index.php?messageerreurmdp");
}
}
else //login absent
{
header("location: index.php?messageerreurlogin");
}
?>
Posté : 18 mai 2006, 10:03
par béka
personne ne peut m'aider?
Posté : 18 mai 2006, 10:06
par charabia
Heu...c'était en délestage lol personne n'a dû aller voir ton post pour ça :p
ça va venir
Tu es allé voir la doc ici :
http://phpdebutant.org/article69.php ?
C'est super bien expliqué et tu trouveras ton bonheur sans aucun doute

Posté : 18 mai 2006, 10:46
par ouckileou
Même sans délestage : posté à 8h45, relancé à 10h... c'est peut-être un petit cours comme délai non ?
Posté : 18 mai 2006, 10:55
par béka
les autres post que j'ai déposé, j'avais des reponses rapidement, mais c'est vrai que le matin, je devrais etre plus patient. Désolé
Posté : 18 mai 2006, 10:56
par charabia
Tu es excusée
Alors où en est ton souci ? Tu es allé zeter un oeil sur la doc ?
Posté : 18 mai 2006, 10:56
par béka
J'ai lu la doc oui, mais en fait je ne comprends pas très bien comment marche les sessions. En fait, c'est surtout ca mon probleme.
Posté : 18 mai 2006, 11:02
par charabia
Que ne comprends-tu pas exactement ?
Code : Tout sélectionner
Une session est un mécanisme assez simple géré de manière transparente par le PHP.
A chaque fois qu'une session est démarrée (3 méthodes sont possibles, comme nous le verront plus tard), un identifiant unique est attribué au visiteur. Cet identifiant permettra de le distinguer autres utilisateurs tout au long de sa session. Pendant la session, on pourra à loisir définir des variables qui "suivront le visiteur".
A chaque chargement de page, ces variables seront sauvegardées sous forme sérialisée dans un fichier texte portant le nom de la session
C'est la création et leur utilisation qui te pose problème ? Si tu reprends l'exemple sur le site, c'est exactement ce que tu désires faire.
Posté : 18 mai 2006, 11:11
par béka
ce que je ne comprends pas, c'est comment une session permet à un utilisateur d'avoir accès a plusieurs pages. Comment cela se caractérise?
Posté : 18 mai 2006, 11:25
par charabia
C'est le tit encadré que je t'ai mis plus haut
Code : Tout sélectionner
Une session est en fait un fichier conservé sur le serveur et accessible à vos scripts en fonction d'un identifiant généré à la création. Chaque fois qu'un de vos visiteurs génère une session, un identifiant lui est attribué. Tout ce qui est dans cette session est accessible de partout à vos scripts. On comprend dès lors très vite tout l'intérêt de la chose. En effet, si chaque session est propre à un visiteur, on peut personnaliser nos scripts en fonction du visiteur, ou encore alléger nos requêtes : plutôt que d'aller chercher un pseudonyme dans la base de donnée sur chaque page, vous le rapatriez à l'arrivée du visiteur sur le site, vous le stockez en session et c'est de là que vous y accéderez par la suite.
La session est finalement l'équivalent d'un cookie en plus sécurisé. En effet, étant stocké sur le serveur et non chez le client, elle est plus difficile d'accès aux éventuels pirates. Mais un risque demeure, prenez donc l'habitude de ne pas y stocker des informations trop sensibles. N'oubliez pas également que la session, à la différence du cookie, n'est valable qu'un temps limité (aux alentours des 30 minutes, mais cela dépend de la configuration de votre serveur), et est automatiquement détruite à la fermeture du navigateur du visiteur.
Posté : 18 mai 2006, 11:34
par béka
ok, donc si je résume, une session est un fichieroùsont stockées des info concernant l'utilisateur identifié.
Grace à ce "fichier", il peut avoir accès à différentes pages sans saisir à nouveau un formulaire d'identification. Cette session a une durée définie dans php.ini (j'espere que c'est ca?).
Mais comment, les autres page .php reconnaissent cet utilisateur identifié ?
Posté : 18 mai 2006, 11:40
par ouckileou
En fait tu n'as pas à trop te soucier du fonctionnement des sessions
les sessions servent à stocker des valeurs pour les transmettre entre les pages
après c'est à toi de coder le sécurisation de ton site
Exemple quand on arrive sur une page :
<?php
if ($_SESSION['identifie'] != true) {
// redirection vers formulaire d'authentification
exit();
}
?>
Posté : 18 mai 2006, 11:40
par charabia
Oui tu peux définir le temps dans le php.ini : session.lifetime.
Les autres pages reconnaissent la session dès que tu démarres les sessions avec session_start(); dans tes pages.
Posté : 18 mai 2006, 11:44
par béka
donc si je vous suis, dans mon formulaire d'identification je dois mettre au début session_strat() ?
et pareil dans toutes les autres apges à accès réservé ?
mais ouckileou, pourquoi si $_SESSION = true, on redirige vers le formulaire d'identification ?
Posté : 18 mai 2006, 11:44
par Ryle
Dis toi simplement que la session est un objet associé à la personne qui est connecté (qui permet donc de la distinguer), et qui reste en mémoire sur le serveur.
C'est à toi de mettre dedans les choses qui t'interessent concernant la "session" de l'utilisateur, et d'aller les y récuperer.
Par exemple, lorsqu'un utilisateur s'authentifie en saisissant un login/mot de passe, tu vas aller écrire dans la session pour dire "l'utilisateur est authentifié". Puis sur chacune de tes pages, tu vas aller regarder dans la session si effectivement, l'élément que tu as mis permettant de savoir s'il s'était authentifié est bien présent. S'il n'y est pas, c'est qu'il ne s'est pas loggé et tu peux ainsi lui interdire l'accès à une page en le redirigeant ailleurs
Considère la session comme étant une fiche propre à l'utilisateur sur laquelle tu vas noter les infos qui le concernes, et que tu peux consulter à tout moment pour les vérifier ou les utiliser.
Mais c'est à toi de gérer ce que tu mets dedans, et la façon dont tu l'utilises sur tes pages (accès aux pages, gestion d'un caddie virtuel, etc. )