2012-06-06 2 views
2

Я работаю над школьной системой (просто для изучения PHP), и я уже закончил конец администратора, но хочу, чтобы моя форма входа принимала данные входа от студента , учитель и системный администратор, чтобы я мог показать конкретное представление системы для каждого типа пользователей. Код, который прокомментирован в разделе «if (isset ($ _ POST [« log »])), является тем, который я сейчас использую для администратора, и он отлично работает (для моих стандартов). Вот код:Пользовательские привилегии в форме php (и многопользовательской форме входа)

<?php 
//Fazer login para admin e prof;ligar todas databases ao login;???? 
include("conect.php"); 
include("classes/class_est.php"); 
include("classes/class_login.php"); 
include("classes/class_admin.php"); 
include("classes/class_prof.php"); 
$user=(empty($_POST["username"])? "" :$_POST["username"]); 
if(isset($_POST["log"])){ 
/*if(($user)&&($_POST["senha"]!=null)){ 
     $est=new admin(); 
     $est->login($user,$_POST["senha"],$_POST["tipo_user"]); 
     }else{ 
      echo"<script>alert('Nome ou Senha Incorrecto')</script>"; 
     } 
    }*/ 

switch($_POST["tipo_user"]){ 
     case"administrador":echo 'ighb'; 
      if(($_POST["username"])&&($_POST["senha"]!=null)){ 
      $admin=new admin(); 
      $admin->login($_POST["username"],$_POST["senha"],$_POST["tipo_user"]); 
      }else{ 
      echo"<script>alert('Nome ou Senha Incorrectos')</script>"; 
     } 
      ; 
     break; 
     case"estudante": 
      if(($_POST["username"])&&($_POST["senha"]!=null)){ 
      $est=new est(); 
      $est->login($_POST["username"],$_POST["senha"],$_POST["tipo_user"]); 
      }else{ 
      echo"<script>alert('Nome ou Senha Incorrectos')</script>"; 
     }; 
     break; 
     case"professor": 
      if(($_POST["username"] && $_POST["senha"])!=null){ 
       $prof=new prof(); 
       $prof=login($_POST["username"],$_POST["senha"],$_POST["tipo_user"]); 
      }else{ 
       echo"<script>alert('Nome ou Senha Incorrectos')</script>"; 
      }; 
      break; 
     default;break; 
    } 
} 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="estilos/forms.css"/> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    </head> 
<body> 
    <center> 
     <div id="login"> 
      <div id="black_m"><img src="estilos/imagens/black_mamba_logo.png"/></div> 
     <table> 
     <form method="POST"> 
      <tr><td>Tipo de usuário:</td><td><?php $listar=new login;$listar->list_tipo()?></td><td><span>(Para Alpha)</span></td></tr> 
      <tr><td>Username: </td><td><input type="text" name="username" placeholder="Insira o nome de usuário" id="texto"/></td></tr> 
      <tr><td>Senha: </td><td><input type="password" name="senha" placeholder="Insira a senha" id="texto"/><td></tr> 
      <tr><td><input type="submit" name="log" value="ENTRAR" id="texto"/></tr> 
     </form> 
    </table> 
    </div> 
    </center> 
</body>` 
+0

Ваша система отображения не должна сочетаться с вашей системой входа. Система входа в систему должна обрабатывать логины. После входа в систему у вас должен быть тип пользователя, связанный с этим пользователем, чтобы ваша система знала, какой вид рендеринга для этого пользователя. – afuzzyllama

ответ

2

Вы знакомы с использованием базы данных? Сохранение имени пользователя, пароля и access_levels внутри таблицы пользователей базы данных может быть лучшим вариантом для вас. В противном случае вам придется жестко закодировать значения доступа пользователя в вашем скрипте. Если вы сделаете это, вы можете создать переключатель определения их значения привилегий, как:

$username=$_POST['user']; 
switch $username { 
    case "supercool_admin": 
    $access_level="admin"; 
break; 
    case "supercool_student": 
    $access_level="student"; 
break; 
    case "supercool_teacher": 
    $access_level="teacher"; 
break; 
    default: 
    $access_level="none"; 
} 

Тогда при отображении содержимого, вы бы ссылаться на access_level либо как если заявление или другой коммутатор.

например:

if($access_level=="admin") { 
//DISPLAY ADMIN CONTENTS 
} elseif ($access_level=="teacher") { 
//DISPLAY TEACHER CONTENTS 
} elseif ($access_level=="student") { 
//DISPLAY STUDENT CONTENTS 
} else { 
    echo "YOU DO NOT HAVE PERMISSION TO VIEW THESE CONTENTS"; 
} 

Я могу также предложить не использовать почтовые значения, чтобы сделать ваши взгляды вверх, вместо того, чтобы использовать почтовые значения для проверки подлинности либо базе данных, или в случае, внутри переключателя. После проверки подлинности и определения access_level, вместо этого сохраните эти значения в сеансе и ссылку.

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