Empecher-user-acceder-aux-fichiers-par-url

BapPro Messages postés 52 Statut Membre -  
BapPro Messages postés 52 Statut Membre -
Bonjour,
Voulant empecher aux users d'acceder par url aux pages qui doivent etre vues qu'apres avoir s'identifier , j'ai fini par trouver ces codes que j'ai mis a l'entete de la page qui s'appelle timesheet.php que je ne veux pas q'on puisse l'acceder par l'url sans s'identifier d'abord:

<?php

if ((!isset($_SESSION['username'])) || ($_SESSION['username'] == ''))

{// La variable $_SESSION['username'] n'existe pas, ou bien elle est vide

// <=> la personne ne s'est PAS connectée

echo '<p>Vous devez vous <a href="index.php">connecter</a>.</p>'."\n";

exit();

}

?>


la patie html

-----

-----

Comme resultat:

1- si je tape la page timesheet.php dans l'url

j'ai bien le message qui s'affiche avec le lien qui envoie vers la page d'idendification

'Vous devez vous connecter.'

2- Mais quand je m'identifie correctement je recois toujours le meme message tandis que je voudrais avoir la page timesheet.php

je ne sais pas encore ce que je dois faire pour que cela fonctionne correctement

je vous poste aussi ma page de traitement

<?php

$conn= mysqli_connect('', '', '');

mysqli_query($conn, "USE qbreplace");

if(strlen($_POST['username'])>0 && strlen($_POST['password'])>0)

{

$u=$_POST['username'];

$p=$_POST['password'];

$req =mysqli_query($conn, 'select * from user');

while($d=mysqli_fetch_array($req))

{

 if($d['username']==$u && $d['password']==$p)

    {

        session_start();

$_SESSION['username']=$u;

         $_SESSION['password']=$p;

 if($d['Type']=='Manager'){

 header('Location:manager.php');

 }

          else if($d['Type']=='user'){

 header('location:timesheet.php');

 }

         mysqli_free_result($req);

    }

  else

    {

  header('location:login_view1.php');

    }

}

    } 

    else

    {

  header('location:login_view2.php');

    }

?>


pour vous dire j'aimerais ni la page timesheet.php et manager.php ne peuvent pas etre acceder par l'url qu'apres l'identification du user. A part cela les codes fonctionnent correctement.

Je sollicite votre aide, un peu de patience pour les novices...

Merci

