2016-06-01 16 views
-1

Ich habe eine Login-Seite innerhalb meiner index.php die Login-Funktion funktioniert gut, aber das Problem ist die Beschränkung auf Gast und Admin, wenn ich mich als Benutzer oder Admin anmelden sie dort angesehene Seite gehen aber wenn ich versuche, die URL von guest.php oder admin.php einzutippen, können sie beide darauf zugreifen, sollte nicht darauf zugreifen, was ich hier geschehen soll ist, dass wenn ich mich als Benutzer nur die Gast-Seite anmelde, auf die der Benutzer zugreifen kann als Admin ..Zugriffsebene Umleitung funktioniert nicht gut

index.php

<?php 
include_once 'db.php'; 

    if($userlevel->is_loggedin()!=""){ 
     $userlevel->redirect('guest.php'); 
    } 

    if(isset($_POST['submit'])){ 

     $uname = $_POST['user']; 
     $upass = $_POST['pass']; 

     if($userlevel->login($uname,$upass)){ 
      switch($_SESSION['user_level']) { 
      case "0": $userlevel->redirect('guest.php'); 
      break; 
      case "1": $userlevel->redirect('admin.php'); 
      break; 
      } 
     } 
    } 

guest.php

<?php 
include_once 'db.php'; 

    if(!$userlevel->is_loggedin()){ 
     $userlevel->redirect('index.php'); 
    } 
    $ID = $_SESSION['user_session']; 
    $stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID"); 
    $stmt->execute(array(":ID"=>$ID)); 
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC);  
?> 

admin.php

<?php 
include_once 'db.php'; 

    if(!$userlevel->is_loggedin()){ 
     $userlevel->redirect('index.php'); 
    } 
    $ID = $_SESSION['user_session']; 
    $stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID"); 
    $stmt->execute(array(":ID"=>$ID)); 
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
?> 

ich eine meiner Problem denken ist hier:

if($userlevel->is_loggedin()!=""){ 
    $userlevel->redirect('guest.php'); 
} 

weil, wie Sie können es nur die guest.php umleiten aber ich weiß nicht, wie man das zum wotk bekommt.

+1

Sie keine Einschränkung auf diesen Seiten zu tun .... das ist, warum können sie beide Zugriff auf jeden. Wie ist das anders als die letzten 4/5 Fragen, die Sie gestellt haben ... sie alle wenden die gleiche Logik an. – Darren

+0

@Darren Es tut mir leid, aber ich weiß wirklich nicht, warum es nicht funktioniert ... bitte hilf mir. – Trojan

Antwort

1

Sie können die Berechtigung in guest.php und admin.php

überprüfen, da Sie eine Sitzungsvariable namens user_level haben, können Sie den Wert auf jeder Seite abrufen. Hier ist, was Sie tun werden.

guest.php

<?php 
    include_once 'db.php'; 

if($_SESSION['user_level'] == "1"){ 
    // it means admin 
    $userlevel->redirect('admin.php'); 
} 

if(!$userlevel->is_loggedin()){ 
    $userlevel->redirect('index.php'); 
} 
$ID = $_SESSION['user_session']; 
$stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID"); 
$stmt->execute(array(":ID"=>$ID)); 
$userRow=$stmt->fetch(PDO::FETCH_ASSOC); ?> 

Das gleiche wie die admin.php

<?php 
include_once 'db.php'; 

    if($_SESSION['user_level'] == "0"){ 
     // it means guest 
     $userlevel->redirect('guest.php'); 
    } 


    if(!$userlevel->is_loggedin()){ 
     $userlevel->redirect('index.php'); 
    } 
    $ID = $_SESSION['user_session']; 
    $stmt = $DB_con->prepare("SELECT * FROM survey_section WHERE ID=:ID"); 
    $stmt->execute(array(":ID"=>$ID)); 
    $userRow=$stmt->fetch(PDO::FETCH_ASSOC); 
?> 
+0

Ich habe eine Frage, was ist, wenn ich eine home.php habe und der einzige Benutzer, der darauf zugreifen kann, ist der Gast muss ich nur Ihren Code kopieren und in die home.php einfügen? – Trojan

+0

yup. Auf diese Weise können Sie Ihre Seite einschränken. – Vashtamyty

+0

dann werde ich das in meine home.php setzen, oder? if ($ _ SESSION ['user_level'] == "1") { // es bedeutet admin $ userlevel-> redirect ('admin.php'); } – Trojan

Verwandte Themen