2012-04-04 3 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

관련 문제