deux petites questions de la part d'un newbie

Petit nouveau ! | 9 Messages

18 mai 2005, 13:26

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 13:31

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 !!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 46 Messages

18 mai 2005, 13:37

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)
L'informatique c'est ma vie

Mammouth du PHP | 19672 Messages

18 mai 2005, 13:37

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.
}
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 13:41

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 !!!!
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

18 mai 2005, 13:45

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 13:49

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 ??
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 19672 Messages

18 mai 2005, 13:52

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

18 mai 2005, 13:55

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
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 13:56

Merci Cyrano

Je connaissais le ET logique mais je voulais connaître le fonctionnement de bas niveau selon PHP
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

18 mai 2005, 15:12

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

Eléphanteau du PHP | 46 Messages

18 mai 2005, 15:15

Il faut faire session_unset() je crois
L'informatique c'est ma vie

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 mai 2005, 15:17

Oups :oops: :oops:

J'ai dit une grosse bétise !!!! :oops: :oops:

Veuillez me pardonner :agenouille:
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

18 mai 2005, 17:36

Moralité :
Mammouth > dieu antique :langue:

Petit nouveau ! | 9 Messages

18 mai 2005, 23:10

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 :pouce:

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 :pouce: :pouce: :pouce: