Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
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. |
||
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
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
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 :
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
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:
<?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
session_name() tu t'en fous un peu.
par contre, toutes tes variables de session doivent être enregistrées en faisant :
session_start();
$_SESSION['Login'] = $Login;
session_register('Login');
Ensuite, sur les pages ou tu as besoin de retrouver tes variables :
session_start(); echo $_SESSION['Login'];
Hors ligne
le session_register('Login'); juste apres le $_SESSION est obligatoire? car ca march comme ca pr linstan
Hors ligne
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
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
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
J'ai essayé et cela ne marche pas: je fais:
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
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