2016-06-01 8 views
-1

私のindex.phpにログインページがありますが、ログイン機能はうまくいきますが、問題はゲストと管理者の制限です。ユーザーまたは管理者としてログインすると、私はguest.phpまたはadmin.phpのURLを入力しようとすると、アクセスすることはできませんが、アクセスしないでください。ここで起こることは、ユーザーが同じゲストにアクセスできるゲストページ管理者として..アクセスレベルのリダイレクトが正常に機能しない

の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); 
?> 

私は私の問題の一つがここにあると思う:

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

あなたはそれが唯一のguest.phpをリダイレクトすることができますので、としてではなく私はこれをどうにかして得る方法を知らない。

+1

と同じ....それはですそれぞれにアクセスします。これは、あなたが尋ねた最後の4/5の質問とはどのように異なっていますか?それらはすべて同じ論理を適用します。 – Darren

+0

@ダーレンこれは申し訳ありませんが、なぜ実際には動作していないのかわかりません。 – Trojan

答えて

1

user.phpとadmin.phpの特権を確認できます。

という名前のセッション変数があるので、任意のページでその値を取得できます。ここであなたは何をするつもりです。なぜ彼らは両方でき

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); ?> 

あなたはそれらのページ内の任意の制限を行っていない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

私はhome.phpを持っていて、それにアクセスできる唯一のユーザーがゲストだとすれば、コードをコピーしてhome.phpに貼り付けるだけでいいのですか? – Trojan

+0

そうすれば、ページに制限を適用することができます。 – Vashtamyty

+0

これは私のhome.phpの権利に入れられますか? if($ _ SESSION ['user_level'] == "1"){ //それは管理者を意味します $ userlevel-> redirect( 'admin.php'); } – Trojan

関連する問題