6 réponses

  1. VlkPr3s Messages postés 251 Statut Membre 130
     
    Il est plus facile de faire ainsi ..

    j'ai crée pour une société une page de sécurité ou les membres ne peuvent pas avoir accès au même page que les administrateurs, elle est aussi sécurisé au niveau des URL au cas ou l'utilisateur non connecté ou celui qui à pas le droit voudrais y avoir accès.


    if (!isset($_SESSION['id']))
    {
    header("Location: index.php");
    exit;
    }


    si la personne n'as pas le bon identifiant elle ne peut pas accéder à la page que tu demandes en URL
    ensuite tu peux adresser un level pour les utilisateurs et les admin
    et ainsi tu fais le même test après

    if ($data['level'] == le nombre que tu veux)
    {
    header("Location: index_membre");
    }
    0
  2. BapPro Messages postés 52 Statut Membre
     
    Merci bcp pour la reponse, bien que je ne sais pas si j'ai bien plasse les codes.
    Je les ai place en tete de la page (timesheet.php) que je ne veux pas que le user puisse acceder par l'url sans se connecter d'abord.
    en tapant l'adresse du site suivi de 'timesheet.php' dans l'url je suis bien redirige vers la page index.php qui est la page de connection. Mais lorsque je m'identifie dans la page de connection je ne suis pas dirige vers la page timesheet.php mais plustot vers la meme page......
    Il y des trucs qui me manquent bien sur!
    voici la page timesheet.php

    <?php
    session_start();
    if (!isset($_SESSION['id']))
    {
    header("Location: index.php");
    exit;
    }
    ?>
    le reste de la page

    <!doctype html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    ------
    0
  3. VlkPr3s Messages postés 251 Statut Membre 130
     
    Logique ce qui suis dois se retrouver théoriquement dans la page connexion.php



    $sql = "SELECT * FROM users WHERE Login='".$_POST['Login']."'";
    $req = $DB->query($sql) or die ("Erreur SQL");
    $data = $req->fetch();
    if($data['id'] == 'root')
    {
    header("location: index.php");
    }

    A+
    0
  4. BapPro Messages postés 52 Statut Membre
     
    J'ai essaye de placer les codes que vous m'avez poste, je ne trouve pas encore de resultat. Un peu de patience c'est ca les novices!
    pour m'aider a sortir de ce labyrinthe je propose de poster les codes necessaires et comme ca je me ferai mieux indiquer.

    1- page de connection (index.php)

    <form id='login' action='traitement.php' method='post' accept-charset='UTF-8'>
    <fieldset >

    <input type='hidden' name='submitted' id='submitted' value='1'/>

    <label for='username' >UserName*:</label>
    <input type='text' name='username' id='username' maxlength="50" />

    <label for='password' >Password*:</label>
    <input type='password' name='password' id='password' maxlength="50" />

    <input type='submit' name='Submit' value='Submit' />

    2- page de traitement
    <?php
    $conn= mysqli_connect('', '', '');
    mysqli_query($conn, "USE qbreplace");
    if(strlen($_POST['username'])>0 && strlen($_POST['password'])>0)
    {
    $u=$_POST['username'];
    $p=$_POST['password'];
    $req =mysqli_query($conn, 'select * from user');
    while($d=mysqli_fetch_array($req))
    {
    if($d['username']==$u && $d['password']==$p)
    {
    session_start();
    $_SESSION['username']=$u;
    $_SESSION['password']=$p;
    if($d['Type']=='Manager'){
    header('Location:manager.php');
    }
    else if($d['Type']=='user'){
    header('location:timesheet.php');
    }
    mysqli_free_result($req);
    }
    else
    {
    header('location:login_view1.php');
    }
    }
    }
    else{
    header('location:login_view2.php');
    }
    ?>

    3- une page (timesheet.php) que le user doit acceder qu'apres avoir s'identifie s'il essaie par l'url il doit se diriger automatiquement vers la page de connection index.php
    ----
    ----
    ----
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. VlkPr3s Messages postés 251 Statut Membre 130
     
    Bon je vais faire simple ;) je te met des parties de code que j'ai faite à l'époque pour la société pour laquelle j'ai fait ce travail sers toi en et rajoute ce qu'il faut si ça va toujours pas tu me dis les erreurs que tu as et on verra ;) !

    INDEX.PHP

    <?php
    session_start();
    if(isset($_SESSION['id']))
    {
    if($_SESSION['Login'] == 'root')
    {
    header("Location: index_securise.php");
    exit;
    }
    header("Location: index_membre.php");
    exit;
    }
    ?>
    HTML

    <form method="post" action="connexion.php" class="login">
    <p>
    <label for="login">Login:</label>
    <input type="text" name='Login'>
    </p>
    <p>
    <label for="password">Password : </label>
    <input type="password" name='Password' >
    </p>
    <p class="login-submit">
    <button type="submit" class="login-button">Se connecter'</button>
    </p>


    CONNEXION.PHP

    <?php
    session_start();
    include("config.php");

    if(!empty($_POST['Login']) && !empty($_POST['Password']))
    {
    $_POST['Login'] = htmlentities($_POST['Login'],ENT_QUOTES);
    $_POST['Password'] = htmlentities($_POST['Password'],ENT_QUOTES);
    $sql = "SELECT * FROM users WHERE Login='".$_POST['Login']."'";
    $req = $DB->query($sql) or die ("Erreur SQL");
    $data = $req->fetch();
    if(!empty($data['Login']))
    {
    $_POST['Password'] = md5($_POST['Password']);
    if($data['Password'] == $_POST['Password'])
    {
    if($data['Level'] == '10')
    {
    session_start();
    $_SESSION['Login'] = $_POST['Login'];
    $_SESSION['id'] = $data['id'];
    $_SESSION['Level'] = $data['Level'];
    header("location: index_securise.php");
    ....


    CONFIG.PHP

    <?php

    try
    {
    $DB= new PDO('mysql:host=localhost;dbname=lenom','tonid','tonmdp');
    $DB->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e)
    {
    echo "Base de données indisponible !!! ";
    }
    if(isset($_SESSION['id']))
    {
    if(!isset($_SESSION['Login']))
    {
    header("Location: index_membre.php");
    exit;
    }
    }

    ?>


    En ce qui concerne tout userpateur voulant venir sur ta page sans être co

    <?php
    include ("config.php");
    session_start();
    if(!isset($_SESSION['id']))
    {
    header("Location: index.php");
    exit;
    }


    Voilà ;) Mais personnellement sur internet, youtube tu as des tuto tout fait qui t'explique bien ça car à l'époque c'est ce qui m'avais servis ;) !
    0
  7. BapPro Messages postés 52 Statut Membre
     
    merci bcp je travaille
    0