|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Je viens de lire un post plus bas au sujet des sessions et j'ai vu qu'il fallait mettre ce code pour verifier qu'une variable appartient bien à une session
<?php if(isset($_SESSION["prenom"])) { echo "La variable prenom est déjà enregistrée !"; } else { echo "La variable prenom n'est pas enregistrée !"; // On est cerntain d'y avoir accès ici } ?> Mon problème est que j'ai mis une page de connexion avec un login et mot de passe et elle "protege" l'accès au site. Mais si je rentre directement la page dans la barre d'adresse je peux y accéder sans rentrer de login ni de mot de passe. Quel est la solution pour eviter ca ? Je dois rentrer le code ci dessus dans chaque page ? Merci d'avance pour votre aide ! ( Je ne connais pas grand chose sur les sessions, je viens juste de m'y mettre) |
|
|
00
|
|
|
#2 |
![]() ![]() |
![]() oui le code que tu as mis doit être mis sur chaque page où tu as besoin de contrôler l'accès
__________________
Rédacteur "éclectique" (XML, IRC, Web...) Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC) je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque ! pensez à la balise [code] (bouton #) et au tag (en bas)
|
|
|
00
|
|
|
#3 |
|
Membre expérimenté
![]() |
si tu peux y rentrer sans te connecter c'est un pb de securité grave
tu dois dans chacune de tes pages a securisé mettre un session_start en tout debut et verifié que ta valeur de session est bien renseigné par exemple si tu te connecte avec login et mdp et que tt est ok tu peux enregistré la la varible de session login comme suit $_SESSION['login'] = $login. puis dans chacune de tes pages tu fais if(!isset($_SESSION['login']) || $_SESSION['login']=="") { //traitement derreur, soit un header qui redirige soit un message derreur suivi d'un exit etc } |
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Merci beaucoup, c'est bien ce qu'il me semblait !
|
|
|
00
|
|
|
#5 | ||
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
J'ai rentré ce code dans ma page haut.php ( elle est apellée dans chaque page du site par un require ) :
Code :
Cela peut venir d'ou ? |
||
|
|
00
|
|
|
#6 |
|
Membre expérimenté
![]() |
c'est nomal car il execute ton if puis continue lexecution de la page
soit tu fais un header vers la page derreur (header location) soit tu met un exit qui stop tout ma prefrence va au header |
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Comment ca un header ? Je pensais que le require vers ma page indexfaux.php suffirais a ne pas ouvrir la page demandée sans login et mot de passe.
Ma page indexfaux correspond a la page d'identification avec un msg derreur de connexion. Qu'est ce que je dois rajouter dans le code pour que ca ne m'envoie que la page d'erreur et que ca bloque l'acces au site ? |
|
|
00
|
|
|
#8 |
|
Membre expérimenté
![]() |
le require va juste afficher ta page je crois come un include puis executera le reste de ta page normalement alors que le header redirige ta page mais il faut qu'aucune entete ne soit envoyé avant
<? session_start(); if(!isset($_SESSION['login'])) { header("Location: /indexfaux.html") } ?> |
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
J'ai bien rajouter le code, mais le probleme maintenant c'est que ca m'envoie sur la page qui correspond au header meme qd je valide ma connexion. dc je n'ai plus acces au site à la premiere connexion, comme s'il m'envoyait au header avant que je me connecte à une session ...
|
|
|
00
|
|
|
#10 |
|
Membre expérimenté
![]() |
tu peux montrer le code des 2 pages : la page de connection et celle tu as inseré le code quon ta donné
|
|
|
00
|
|
|
#11 | ||||
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Code de ma page de connexion :
Code :
Code de ma page haut comprise dans toutes les pages du site : Code :
L'image en annexe correspond au bout du code de ma page de connexion |
||||
|
|
00
|
|
|
#12 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Est ce que tu as besoin de mes autres pages de connexion ? Celles qui vont chercher dans la BDD ?
|
|
|
00
|
|
|
#13 |
|
Membre expérimenté
![]() |
si je comprends bien ta logique
index.php permet de se connecter (image) ton formulaire de conn va sur connexion_bdd3.php qui fais les vérification 2cas : si c'est ok tu vas sur ta page membres (avec le pti bout de code en debut) sinon tu retourne a laccueil avec un message derreur au lieu de faire un header sur indexfaux, tu na qua faire un header vers ta page de connection et si en bonus tu veux le message derreur tu le met en get que tu recupere exemple erreur de login : page connexion_bdd3.php> header(location : index.php?erreur=login) page index.php > tu recupere avec $_GET['erreur'] (sans oublier de verifier lexistence etc) if(isset($_GET['erreur']) && $_GET['erreur']=='login") echo "mauvais login"; |
|
|
00
|
|
|
#14 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Voir message suivant
|
|
|
00
|
|
|
#15 |
|
Membre expérimenté
![]() |
au lieu des index.php tu met ta page connexion.php
|
|
|
00
|
|
|
#16 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Ma page connexion.php m'envoie vers ma page connexion_bdd3.php qui elle verifie que la connexion avec la BDD se fait bien et que le login et mdp sont les bons. S'il sont bons alors la page ouvre la session et envoie vers une page d'administration; s'ils sont faux alors ca m'envoie vers indexfaux.php a travers un require.
Ca c'est tout ce qui gere ma connexion à partir de ma page connexion. Ensuite j'ai rajouter le code dont on parle avec le isset dans chaque page (excepté la page de connexion ...) grace a ma page haut.php Le probleme c'est que maintenant il me redirige vers la page d'erreur meme si je rentre le bon login et mdp ... :s |
|
|
00
|
|
|
#17 |
|
Membre expérimenté
![]() |
monte le code de ta page connexion_bdd3.php
|
|
|
00
|
|
|
#18 | ||
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Code :
Le require connexion_bdd2 sont les infos de connexion au serveur ( host...) |
||
|
|
00
|
|
|
#19 |
|
Membre à l'essai
![]() Inscription : mai 2006 Messages : 171 ![]() |
Je crois avoir trouvé, je n'ai pas ouvert le session_start dans connexion_bdd3.php
C'est bien ca ? A ben non meme pas, avec ce session_start dans connexion_bdd3 je px a nouveau acceder a toutes mes pages en tapant la page dans la barre d'adresse sans avoir a me conecter Et en plus maintenant que je l'ai rajouté j'ai le msg d'erreur suivant qui apparait Notice: A session had already been started - ignoring session_start() in c:\program files\easyphp1-7\www\grh191\haut.php (la page s'affiche qd meme, mais j'ai ce msg d'erreur tout en haut ) |
|
|
00
|
|
|
#20 | ||
|
Membre expérimenté
![]() |
Code :
tu nes pas obligé de faire des verifation empty mais bon, tu peut aussi directement tarité tes $_POST sans passé par des varibles intermediaire et favorise le <?php plutot que le <? |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com