Управление сессиями: PHP + MySQL - PullRequest
3 голосов
/ 28 декабря 2011

Я занимаюсь разработкой системы управления знаниями на PHP + MySQL, где я держу сотрудников и студентов в другой таблице.Теперь я сталкиваюсь с некоторыми проблемами в управлении сессиями.

Я могу получить доступ к student_profile.php?id=1, если вы вошли в систему как студент, но если я изменил URL-адрес на staff_profile.php?id=1, я войду в систему как персонал!1005 *

Как мне решить эту проблему?

Кроме того, могу ли я поставить студентов и сотрудников за один стол?Есть ли проблема?

Ответы [ 3 ]

3 голосов
/ 28 декабря 2011

Вы можете установить другое значение (идентификатор) для ключа сеанса при успешной регистрации пользователя.

В login.php

<?php
 session_start();

 if(user_is_student()) {
      $_SESSION["usertype"]="student";
      ...
 }
 else 
 if(user_is_staff()) {
      $_SESSION["usertype"]="staff";
      ...
 }
?>

На страницах профиля сотрудников и студентов проверьте значение ключа usertype.

staff.php

<?php
  session_start();
  $validUser=false;
  if(isset($_SESSION["usertype"]))
   {
     if($_SESSION["usertype"]=="staff")
       {
          $validUser=true;
        }
   }
 if(!$validUser) {
     header("Location: login.php");
 }
?>
1 голос
/ 28 декабря 2011

Вполне нормально, чтобы ученики и сотрудники сидели за одним столом.Если у них есть похожие атрибуты, то есть.Они будут считаться подклассами, чтобы сказать «пользователь».Но то, о чем вы говорите, это больше authorization.Поэтому сначала нужно убедиться, что пользователь является студентом или сотрудником.Если вы обнаружите, что пользователь является студентом и переходит на URL-адрес персонала, вам нужно перенаправить или просто запретить доступ.

Так, например, скажем, у вас есть эта база данных.1006 * Теперь у вас есть 1 таблица с именем User.Все будут здесь.Есть несколько способов сделать это, вы можете создать новый атрибут (столбец), и это будет просто какой-то логический тип.

Так что ваша таблица User может выглядеть как

Userid | Name | Address | ... | Staff

Где

| Staff | = 1 or 0, depending on if they are a student or just staff.

Это, пожалуй, самый быстрый способ выполнения запроса.Теперь, если вам нужна дополнительная информация для любого из них, просто создайте таблицу Student и Staff с определенными для них атрибутами.Затем вы будете запрашивать дополнительную информацию, когда это необходимо.

0 голосов
/ 28 декабря 2011

нет проблем. без незначительного / большого переписывания, независимо от того, что еще делает ваш код, просто поместите «роль» в сеанс и проверяйте роль перед каждым запросом роль = персонал или роль = студент. и не используйте куки для хранения, так как они могут быть изменены. проверять роль при каждом доступе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...