Sessions qui s'autodétruisent... help !
Dernière réponse : dans Programmation
Bonjour à tous,
Je bosse sur un projet de site web php qui contiendra une partie administration. J'ai déjà developper la majorité de cette zone restreinte par login+pass mais un problème que je ne comprend pas persiste.
J'utilise un système de sessions pour cette zone et donc toutes les pages ont à leur début le fameux session_start(); ainsi qu'une vérification du genre
if ((!isset($_SESSION['var'])) or (!isset($_SESSION['var2']))) {header ("Location :error.php"); exit; }
if (($_SESSION['var']!="string") or ($_SESSION['var2']!="string2")) {header ("Location :error.php"); exit; }
les variables $_SESSION['var'] et $_SESSION['var2'] sont déclarées dans la page qui analyse les log+ pass et qui les acceptent. Bien sur, ces variables ne sont déclarées que si les log et pass sont reconnus.
Quand, je m'identifie, pas de problèmes, je passe, mais au bout d'une durée indeterminée, il me remet à la page de login, soit (en tous cas, c'est ce que je ne comprend pas) la session n'existe plus alors que le cache_expire de mon hébergeur est de 180 soit 3 heures sauf erreurs de ma part et ce problème arrive en moins de 3 heures à chaque fois, ca peut etre 10 min comme ca peut etre 20 etc... Pour info, mon hébergeur est OVH, je ne sais pas si ca a un rapport direct mais ne sait on jamais....
Est ce que vous voyez le problème? Je suis dans mes débuts alors je doute de mon code... J'ai essayé de chercher une réponse mais ca fait deux semaines que je me penche sur le problème sans y voir plus clair.
Merci d'avance pour votre aide.
Je bosse sur un projet de site web php qui contiendra une partie administration. J'ai déjà developper la majorité de cette zone restreinte par login+pass mais un problème que je ne comprend pas persiste.
J'utilise un système de sessions pour cette zone et donc toutes les pages ont à leur début le fameux session_start(); ainsi qu'une vérification du genre
if ((!isset($_SESSION['var'])) or (!isset($_SESSION['var2']))) {header ("Location :error.php"); exit; }
if (($_SESSION['var']!="string") or ($_SESSION['var2']!="string2")) {header ("Location :error.php"); exit; }
les variables $_SESSION['var'] et $_SESSION['var2'] sont déclarées dans la page qui analyse les log+ pass et qui les acceptent. Bien sur, ces variables ne sont déclarées que si les log et pass sont reconnus.
Quand, je m'identifie, pas de problèmes, je passe, mais au bout d'une durée indeterminée, il me remet à la page de login, soit (en tous cas, c'est ce que je ne comprend pas) la session n'existe plus alors que le cache_expire de mon hébergeur est de 180 soit 3 heures sauf erreurs de ma part et ce problème arrive en moins de 3 heures à chaque fois, ca peut etre 10 min comme ca peut etre 20 etc... Pour info, mon hébergeur est OVH, je ne sais pas si ca a un rapport direct mais ne sait on jamais....
Est ce que vous voyez le problème? Je suis dans mes débuts alors je doute de mon code... J'ai essayé de chercher une réponse mais ca fait deux semaines que je me penche sur le problème sans y voir plus clair.
Merci d'avance pour votre aide.
Autres pages sur : sessions autodetruisent help
Lassé par la pub ? Créez un compte
J'ai donc mis session_register("var", "var2",...) avec toutes les variables de sessions sur chaque page. Ca marche un peu mieux à mon gout mais le problème persiste..
Je me demandais si ca faisait un énorme trou de sécurité si je faisais mon propre principe de session, cad, référencé tous les PHPSESSID dans une db parcque j'ai déjà une table qui log toutes les entrées accéptées ou refusées avec les infos comme ip, port server, port client, heure, date, login, etc....
Pour le principe de foreach Crazy, je ne maitrise pas du tout cette fonction, peut tu m'expliquer?
Dsl d'etre une ####rie de newbie !! :-D
Pour vous situer, je vous mets mon code actuel au début de chaque page :
Je me demandais si ca faisait un énorme trou de sécurité si je faisais mon propre principe de session, cad, référencé tous les PHPSESSID dans une db parcque j'ai déjà une table qui log toutes les entrées accéptées ou refusées avec les infos comme ip, port server, port client, heure, date, login, etc....
Pour le principe de foreach Crazy, je ne maitrise pas du tout cette fonction, peut tu m'expliquer?
Dsl d'etre une ####rie de newbie !! :-D
Pour vous situer, je vous mets mon code actuel au début de chaque page :
<? session_start();
$var1 = $_SESSION['var1'];
$var2 = $_SESSION['var2'];
$var3 = $_SESSION['var3'];
$var4 = $_SESSION['var4'];
$var5 = $_SESSION['var5'];
session_register("var1", "var2", "var3", "var4", "var5");
if ((empty($var1)) or (empty($var2)))
{$_SESSION['error'] = 'error1';
header ("Location: error.php");
exit;
}
if (($var1 != "string1") or ($var2 != "string2"))
{$_SESSION['error'] = 'error2';
header ("Location: error.php");
exit;
}
?>
ok, je suis allé voir ton tuto et il ne m'avance pas sérieux....
C'est ce que j'avais au début
le code que j'ai affiché est le code d'après les conseils de Crazy Cat...
Mon code de base était :
C'est ce que j'avais au début
le code que j'ai affiché est le code d'après les conseils de Crazy Cat...
Mon code de base était :
<?
session_start();
if (!isset($_SESSION['var1]) or !isset($_SESSION['var2]))
{
if ($_SESSION['var1'] !="string1" or $_SESSION['var2']!="string2")
{header ("Location: error.php");
exit;
}
}
else
{
header ("Location: error.php");
exit;
}
?>
Sachant que sur ma page de validation de login,
ca donne ca (en gros, je vais pas mettre tout mon code..)
ca donne ca (en gros, je vais pas mettre tout mon code..)
if ($LoginOK == true)
{
$_SESSION['var1'] = "string1";
$_SESSION['var2'] = "string2";
header ("Location: identification.php");
exit;
}
else
{
$LoginOK = false;
header ("Location: error.php");
exit;
}
et le truc, c'est que je ne penses pas etre totalement stupide non plus, ca fait maintenant 8 mois que je me suis passionné pour le php et mysql aussi du coup.
Donc j'ai épluché pas mal de tutos, je pense avoir appris pas mal de choses dans ce laps de tp. Et ce dont j'ai besoin, c'est une zone sécurisée fiable.....
C'est pour ca déjà à la base que je met 2 variables de session à vérifier, je me dit que si un hacker en trouve un, variable + sa chaine de caractére, il lui faudra encore trouver la seconde pour passer dans la zone.
Je me trompe peut etre mais je compte sur les gens qui maitrisent depuis longtp pour me le dire !
Donc j'ai épluché pas mal de tutos, je pense avoir appris pas mal de choses dans ce laps de tp. Et ce dont j'ai besoin, c'est une zone sécurisée fiable.....
C'est pour ca déjà à la base que je met 2 variables de session à vérifier, je me dit que si un hacker en trouve un, variable + sa chaine de caractére, il lui faudra encore trouver la seconde pour passer dans la zone.
Je me trompe peut etre mais je compte sur les gens qui maitrisent depuis longtp pour me le dire !
je pourrais voir ton code initial de A a Z ?
Dans l'ordre :
connection a la base
session_start()
requete pour selectionné le couple user/password (un count ou mysql_num_rows)
si 1 = bon sinon pas bon
t'enregistre
ensuite t'enregistre le login et une autre var en session (surtout jamais le pass)
et sur tes page protégé tu verifie que $_SESSION['login'] (par ex) est bien déclaré et contient bien une chaine de caractere (au final, qui ne soit pas vide) avant d'affiché ou non la page membre.
Dans l'ordre :
connection a la base
session_start()
requete pour selectionné le couple user/password (un count ou mysql_num_rows)
si 1 = bon sinon pas bon
t'enregistre
ensuite t'enregistre le login et une autre var en session (surtout jamais le pass)
et sur tes page protégé tu verifie que $_SESSION['login'] (par ex) est bien déclaré et contient bien une chaine de caractere (au final, qui ne soit pas vide) avant d'affiché ou non la page membre.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :