2013-07-13 3 views
0

Мне нужно иметь три разных типа пользователей: guest, author и admin. Когда пользователь регистрируется, они выбирают, являются ли они автором или администратором с выпадающим списком. Три разных типа имеют разные возможности.Мои переменные сеанса PHP не установлены

В настоящее время, независимо от их логина, он назначит гостя после входа в систему.

<?php 
include("dbconnect.php"); 
$con = new dbconnect(); 
$con->connect(); 

session_start(); 

if (isset($_POST['submit'])) 
    { 
     $sql = "SELECT type FROM Users WHERE username = '".$_POST["username"]."' AND   password = ('". sha1($_POST["password"]) ."')"; 

     $result = mysql_query($sql); 

    if (mysql_num_rows($result) == 1) { 
     $type_num=0; 
     while ($info = mysql_fetch_array($result)) { 
      $type =$info['type']; 
     } 

     if($type == "admin") 
     { 

      $_SESSION['type']=2; 
      $_SESSION['username']= $_POST["username"]; 
      header("Location: viewPosts.php"); 
     } 
     if($type == "author") 
     { 

      $_SESSION['type']=1; 
      $_SESSION['username']= $_POST["username"]; 
      header("Location: viewPosts.php"); 
     } 
     else 
     { 
      $_SESSION['type']= $type_num; 
      $_SESSION['username']="guest"; 
      header("Location: viewPosts.php"); 
     } 


    } else { 
     //redirect back to login form if not authorized 
     header("Location: loginfailed.html"); 
     exit; 
    } 
} 
?> 

Как его получить, чтобы он правильно присвоил эти переменные? Спасибо!

+0

Вы проверили, хотите ли вы получить правильный '$ type' для своего пользователя? – vee

ответ

1

Источник вашей проблемы: if($type == "author")

Изменить что elseif ($type == "author"). Это сделает так, чтобы поток условной проверки продолжался до конца. В противном случае, если $type == "admin", то он всегда будет называть это последнее else заявление, которое у вас есть.

+0

О, я вижу. Ну, это было простое решение. Ха-ха. Спасибо! – skricha1

Смежные вопросы