Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 12-05-2005 04:55:51

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Les sessions: session_start()

Bonjour à tous!
Je bloque la ou il faut definir ou mettre des sessions, en fait, a chaque debut de mes fichiers php je met: session_start() pour démarrer une session, seulement, on peut quand meme acceder à mes pages, il n'y a pas de sécurité!
Comment faire pour bien créer des sessions?
merci!

Hors ligne

 

#2 12-05-2005 05:44:24

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

g compri: des ke lutil c logué on met son login ds $_SESSION, puis on test ds les pages suivantes si la variable log est ds $_SESSION!

Hors ligne

 

#3 12-05-2005 05:50:14

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: Les sessions: session_start()

Perso, ce que je fais, j'enregistre une variable de session lors de l'authentification (genre sessid de 8 charactères aléatoires). Je la stocke dans la session et dans une base SQL. ensuite, sur mes pages sécurisées, je compare ces deux variables. Si il en manque une ou si le strcomp() est faux, alors je renvoie l'utilisateur sur une page d'erreur.

Il faut penser que la session a pu être détruite suite à un timeout c'est pour ca que je renvoie sur une page d'erreur avec un msg genre 'session perdue'.

Il existe aussi une autre solution si tu veux :

Code:

    Header( "WWW-authenticate:  basic  realm='Zone Sécurisée'");
    Header( "HTTP/1.0  401  Unauthorized");

Ca va te donner deux variables : $PHP_AUTH_USER & $PHP_AUTH_PW

Pour l'utilisateur, ca fait la même chose que si tu avais un .htaccess. L'avantage c'est que tu peux tester ces deux variables sur une base SQL.

Hors ligne

 

#4 20-05-2005 05:50:54

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

ok merci, mais lorsqu'un utilisateur démarre une session et fait des modifications dans la base de données, il a du mal à faire correctement d'autres modifications dans la base de données: parfois il met des erreurs!

Pourtant, voici ce que je met à chaque debut de fichier php:

Code:

<?php
session_start();
echo "<body background='fondsanstexte.jpg'bgproperties='fixed' >";
if(!isset($_SESSION['login'])){
 echo "<form action='accueil.htm'><center><h2>Vous ne vous êtes pas identifié!! accès interdit!!</h2>";
 echo "<input type='submit' style='background-color:#DDDD88;' value='Accueil...'>";
}else{

//code source fichier (dont conexion au serveur et a la base de données

}
?>

Ai-je oublié une fonction du genre:  session_name ou  session_register? car je n'ai pas bien compris lutilité de ces dernières!

Hors ligne

 

#5 20-05-2005 06:03:20

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: Les sessions: session_start()

session_name() tu t'en fous un peu.

par contre, toutes tes variables de session doivent être enregistrées en faisant :

Code:

session_start();
$_SESSION['Login'] = $Login;
session_register('Login');

Ensuite, sur les pages ou tu as besoin de retrouver tes variables :

Code:

session_start();
echo $_SESSION['Login'];

Hors ligne

 

#6 20-05-2005 06:08:53

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

le session_register('Login'); juste apres le $_SESSION est obligatoire? car ca march comme ca pr linstan

Hors ligne

 

#7 20-05-2005 06:14:18

palmivore
Modérateur global
Lieu: 49 - Maine et Loire
Date d'inscription: 07-04-2005
Messages: 1783
Site web

Re: Les sessions: session_start()

Ben c'est mieux oais ;o)

Hors ligne

 

#8 25-05-2005 03:13:15

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

ok, c'est ce que j'ai mis dans l'ensemble dans mon code, mais j'ai toujours des erreurs: lorsqu'un utilisateur se connecte et qu'il modifie une valeur dans ma base de données, il doit se reconnecter pour bien modifier une autre valeur, sinon, les données se mélangent!

Par exemple, j'ai une table incident avec un champs type_de_panne, et lorsqu'un connecté déclare une panne de type machine, tout commence bien: il met machine dans type de panne, mais, si sans se reconnecter, il ajoute un autre incident de type utilisateur cette fois, le type reste machine, alors qu'il devrait etre utilisateur.

D'ou cela peut-il provenir?

Hors ligne

 

#9 25-05-2005 03:34:14

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

Sinon, j'ai un autre petit pb: lorsque je veux 'actualiser' une page, et qui'l y a une frame dans cette page, alors il affiche un écran tout gris clair et je suis obligé de me reconnecté, cela vient peut-être du même problème que le message precedent.

Hors ligne

 

#10 25-05-2005 04:01:51

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Les sessions: session_start()

et pourquoi, lorsque le membre modifie ses données, tu ne le déconnecte, et reconnecte pas ??
plutot que de le lui faire ca soi meme, fais le automatiquement...

Hors ligne

 

#11 25-05-2005 07:20:11

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

Ok, mais pour faire cela, je dois simplement fermer sa session et redemarrer sa session en faisant:
session_destroy();
Puis
session_start(); ?  car ca me parait un peu leger

Hors ligne

 

#12 25-05-2005 07:24:17

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Les sessions: session_start()

teste, tu verra si ca fonctionne... wink

Hors ligne

 

#13 25-05-2005 09:58:23

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

J'ai essayé et cela ne marche pas: je fais:

Code:

session_destroy();
session_start();

et cela me mets:

Warning: Cannot send session cache limiter -headers already sent (output started et /home/system/....../Partie 1/pb_inscription.php:3) in /home/system/...../Partie 1/pb_inscription.php on line 133.


(line 133 c'est la ou se trouve session_start())

Hors ligne

 

#14 25-05-2005 10:02:10

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: Les sessions: session_start()

tu supprime la session apres avoir envoyé les headers http...
mets tes fonctions avant tout echo, et caractere html

Hors ligne

 

#15 25-05-2005 10:09:18

pierrot_in
Membre
Lieu: Nord (59)
Date d'inscription: 28-04-2005
Messages: 24

Re: Les sessions: session_start()

J'avais deja, dans tous mes fichiers php, session_start() en 1ère ligne de code, mais la comme je fais un session_destroy() juste avant, je ne peux plus acceder a mes pages!!
Car je teste aussi si la variable $_SESSION['login'] (enregistree lors de lauthentification) existe pour acceder a la suite du code!

Hors ligne