Page 1 sur 2
deux petites questions de la part d'un newbie
Posté : 18 mai 2005, 13:26
par le paumé
1_ j'ai plus ou moins "securisé" mon site mais il reste une faille enorme, il suffit qu'un petit malin clique sur le bouton precedent et il a acces a des pages quil nest plus senser avoir accés c'est pourquoi je cherche une solution pour que le bouton precedent ne puisse plus faire effet je pense quil doit y avoir plusieurs solution a mon petit probleme <JavaScript> <php> voir Tag je n'ai pas de preference pourvu que ca marche !
2_ J'ai un souci avec la destruction de session je ne suis pas du tout sure que ce que je fais detruit bien la session :
Code : Tout sélectionner
// On appelle la session
session_start();
// On écrase le tableau de session
$_SESSION = array();
// On détruit la session
session_destroy();
ci une personne pourait m'aider sur ces deux petites questions ce serait fort sympathique merci d'avance
Posté : 18 mai 2005, 13:31
par zeus
Pour la 1ere question, j'aimerais bien le savoir !!!
2eme question, si tu fait session_destroy(), tu détruit toute les variables de sessions sur ton serveur, c'est sensé suffire !!! C'ets bien de vouloir effacer tes variable manuellement avant, tu es sûr que tout est effacé, mais je ne suis pas sûr que
// On écrase le tableau de session
$_SESSION = array();
Face vraiment ce que tu crois réellement qu'il fait. De plus, je ne pense pas que ça soit nécessaire !!! Je demande l'avis de quelq'un qui sait !!!
Posté : 18 mai 2005, 13:37
par ZeRo[^L^]CoOOL
comment ca lorsqu'il fait précédant il a accès a des pages... t sure que t'a mis de la sécurité sur ces pages.
tu peut nous mettre un peux de ton code ?? juste le code de la vérification de la session (la partie sécurité ds la page)
Posté : 18 mai 2005, 13:37
par Cyrano
Les deux problèmes peuvent se rejoindre: au lieu de détruire la session, tu peux modifier la valeur d'une variable de session. Au début de la page vers laquelle on ne devrait pas pouvoir retourner, teste la valeur de cette variable et si la valeur est celle qui a été initialisée pour empêcher le retour, tu affiches autre choses ou tu rediriges vers la bonne page.
Donc, page 1, tu as par exemple $_SESSION['internaute'] qui vaut "visiteur", dans page 2, tu mets
unset($_SESSION['internaute']);
$_SESSION['internaute'] = "membre"
Dans ta page 1, tu fais:
if(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "visiteur")
{
// affichage normal
}
elseif(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "membre")
{
// autre affichage ou redirection vers une autre page.
}
Posté : 18 mai 2005, 13:41
par zeus
Justement,
Cyranno, je me posai une question et vu le code que tu viens de poster, je pense que tu peux me répondre :
if(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "visiteur")
Si $_SESSION["intrenaute"] n'existe pas, le test sur cette variable ($_SESSION['internaute'] == "visiteur")) doit provoquer une erreur, non ?
Dans le doute j'ai testé et je me suis rendu compte que ça fonctionnais !!! Je trouve ça illogique puisque, normalement, php doit interpréter les 2 termes et non pas s'arrêter au 1er terme si il est faux !!!!
Posté : 18 mai 2005, 13:45
par Cyrano
Mon code en réalité est incomplet:
if(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "visiteur")
{
// affichage normal
}
elseif(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "membre")
{
// autre affichage ou redirection vers une autre page.
}
else
{
$_SESSION['internaute'] = "visiteur";
// affichage normal
}
De cette manière, je prévois tous les cas: les deux premiers si la variable existe et en fonction de la valeur on affiche tel ou tel contenu et si elle n'existe pas, on la crée et on fait un affichage normal.
Posté : 18 mai 2005, 13:49
par zeus
Ce que je voulais savoir, c'était ça :
if(isset($_SESSION['internaute']) && $_SESSION['internaute'] == "visiteur")
Quand on arrive sur ce test, comment est-ce que fonctionne l'interprétation php ?
Est-ce qu'il teste le 1er terme (isset($_SESSION['internaute'])) et si il retourne faux il ne teste pas le second terme ($_SESSION['internaute'] == "visiteur") ?
Parce que si il teste les 2 termes, le 2nd devrait déclencher une erreur si $_SESSION['internaute'] n'existe pas ??
Posté : 18 mai 2005, 13:52
par Cyrano
Le test va porter d'abord sur la première condition, puis sur la seconde: si la première n'est pas vérifiée, le second test est inutile, donc on passe au elseif
Mais dans tous les cas, les deux conditions du premier if doivent être vraies pour que soit exécutée l'instruction: si une seule des deux est fausse, tout le if retourne FAUX et on passe au elseif.
Posté : 18 mai 2005, 13:55
par Cyrano
Alors, en fait, on peut subdiviser, ce sera plus clair et surtout plus juste :
<?php
if(isset($_SESSION['internaute']))
{
if($_SESSION['internaute'] == "visiteur")
{
// affichage normal
}
elseif($_SESSION['internaute'] == "membre")
{
// autre affichage ou redirection vers une autre page.
}
}
else
{
$_SESSION['internaute'] = "visiteur";
// affichage normal
}
?>
Posté : 18 mai 2005, 13:56
par zeus
Merci Cyrano
Je connaissais le ET logique mais je voulais connaître le fonctionnement de bas niveau selon PHP
Re: deux petites questions de la part d'un newbie
Posté : 18 mai 2005, 15:12
par albat
2. J'ai un souci avec la destruction de session je ne suis pas du tout sure que ce que je fais detruit bien la session :
session_start(); // On appelle la session
...
$_SESSION = array(); // On écrase le tableau de session
session_destroy(); // On détruit la session
C'est nickel ! =D>
Si tu fait session_destroy(), tu détruit toute les variables de sessions sur ton serveur, c'est sensé suffire !!!
Erreur ! [-X
session_destroy();
Cette fonction détruit la session en cours. Mais elle ne détruit pas les variables de sessions associées à la session courante.
http://www.phpdebutant.org/article69.php
Posté : 18 mai 2005, 15:15
par ZeRo[^L^]CoOOL
Il faut faire session_unset() je crois
Posté : 18 mai 2005, 15:17
par zeus
Posté : 18 mai 2005, 17:36
par albat
Moralité :
Mammouth > dieu antique

Posté : 18 mai 2005, 23:10
par le paumé
Premierement je tiens à remercier tout le monde sur ce forum en effet j'ai posé mes questions il y a moins de 12h et je vois que plusieurs personnes ont pris la peine de lire mes petites questions et me répondent du mieux quelles peuvent.
donc un grand merci à tous les membres de ce forum
deuxiemement je prend note de vos reflexions et je teste tout ca demain à priori devrait pas y avoir de problème mais je suis le roi du codage farfelu alors on sait jamais ! lol @+ et MERCI à tous
