Perte des variables de sessions

Répondre
Dayom
le 16/07/2006 à 01:39
Dayom
Bonjour,

J'ai un problème lors du passage de mon script login.php à mon script admin.php

(les deux codes sources :)

login.php
admin.php

Le code n'est pas commenté, je m'en excuse, si vous voyez quelque chose qui pourrai m'aider ...

A oui au faite ^^, le problème : le print_r de $data dans login.php affiche bien le tableau, celui de $_SESSION aussi, malheuresement le print_r de $_SESSION dans admin.php n'affiche rien, et je ne comprends pas pourquoi.

Merci d'avance du temps que vous voudriez bien me consacrer.

Bastien.
i M@N
le 16/07/2006 à 10:24
i M@N
Hello !

ça paraît évident :

<?php
if(isset($_SESSION['id'])) {
session_destroy();
echo('tricheur ! Code: 001');
exit;
}
else {
print_r($_SESSION);
}
?>

Comment veux-tu afficher une variable de session si tu les as toutes détruites ?

Manuel : session_destroy

@+...
One Love, One Heart, One Unity.
i M@N
le 16/07/2006 à 11:01
i M@N
Reuh ...

En regardant de plus près il faudrait que tu déclares la variable de session $id dans ton login.php ... là tu mets tout un tableau apparement :

/*...*/

else {
include('../inc/opendbadmin.inc.php');
$query = 'SELECT * FROM user WHERE login="'.$_POST['log'].'";';
$res = sqlite_query($db,$query);
$data = sqlite_fetch_array($res);


$id = $data['id'];

$blabla = $data['blabla'];

sqlite_close($db);
}

/*...*/

else {
$_SESSION['id'] = $id;
$_SESSION['blabla'] = $blabla;
echo ('
<p>Vous etes identifié</p>
<p><a href="admin.php">Acceder à l\'interface</a></p>');
echo $_SESSION['id'];
echo $_SESSION['blabla'];
}

@+...
One Love, One Heart, One Unity.
Dayom
le 16/07/2006 à 12:50
Dayom
La variable $data['id'] existe déja, un echo dans login.php nous confirme qu'elle fonctionne, la structure de la base est :

TABLE user (id INT(3), login VARCHAR(8), password VARCHAR(8), nom TINYTEXT)

Pour ton premier message, le script ne detruit la session que si $_SESSION['id'] n'est pas défini, or il est défini, mais vide.
JuTs
le 16/07/2006 à 16:42
JuTs
deux remarques :

- isset vérifie qu'un variable est définie mais cela ne signifie pas obligatoirement qu'elle n'est pas vide

- ton code n'est pas terrible niveau sécurité. vérifie tes variable avant d'effectuer tes requêtes sql. Là tu as un gros risque d'injection sql.
JuTs
JuTs
le 16/07/2006 à 16:42
JuTs
Hum... mon post à foiré... voici le début :


Ce n'est pas ce que tu fait dans ton code :

<?php
if(isset($_SESSION['id'])) {
session_destroy();
echo('tricheur ! Code: 001');
exit;
}
?>


Là tu vérifie si $_SESSION['id'] existe et si elle existe, tu détruis la session. Ca ne serait pas plutôt if(!isset($_SESSION['id']))
JuTs
Dayom
le 16/07/2006 à 17:19
Dayom
Merci pour le conseil sur la sécurité, j'y penserai dès que j'aurai résolu ce problème, en faite j'ai remplacé par empty($_SESSION['id'])), je reposte mon code (que j'ai commenté) sur le Wall.
JuTs
le 17/07/2006 à 18:44
JuTs
au moment du

<?
foreach($data as $key=>$val) {
$_SESSION[$key] = $val;
}
?>


tu es sûr que ton $data['id'] existe ?
JuTs
Dayom
le 20/07/2006 à 18:38
Dayom
Oui j'en suis sur, mais j'ai "résolu" mon problème en changeant completement l'optique du script, et oh miracle, ça fonctionne.

Merci quand même :)
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours