За последние 24 часа нас посетили 51239 программистов и 1756 роботов. Сейчас ищут 1150 программистов ...

Группы

Тема в разделе "PHP для новичков", создана пользователем McLotos, 17 мар 2011.

  1. McLotos

    McLotos Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Покажите где я опять что пропустил.
    Имеется пользователь Админ и несколько пользователей "менеджер". Каждый менеджер зарегистрирован в своей группе "business_unit". Когда в систему заходит админ он видит список всех менеджеров, а когда заходит менеджер, он должен получать только список всех пользователей своей группы, а у меня получается что все менеджеры видят всех пользователей.
    PHP:
    1. <?php
    2. if (!empty($_SESSION['login']) and !empty($_SESSION['password']) and $_SESSION['dostup'] == '0') \\проверка уровня доступа 0-админ, 1-менеджер, 2-пользователь
    3. {
    4. $dostup ='1'; //показать менеджеров
    5. $status = "<h4>Administrator</h4>"; //права доступа
    6. $table=$tadmin; //вывести шапку таблицы для админа
    7. $head=$hadmin; //определить правильный заголовок страницы
    8. $tableconnect='admincontent';
    9. }
    10. elseif ($dostup='1') //зашёл менеджер
    11. {
    12. $dostup ='2'; //показать пользователей
    13. $status = "Office Manager"; //права доступа
    14. $table=$tmanager; //вывести шапку таблицы для офис-менеджера
    15. $head=$hmanager; //определить правильный заголовок
    16. $tableconnect='managercontent';
    17. }echo "<h1>$head</h1>"; //вызвать нужный заголовок
    18. echo $table; //показать нужную таблицу
    19. $result = mysql_query("SELECT * FROM users WHERE dostup='$dostup' ORDER BY login"); //извлекаем логин и идентификатор пользователей
    20. $myrow = mysql_fetch_array($result);
    21. do {
    22. switch($tableconnect) {
    23.   case "managercontent": managercontent($myrow); break;
    24.   case "admincontent": admincontent($myrow); break;
    25. }
    26. }
    27. while($myrow = mysql_fetch_array($result));
    28.            echo "</tr>
    29.           </table><br>";
    30. }
    Я так понял мне нужно будет ввести ещё одну переменную, к примеру $BU и сверять её с полем business_unit, в анкете менеджеров, а патом уже делать фильтр на основе этих данных, но тогда если заходит админ, который кстати тоже принадлежит одному из business_unit ему тоже будут показываться только менеджеры его BU.
     
  2. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    нету такого and есть &&

     
  3. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    Invision
    и то и другое есть, операторы and or имеют более низкий приоритет чем && ||
    PHP:
    1. elseif ($dostup='1')
    тут переменной доступ присваивается 1
    PHP:
    1. if("1"){
    2.   echo 'true';
    3. }
    если первый блок не выполнился, то переменной $dostup не существует
     
  4. Invision

    Invision Активный пользователь

    С нами с:
    26 фев 2009
    Сообщения:
    1.437
    Симпатии:
    1
    Адрес:
    Томск
    эм не знал) спс
     
  5. McLotos

    McLotos Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Padaboo
    Я не совсем понял суть предложенного кода. Что он делает? dostup - переменная уровня доступа. Если доступ 0 - это админ, если 1-менеджер, 2-юзер
    Предложенный код по идее никак не повлеяет на выполнение задачи. Просто как сделать чтобы вошедший менеджер видел только тех пользователей, которые находятся с ним в одной групе, т.е. в одной business_unit
    Можно к примеру написать что-то типа
    PHP:
    1. <?php if (dostup=1) and (business_unit=ALA) { $BU=ALA;}
    2. elseif (business_unit=GUW){$BU=GUW}
    3. else {$BU=SCO}
    Мне одному этот код кажется полным бредом?
     
  6. McLotos

    McLotos Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Нужно что-то вот такое, а патом уже в зависимости от значения $BU выводить разные списки юзеров
     
  7. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    не могу понять логику этого кода
    PHP:
    1. <?php
    2. if ($_SESSION['dostup'] == '0'){
    3.  $dostup = '1';
    4. } elseif ($dostup='1'){
    5.  $dostup = '2';
    6. }
     
  8. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    McLotos
    после тега php еще ставь <?php , тогда код раскрашиваться будет и легче восприниматься.
     
  9. Shumomer

    Shumomer Активный пользователь

    С нами с:
    12 мар 2011
    Сообщения:
    194
    Симпатии:
    1
    Адрес:
    из вашего вображения
    Нет там логики :)

    McLotos: в ПХП сравнение идет не через = а через == (двойное равно). Есть еще === (равно и того-же типа). Просто = это присвоение, не важно где, в скобках у ИФа - тоже.
     
  10. McLotos

    McLotos Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Padaboo
    =)
    Если уровень доступа вошедшего пользователя 0, тогда показать всех пользователей с уровнем доступа 1, если уровень вошедшего пользователя 1, показать всех пользователей с уровнем 2.
    Не знаю как это объяснить, но это работает. Мне просто ещё нужно добавить сюда, что если уровень доступа 1, то определить к какому BU относится вошедший и показать ему всех с доступом 2 из того же BU
     
  11. McLotos

    McLotos Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    90
    Симпатии:
    0
    Ну я php знаю не так хорошо, поэтому просто привёл пример ЛОГИКИ, а не кода. Например еслибы я писал это на JS код выглядел бы именно так =)