PHP логин затем перенаправить - PullRequest
0 голосов
/ 22 июня 2011

Я использую следующий код для входа пользователей на серию защищенных страниц - мне нужно, чтобы каждый пользователь после перенаправления направлялся на соответствующую страницу, мне интересно, какие шаги мне нужно предпринять, чтобы выделить три входауровни (admin, special, user):

if(isset($_SESSION['username'])){

    function check_login($level) {

        $username_s = mysql_real_escape_string($_SESSION['username']); 

        $sql = "SELECT user_level, restricted FROM login_users WHERE username = '$username_s'"; 
        $result = mysql_query($sql);
        $row = mysql_fetch_array($result);

        $user_level = $row['user_level'];
        $restricted = $row['restricted'];

        $sql = "SELECT level_disabled FROM login_levels WHERE level_level = '$user_level'"; 
        $result = mysql_query($sql);
        $row2 = mysql_fetch_array($result);

        $disabled = $row['level_disabled'];

        if($disabled != 0) { include('disabled.php'); exit();

        } elseif($restricted != 0) { include('disabled.php'); exit();

        } elseif($user_level <= $level) { // User has authority to view this page.      

        } else { include('user_level.php'); exit();

        }

    }

} else {

    function check_login($level) { exit(); }
    include('login.inc.php'); exit();

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

Я бы сохранил уровень входа в систему в переменной $ _ SESSION , а затем перенаправил бы пользователя, основываясь на этом, поскольку вы захотите отслеживать этот уровень входа от страницы к странице.Чтобы перенаправить их, используйте header () с положением: строка.

Например:

if ($_SESSION['log_level'] == 'admin') {
   header("Location: admin.php");
} else if ($_SESSION['log_level'] == 'editor') {
   header("Location: editor.php");
} else if ($_SESSION['log_level'] == 'author') {
   header("Location: author.php");
}
0 голосов
/ 22 июня 2011

Я бы переместил эти вызовы функций из оператора if и сохранил бы его где-нибудь еще ...

Одним из подходов может быть объявление различных уровней, которые вам нравятся в массиве: $levels = array('admin' => '/admin/url', 'special' => '/special/url', 'guest' => '/guest/url');, и повторение черезперечислите или посмотрите, существует ли ключ ...

Другой способ - использовать переключатель ...

if (isset($_SESSION['login_level'])) { 
      switch ($_SESSION['login_level']) {
          case 'admin': 
               header('Location: /admin/url');
               break;
          case 'special':
               header('Location: /special/url');
               break;
          case 'guest':
               header('Location: /guest/url');
               break;
          default:
               do_login();
               break;
       }
  } else { 
      do_login();
  }

 function do_login() {
     // do something
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...