IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Interdire une page


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut Interdire une page
    Bonjour,
    je ne sais pas si je poste dans la bonne section.
    J'utilise une page d'identification login.php et une fois l'internaute identifié il est redirigé vers la page home.php

    mais voilà, si je tappe l'url complète vers la page home.php on y a accès directement
    Comment éviter ça ?

  2. #2
    Membre averti Avatar de makmaoui
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 283
    Points : 368
    Points
    368
    Par défaut
    Salut,

    utilise les variables de sessions, lors de l'identification tu créé une variable de session identification=true par exemple et au début de page home.php tu testes l'existence de cette variable pour valider que l'utilisateur est identifié. Sinon en cherchant sur le site tu devrais trouver des exemples en voici un.

  3. #3
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Aucun exemple ne marche convenablement...

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    Donne nous les messages d'erreur que tu rencontres alors que l'on puisse t'aider...

    Logiquement, si tu gères déjà une identification, ca ne devrait pas trop poser de problèmes.

  5. #5
    Membre éclairé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Points : 868
    Points
    868
    Par défaut
    tu mets sous accolade toute ta page avec un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_SESSION['iduser'])){
    ...
    maPage
    ...
    }

  6. #6
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Je n'ai pas d'erreurs justement, je n'ai qu'un page blanche...
    J'ai remarqué aussi que dans l'id de session sur le serveur il n'y a rien, il est vide.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Points : 55
    Points
    55
    Par défaut
    qu'as tu fais exactement, un exemple de ton code serait pas mal.

    sinon :
    - as tu bien pensé au session start en debut de chacune de tes pages concernées par l'identification (y compris home.php).
    - et un "error_reporting(E_ALL);" en début de chaque page permetrait peut être à php d'être un peu plus bavard concernant les erreures.

  8. #8
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Bonjour,
    j'ai bien mi le reporting (all) mais il ne m'affiche aucune erreur.
    Pour savoir si les sessions marchait bien sur le système j'ai mi un petit script du site et ça marche il me transfère bien le login via session mais voilà, sur mon site je dois récupérer le login/password via une base de donnée, la récup&ration se passe bien et ça marche mais lorsque j'essai de mettre le login récupéré en session ça ne va pas.
    Toutes les pages d'identification ont un include vers le fichier verif.inc.php qui se présente comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    session_start();
    if(!isset($_SESSION['login'])) {
    header("Location: login.php");
    }
    ?>
    je place donc un include vers cette page au début de chaque page qui a besoin d'un login de session pour être affichée, comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include("includes/verif.inc.php");
    Ma page de login est login.php et se présente comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php
    session_start();
    include("includes/header.php");
    ?>
    <h2>Espace membre</h2>
    <br />
    <br />
    Connectez-vous dans votre espace membre.
    <br />
    <br />
    <br />
    <form name="access" method="post" action="veriflogin.php">
    	<table style="margin-left:auto;margin-right:auto;">
    		<tr>
    			<td style="text-align:right"><p>Identifiant</p></td>
    			<td><b>:&nbsp;&nbsp;</b><input type="text" name="login" size="22" maxlength="20" /></td>
    		</tr>
    		<tr>
    			<td style="text-align:right"><p>Mot de passe</p></td>
    			<td><b>:&nbsp;&nbsp;</b><input type="password" name="pwd" size="22" maxlength="20" /></td>
    		</tr>
    	<tr valign="bottom">
    	</tr> 
    		<tr>
    			<td ></td>
    			<td><b>&nbsp;&nbsp;&nbsp;</b><input type="Submit" name="submit" value="Connexion" />
    [...blablabla...]
    la page qui vérifie le login est le script est "veriflogin.php" et se présente comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?php
    session_start();
    require "includes/connect.inc.php";
     
    $login = $_POST['login'];
    $pwd = $_POST['pwd'];
     
    $sql = "SELECT * FROM `users` WHERE Login = '".$login."' AND Password = '".md5($pwd)."'" or die('Erreur SQL : <br />'.$sql);
    $query = mysql_query($sql);
    $row = mysql_fetch_object($query);
     
    if ($row->Login) {
        header("Location: home.php");
    }
    else {
        include "error3subscribe.php";
    }
    mysql_close($connect);
    ?>
    et voici enfin la page surlaquelle il devrait me diriger lorsque les identifiants sont bons "home.php":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    include("includes/verif.inc.php");
    include("includes/connect.inc.php");
    include("includes/menu_panel.php");
    ?>
    <h2>Panel de gestion</h2>
    <br />
    <b>Bienvenue dans votre panel de gestion.</b>
    <br />
    <br />
    Votre dernière connexion date du ...<br />
    Voici les informations dont vous avez besoin pour développer votre site web:<br />
    <br />
    <u>Serveur FTP</u><br />
    <b>Adresse :</b> <br />
    <b>Login :</b> <br />
    <b>Mot de passe :</b> Sauf si vous l avez modifié, il est le même que celui que vous utilisez pour le panel de gestion.<br />
    <br />
    <u>Serveur MySQL</u><br />
    <b>Adresse :</b> <br />
    <b>Login :</b> <br />
    <b>Mot de passe :</b> <i>cf: FTP</i><br />
    <b>Base de donnée :</b>   <br />
    <br />
    <u>Serveur Web</u><br />
    <b>Adresse de votre site web :</b>   <br />
    <p>
    </p>
    <br />
    <br />
    <?php
    include("includes/footer.php");
    ?>
    Une idée ? car lorsque je tente de m'identifier il reste sur la page de login et ne me dirige pas vers home.php !!!
    comme s'il ne récupérait pas les id des sessions.
    Fin bref, je sèche...

  9. #9
    FMC
    FMC est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2005
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    J'ai peut-être regardé trop vite, mais tu n'oublierais pas simplement un session_start() sur ta page home.php ?

  10. #10
    Membre éclairé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Points : 868
    Points
    868
    Par défaut
    t'as un dossier sessions a la racine de ton serveur ?

  11. #11
    Membre régulier Avatar de loopback
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 170
    Points : 113
    Points
    113
    Par défaut
    Citation Envoyé par LeXo Voir le message
    t'as un dossier sessions a la racine de ton serveur ?
    oui
    c 'est résolu

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 64
    Points : 55
    Points
    55
    Par défaut
    Euh question bète : je viens de regarder ton code.

    Sur tes pasges où tu vérifie que l'utilisateur est identifié tu vérifie si $_session['login'] est définit.

    Mais tu ne le définit null part dans le code que tu nous donne (il devrait être définit sur ta page vériflogin.php normalement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if ($row->Login) {
    $_SESSION['login']=$login;
        header("Location: home.php");
    }
    De plus, prend bien garde à vérifier et à protéger de que tu reçois de ton formulaire pour éviter les injections SQL, avec un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $login = mysql_real_escape_string($_POST['login']);
    $pwd = mysql_real_escape_string($_POST['pwd']);

    Pour plus d'explications : Cours et tutoriels PHP et FAQ PHP.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. interdire l'accès à une page directement
    Par nickg dans le forum ASP
    Réponses: 13
    Dernier message: 29/12/2007, 15h12
  2. Interdire le redimensionnement d'une page
    Par baillador dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 26/09/2007, 16h50
  3. Interdire l'impression d'une page web
    Par amel666 dans le forum Sécurité
    Réponses: 7
    Dernier message: 26/06/2007, 09h36
  4. Réponses: 1
    Dernier message: 17/03/2007, 21h21
  5. Réponses: 4
    Dernier message: 28/09/2006, 13h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo