Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2006, 18h08   #1
Invité de passage
 
Inscription : octobre 2002
Messages : 14
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 14
Points : 3
Points : 3
Par défaut Vérifier l'existance d'une session

Bonjour

J'ai un fichier authcheck.php qui vérifie si les paramètres de ma session sont présents. Depuis quelques jours, après quelques manipulations ça ne fonctionne plus. J'essais de trouver ou est l'erreur que j'ai commis et je ni arrive pas.

Voici le processus.

Chaque ficher de mon site à le code suivant après l'entête
Code :
1
2
3
4
5
<?php 
include "auth-config.php";
include "authcheck.php";
 
?>
Le code du fichier auth-config.php est le suivant :
Code :
1
2
3
<?php
$session_timeout=820;
?>
Le code du fichier authcheck.php est le suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
<?php
if(!isset($_SESSION['last_access']) || !isset($_SESSION['ipaddr']) || !isset($_SESSION['user']))
{
  header("Location: https://www.domaine.net/login.php");
  die();
}
 
if(time()-$_SESSION['last_access']>$session_timeout)
{
  unset($_SESSION['last_access']);
  unset($_SESSION['user']);
  unset($_SESSION['ipaddr']);
  unset($_SESSION['repertoire']);
  header("Location: https://www.domaine.net/login.php");
  die();
}
if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr'])
{
  unset($_SESSION['last_access']);
  unset($_SESSION['user']);
  unset($_SESSION['ipaddr']);
  unset($_SESSION['repertoire']);
  header("Location: https://www.domaine.net/login.php");
  die();
}
$_SESSION['last_access']=time();
?>
Si j'accède directement au fichier https://www.domaine.net/login.php tout fonctionne bien, et ma session est ouverte.
Avec le code suivant dans le fichier
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
function CheckUser($login,$md5)
{
$database_localhost = "gestion";
$username_localhost = "user";
$password_localhost = "pass";
 
$localhost = mysql_pconnect($hostname_localhost, $username_localhost, $password_localhost) or trigger_error(mysql_error(),E_USER_ERROR); 
mysql_select_db($database_localhost, $localhost);
 
$sql = "SELECT * from tbl_connexions WHERE pseudo = '$login' AND pass = '$md5' ";
$resultat = mysql_db_query($database_localhost,$sql);
$nombre = @mysql_num_rows($resultat);
 
if (!$nombre || $nombre <> '1'){
return false;
 
}
return true;
 
}
?>
<?php
if(!isset($_POST['md5']))
{
  header("Location: https://www.domaine.net/login.php");
  die();
}
$md5=$_POST['md5'];
 
if(!isset($_POST['login']))
{
  header("Location: https://www.domaine.net/login.php");
  die();
}
$login=$_POST['login'];
 
if(!CheckUser($login,$md5))
{
   header("Location: https://www.domaine.net/login.php");
  die();
}
session_start();
$_SESSION['last_access']=time();
$_SESSION['ipaddr']=$_SERVER['REMOTE_ADDR'];
$_SESSION['user']=$login;
header("Location: index.php");
?>
Mais dès que j'accède à https://www.domaine.net/ je tombe sur une page blanche avec seulement ce code
Code :
1
2
3
4
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
Tout mes test me laisse croire que mon problème est dans mon fichier authcheck.php car si dans le premier if je mets un echo bye a la place du
Code :
1
2
header("Location: https://www.domaine.net/login.php");
  die();
...je reçois une page avec bye écrit.

Merci de votre aide,

Jean-Pierre
jpduches est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 19h50   #2
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
je sais pas si c'est ca mais :

session_start();

doit toujours etre en toute premiere ligne de ton fichier quelqu'il soit

Mais dans la partie apres ceci
Citation:
Si j'accède directement au fichier https://www.domaine.net/login.php tout fonctionne bien, et ma session est ouverte.
Avec le code suivant dans le fichier
c'est pas le cas
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/09/2006, 22h07   #3
Invité de passage
 
Inscription : octobre 2002
Messages : 14
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 14
Points : 3
Points : 3
J'ai ajouté le un session_start();
dans mon fichier authcheck.php et tous fonctionne, bizarre je trouve !

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
session_start();
 
if(!isset($_SESSION['last_access']) || !isset($_SESSION['ipaddr']) || !isset($_SESSION['user']))
{
  header("Location: https://www.domaine.net/login.php");
  die();
}
 
if(time()-$_SESSION['last_access']>$session_timeout)
{
  unset($_SESSION['last_access']);
  unset($_SESSION['user']);
  unset($_SESSION['ipaddr']);
  unset($_SESSION['repertoire']);
  header("Location: https://www.domaine.net/login.php");
  die();
}
if($_SERVER['REMOTE_ADDR']!=$_SESSION['ipaddr'])
{
  unset($_SESSION['last_access']);
  unset($_SESSION['user']);
  unset($_SESSION['ipaddr']);
  unset($_SESSION['repertoire']);
  header("Location: https://www.domaine.net/login.php");
  die();
}
 
$_SESSION['last_access']=time();
?>
Pourtant la session devait être ouverte par mon fichier auth.php sinon il redirigerais vers login.php....

Bon je ne comprend pas mais le problème est réglé.

Merci
Jean-Pierre
jpduches est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2006, 09h32   #4
Membre éclairé
 
Inscription : décembre 2004
Messages : 658
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : décembre 2004
Messages : 658
Points : 317
Points : 317
Pour avoir des sessions a chaque page faut le mettre en toute premiere ligne et dans toutes les pages ou il y a des sessions.

si pas de sessionstart pas de transmission de session et tu perds tout

Il n'y a absolument rien de bizzard c'est comme ca que ca fonctionne et c'est dans la doc
zulot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h51.


 
 
 
 
Partenaires

Hébergement Web