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

Fermé
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016 - Modifié par Chris 94 le 12/03/2015 à 13:56
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016 - 13 mars 2015 à 19:38
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

VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
12 mars 2015 à 16:54
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
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016
12 mars 2015 à 17:23
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
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
13 mars 2015 à 09:30
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
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016
13 mars 2015 à 17:20
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
13 mars 2015 à 17:29
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
VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
13 mars 2015 à 17:31
0
BapPro Messages postés 46 Date d'inscription samedi 17 janvier 2015 Statut Membre Dernière intervention 4 février 2016
13 mars 2015 à 19:38
merci bcp je travaille
0