pb de session

Eléphanteau du PHP | 45 Messages

05 sept. 2005, 15:19

Code : Tout sélectionner

Warning: session_destroy(): Trying to destroy uninitialized session in c:\program files\easyphp1-7\www\dubaiboy\my_admin\logout.php on line 2
<?
session_destroy();
echo 'hello';
//header("location: index.php")
?>
session_start se trouve sur index.php

Eléphanteau du PHP | 45 Messages

05 sept. 2005, 15:27

c'est bon ca marche

quand je fais logout la session se detrui, je fais precedente et je peux pas rentrer sur la partie admin, mais quand je fais l'actualisation de la page je peux entrer sur la partie admin, est ce qu'il ya une methode que peut empecher de rentrer mais en cliquand sur actualiser?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

05 sept. 2005, 15:56

j'ai pas trop compris le pb :?
mais essai avec ca:
// On écrase le tableau de session
$_SESSION = array();	

// On détruit la session			
session_destroy();

Eléphanteau du PHP | 45 Messages

05 sept. 2005, 22:31

je m'explik:

session_start pour ouvrir la session
session_destroy pour detruire la session

bon je suis en admin.php et kd je click sur le lien de logout => logout.php la session se detruit, si je click sur le boutton precedente de mn navigateur, je peux pas rentrer, dc la session est deja detruite, mais si je click sur F5 (actualiser) la page admin.php, je me trouve connecter, ce ke je veux faire, si je logout (logout.php),et je click sur precedente pr revenir a la page admin (admin.php), meme si je fais "actualiser" je veux pas ke la page admin s'affiche, mais peut s'afficher un autre message d'erreur ke la session etait deja detruite et je doi me loguer pr rentrer

Mammouth du PHP | 19672 Messages

05 sept. 2005, 23:03

Il y aurait bien plus simple : au lieu de détruire la session, laisse la session mais utilise une variable de session : quand tu te loggues en admin, tu modifie la valeur de la variable, par exemple tu crée une variable $_SESSION['admin'] = "autorise"; et quand tu te déloggues, tu modifie la valeur : $_SESSION['admin'] = "Refuse"; : comme ça, pas de problème, le [F5] n'aura aucun effet.

Et tu ajustes les messages en fonction de la valeur de cette variable quand tu tentes d'accéder à la partie réservée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

05 sept. 2005, 23:30

est ce que je px creer une cookie avec une session et les detruire en meme temps, quand l admin logue la cookie va se creer, et quand il se delogue la session va se detruire et la cookie attachee a cette session oci

http://www.nexen.net/docs/php/annotee/f ... estroy.php

Mammouth du PHP | 19672 Messages

05 sept. 2005, 23:33

Pourquoi veux-tu à tout prix détruire la session ? C'est sans intéret : ce qui est intéressant, c'est le suivi de session et les transmissions de variables tout au long de la session. Tu n'as même plus besoin de créer de cookies.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

05 sept. 2005, 23:41

eh ben le je c pas comment faire LoL je ss pa expert

Mammouth du PHP | 19672 Messages

05 sept. 2005, 23:46

Comprends bien le principe : la session, c'est comme le suivi d'une période dans la navigation sur un site. La période en tant que telle est sans grand intérêt, mar contre elle te permet de tranposter d'une page à l'autre des information qui restent modifiables: donc, en utilisant des variables de session, tu n'a pas besoin de détruire la session. Le "suivi de période", tu le laisse en place: travaille sur les variables de session, ce sera beaucoup plus facile à gérer.

Pose les questions nécessaires si tu captes pas un détail.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

07 sept. 2005, 12:56

merci pour l'explication, mais je veux detruire la session que dans le cas de Deconnexion, je fais cette explication pour savoir si j'ai bien compris le principe ou non.
<?php
...
form.php:

<form method="post" action="verif.php">
username: <input name="username"...>
password: <input name="password"...>
...
</form>

verif.php:

if username = '' => erreur
elseif password = '' => erreur
else
select .... 
//enregistrement de la session
$_SESSION['username'] = $username; 
$_SESSION['password'] = $password; 

echo '<a href="verif.php?page=2&sid=' .session_id().'">Suivante</a>';

// si le login + pass sont incorrects

else
{ 
echo 'access interdi'; 
session_destroy();
} 

deconnexion:

session_unset();
session_destroy();
header("location: index.php")
?>
voila j'espere ke c le principe en general

Mammouth du PHP | 19672 Messages

07 sept. 2005, 13:03

Mais même dans le cas d'une déconnexion, tu n'as pas besoin de détruire la session: il te suffit simplement de ré-initialiser la variable de session qui lui ouvre l'accès aux pages réservées. Si par exemple, tu veux restreindre un accès sur une page admin.php, en début de page admin, tu ajoutes (outre le session_start() bien entendu) un test sur la valeur d'une variable de session, par exemple $_SESSION['acces_admin'] = "autorise"; Quand l'admin se déconnecte, tu fais simplement $_SESSION['acces_admin'] = "non"; En essayant à nouveau d'accéder à la page admin, la valeur de la variable ne sera pas valide pour permettre l,accès, donc on sautera dans le else et le header qui renverra vers la page index ou l'identification.

Et je te signale au passage qu'on ne met jamais le mot de passe en variable de session, il ne doit servir qu'à authentifier l'internaute, mais on ne doit en principe plus en avoir besoin.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

09 sept. 2005, 12:15

voila ce que j'ai fais dans la partie admin.php, je sais pas si c'est correct ou non
if ($_SESSION['acces_admin'] = "autorise")
echo 'bienvenu &nbsp;' .$login. '<br>';
else
{
echo 'quest ce ke tu fais la?';
}

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 sept. 2005, 13:03

Pour ma part je dirai que oui, maintenant jsuis pas un pro comme certains (Cyrano et Cie)

Mais il te mnque un " = ":
if ($_SESSION['acces_admin'] == "autorise")

Eléphanteau du PHP | 45 Messages

09 sept. 2005, 13:06

ca me donne cette erreur

Code : Tout sélectionner

Notice: Undefined index: acces_admin in c:\program files\easyphp1-7\www\dubaiboy\my_admin\login_verify.php on line 11 quest ce ke tu fais la?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 sept. 2005, 13:10

avant de pouvoir faire des tests dessus faut la crée la variable de session:
$_SESSION['acces_admin']='non';
ou "oui" selon les droits de la personne qui se connecte