2012-04-04 14 views
1

データベース内のユーザーの「役割」に基づいてセッションとエントリを作成しようとしています。私はロジックを釘付けにして、コードを作ったと思った。出来た。問題は、すべての人に役立つことです。なぜ私のコードが論理的に間違っているのかを指摘する助けが必要でした。どんな助けでも大歓迎です。ここに私のコードです。管理者の役割だ、誰にできるようにされていないようだと、私は、なぜポイントピンすることができますし、これは特定のユーザーに対して特定のセッションを作成する

<?php 
session_start(); 
if(!isset($_SESSION['role'])) 
{ $_SESSION['msg'] = 'you are not logggedd in'; 
    header('location: menupage.php'); 
    exit; 
} 
?> 

答えて

1

$_SESSION['role'] = falseはまだセッションを持つ管理ページのヘッダーである

function auth($email, $pass){ 
     global $result; 

     while ($row = mysql_fetch_array($result)) { 
      if($email == $row["email"] && $pass == $row["password"]) 
      { 
       return true; 
      } 
     } 
     return false; 
    } 

    function test($email, $pass){ 
     $test1 = auth($email, $pass); <--above 
     if ($test1) { 
      get_role($email); <-- below (This is the one where I'm puzzled) 
     $_SESSION['email'] = true; 
      header('location:menupage.php'); 
      exit;  
     } 
     else{ 
      echo "Please enter correct username and password or <a href='register.php'>Register</a>";} 
    } 

    function get_role($email){ 
    global $connection; 
    $sql="SELECT * FROM exam WHERE email= '$email'"; 
    $result = mysql_query($sql, $connection); 
    confirm_query($result); 
    while ($row = mysql_fetch_array($result)) { 
     if ($row["role"] == 'Admin'){ 
       $_SESSION['role'] = true; 
      } 
      else 
      $_SESSION['role'] = false; 
    } 


    } 

を設定される変数。 !isset($_SESSION['role'])は期待どおりに評価されません。

管理ページ:

if($_SESSION['role'] === false){ ... 
+0

おかげでブレイクのようなものを使用してください。セッションがまだ設定されていると言っていますか?それは単にfalseに設定されていますか?そうですか。私は虚偽の声明をまとめて取り除き、それは魅力のように働いた。論理をありがとう!それは有り難いです。 – Addy75

+0

優れています。答えが与えられた場合は、答えとしてマークすることを忘れないでください。乾杯。 – Blake

関連する問題