2015-08-08 1 views
0

Je travaille maintenant depuis quelques heures et je n'arrive pas à trouver la solution, j'espère que quelqu'un ici pourra m'aider. Le code que j'ai maintenant fonctionne parfaitement mais je voudrais mettre un 'echo' seulement si l'utilisateur a le niveau en tant qu'administrateur, si les personnes connectées n'ont pas ce statut alors le lien ne sera pas affiché. Ci-dessous vous pouvez voir le index.php. Je voudrais ajouter par exemple: Panneau d'administration, mais ce lien ne devrait être visible que si l'utilisateur est admin.Page réservée uniquement pour le rôle admin

<p>Welcome <?php echo $_SESSION['username']; ?>!</p> 
<p>This is secure area.</p> 
<p><a href="dashboard.php">Dashboard</a></p> 
<a href="logout.php">Logout</a> 

Et mon fichier auth

<?php 
    session_start(); 

    if(!isset($_SESSION["username"])){ 
     header("Location: login.php"); 
     exit(); 
    } 
?> 

J'espère qu'il ya quelqu'un ici qui peut me expliquer comment faire.

Merci!

Loes. Ajoutez une variable de session supplémentaire pour le niveau d'accès des utilisateurs.

+0

Bienvenue sur Stack Overflow. Vous êtes '$ _SESSION' devrait contenir un moyen de montrer le niveau des utilisateurs et ensuite vous pouvez travailler à partir de cela. – Twisty

+0

Oui quelque chose comme si ($ _ SESSION ["type"] == 'admin') –

Répondre

0

Vous pouvez ensuite protéger les pages en redirigeant les utilisateurs non administrateurs vers l'index/la page d'accueil. Vous pouvez également avoir un code simple pour afficher les liens d'administration.

<?php 
    session_start(); 
    if($_SESSION['access'] == 'admin'){ 
     echo "<a href='adminpage.php'>admin panel</a>"; 
    } 
?> 

Pour rediriger les utilisateurs non admin:

<?php 
    session_start(); 

    if($_SESSION["access"] != 'admin'){ 
     header("Location: home.php"); 
    } 
?> 
0

ce lien ne doit être visible si l'utilisateur est admin

Ce n'est pas la meilleure solution, mais le plus rapide :

home.php

<?php 
    if($_SESSION['username'] == 'admin'){ 
     ?> 
      <a href='administration.php'>Administration Panel</a> 
     <?php 
    } 
?> 

administration.php

<?php 
    if($_SESSION['username'] == 'admin'){ 
     ?> 
      <p>Welcome <?php echo $_SESSION['username']; ?>!</p> 
      <p>This is secure area.</p> 
      <p><a href="dashboard.php">Dashboard</a></p> 
      <a href="logout.php">Logout</a> 
     <?php 
    }else{ 
     ?> 
      <p>Restricted Area</p> 
     <?php 
    } 
?> 

Si vous voulez un vrai système d'autorisation, cela dépend de l'endroit où le nom d'utilisateur et mot de passe sont enregistrés

+0

Merci! Je suis comme plus que je peux récupérer les données de la base de données mysql, c'est un peu plus sûr je suppose. – Loes

0

Lorsque vous vérifiez contre votre base de données pour authentifier l'utilisateur, la DB peut contenir un nombre qui représente la capacité des utilisateurs. Par exemple, un administrateur peut avoir un 9, où un utilisateur régulier qui ne lit que des éléments peut avoir 1. Un contributeur peut avoir 5.

Lorsque l'utilisateur est authentifié et que vous créez la session pour cet utilisateur, collectez cette valeur à partir de la base de données et l'ajouter à votre session.

Auth Fichier

<?php 
$user = isset($_POST[user])?$_POST['user']:""; 
$pass = isset($_POST['pass'])?$_POST['pass']:""; 

if(!empty($user) AND !empty($pass)){ 
     // Authenticate against DB 
     // Connect DB code & Injection safe query look code ... 
     // Result set: 
     $security = $row['security']; 
} else { 
     header("location: login.php?error=Bad Username or Password"); 
} 
if(isset($security)){ 
    session_start(); 
    $_SESSION['username'] = $user; 
    $_SESSION['security'] = $security; 
    header("location: index.php?login=successful"); 
} 
// if all fails, logout 
header("location: logout.php"); 
?> 

Index

<?php 
session_start(); 
?> 
<html> 
<body> 
<?php 
echo (($_SESSION['security'] > 6)?"<a href='dashboard.php'>Dashboard</a>":"") . "\r\n"; 
echo ((isset($_SESSION['username']))?"<a href='logout.php'>Logout</a>":"<a href='login.php'>Log In</a>") . "\r\n"; 
?> 

</body> 
</html>