Perte des variables de sessions
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.
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.
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.
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.
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
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 :
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
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.
le 16/07/2006 à 17:22
Dayom
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
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 :)
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: