2012-04-04 6 views
1

Ich versuche, eine Sitzungen und einen Eintrag auf Seiten basierend auf einer "Rolle" einer Person in der Datenbank zu erstellen. Ich dachte, ich hätte die Logik genagelt und den Code erstellt. Es funktionierte. Problem ist, es funktioniert für alle. Ich wollte etwas Hilfe, um darauf hinzuweisen, warum mein Code logisch falsch ist, wenn es für mich an der Sache ist. Jede Hilfe wird sehr geschätzt. Hier ist mein Code. Es scheint in jemanden zu lassen, die Rolle ist nicht ‚Admin‘ und ich kann Punkt Pin warum:Erstellen bestimmter Sitzungen für bestimmte Benutzer

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; 
    } 


    } 

und dies der Header für die administrative Seite ist, der die Sitzung

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

Antwort

1

$_SESSION['role'] = false noch hat, ist eine Variable, die festgelegt ist. !isset($_SESSION['role']) wird also nicht wie erwartet ausgewertet. Verwenden Sie so etwas wie:

Admin Seite:

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

Dank Blake. Also sagst du, dass die Sitzung immer noch gesetzt wird - sie setzt einfach auf falsch? Aha. Ich eliminierte die falsche Aussage alle zusammen und es funktionierte wie ein Zauber. Danke für die Logik! Ich schätze es. – Addy75

+0

Ausgezeichnet. Vergessen Sie nicht, die Antwort als beantwortet zu markieren, wenn eine Antwort gegeben wurde. Prost. – Blake

Verwandte Themen