Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Авторизация разграничение прав и тд
Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
Сильно подозреваю что подобная тема поднималась здесь, и не раз обмуссоливалась но через поисковик я здесь ничего дельного найти не смог, поэтому прошу сильно не ругаться. Пишу авторизацию с разграничением привелегий админ и пользователь, естественно некоторые функции от простого пользователя должны быть скрыты. В гугле нарыл session_start();, подскажитие какими ещё функциями для такого дела воспользоваться, какие есть подводные камни в общем поделитесь знаниями так сказать.
DelphinPRO
Отправлено: 05 Декабря, 2013 - 21:30:39
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
в простейшем случае заведите в таблице пользователей дополнительное поле с правами доступа: 1 - admin, 0 - user.
Потом все сведется к простой проверке
Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
AmsTaFF пишет:
ищите лучше, есть миллион скриптов авторизации, с комментами. Есть гайды как писать авторизацию...
Это да, их достаточно много но я не хочу брать готовый код, мне бы понять как это работает
AmsTaFF
Отправлено: 06 Декабря, 2013 - 10:25:25
Гость
Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013 Откуда: Россия, Москва
Помог: 1 раз(а)
так посмотрите как там все написано, в гайдах скорее всего описано почему именно так, а не по-другому. Посмотрите какие там функции используются, изучите их. Например посмотрите что такое сессия (Session), всякие хэши (md5(), sha1() и прочие) для паролей (может быть сейчас не используются уже, но раньше частенько использовались). При изучении кода у вас появятся вопросы "А зачем? А почему? А почему так, а не по-другому?", эти вопросы можно задать гуглу, если там нету ответа - тут подскажут.
Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
caballero пишет:
Триган
а что именно там непонятного
если админ выводишь одно если нет - другое
обычный if else
так все скрипты и устроены
или потрудись описать что конкретно ты хочешь разграничивать
На самом деле очень много вопросов, и даже не знаю что первое спрашивать
Итак с авторизацией я разобрался, такой вопрос:
Вот я авторизовался на сайте, переходя на другие страницы этого же сайта я остаюсь авторизованным или на всех страницах сайта нужно прописывать сессию?
На счёт разграничения:
Нужно что бы админу были видны некоторые пункты в меню а простому юзеру нет
Завёл в бд ещё одно поле, если админ то стоит 1 если просто юзер то 0. Вот допустим авторизовался админ, я проверяю если в поле стоит 1 то ..... и вот тут вообще ничего не ясно.
На словах то понятно что если 1 то показать пункт в меню если 0 то не показывать, а как реализовать это, я совсем не представляю.
DelphinPRO
Отправлено: 06 Декабря, 2013 - 12:20:43
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Триган пишет:
Вот я авторизовался на сайте, переходя на другие страницы этого же сайта я остаюсь авторизованным или на всех страницах сайта нужно прописывать сессию?
при каждом запросе страницы следует проверять флаг в сессии, установленный во время логина. Механизм сессий как раз и существует для передачи даных между вызовами скрипта (переходами по страницам)
Триган пишет:
Вот допустим авторизовался админ, я проверяю если в поле стоит 1 то ..... и вот тут вообще ничего не ясно.
На словах то понятно что если 1 то показать пункт в меню если 0 то не показывать, а как реализовать это, я совсем не представляю
Что может быть проще конструкции if..else ?
Поясните конкретнее, что именно в данном моменте не понятно
----- Чем больше узнаю, тем больше я не знаю.
Триган
Отправлено: 06 Декабря, 2013 - 17:40:03
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013
Помог: 0 раз(а)
DelphinPRO пишет:
Триган пишет:
Вот я авторизовался на сайте, переходя на другие страницы этого же сайта я остаюсь авторизованным или на всех страницах сайта нужно прописывать сессию?
при каждом запросе страницы следует проверять флаг в сессии, установленный во время логина. Механизм сессий как раз и существует для передачи даных между вызовами скрипта (переходами по страницам)
Триган пишет:
Вот допустим авторизовался админ, я проверяю если в поле стоит 1 то ..... и вот тут вообще ничего не ясно.
На словах то понятно что если 1 то показать пункт в меню если 0 то не показывать, а как реализовать это, я совсем не представляю
Что может быть проще конструкции if..else ?
Поясните конкретнее, что именно в данном моменте не понятно
Простую проверку на авторизацию проходит, т е если чел не авторизован то 3 пункта меню он не видет, если авторизован то видит. Добовляю проверку на админа и ничего не получается, не могу найти ошибку
Триган
Отправлено: 08 Декабря, 2013 - 12:30:03
Новичок
Покинул форум
Сообщений всего: 13
Дата рег-ции: Дек. 2013
Помогите найти ошибку) Должно быть типо если человек авторизован и в поле админ стоит 1 то все три надписи видны, если в админ - 0 то 2 надписи видны, если не авторизован то все 3 надписи не видны
DelphinPRO
Отправлено: 08 Декабря, 2013 - 16:50:10
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
1. Что за таблица chelreg? По названию нифига не ясно... (это, кстати, минус)
2. Если это пользователи, то зачем вытаскивать их всех?
Да это таблица где хранятся данные пользователей, имя, фамилия, и тд. В том числе там поле admin с записями типа 1 и 0. Я ставил там конкретное поле админ Select admin From chelreg. И ничего это не меняет, условие работает не правильно, не реагирует на проверку админа (Добавление)
caballero пишет:
Цитата:
chelreg
зарегистрированые человеки ?
Да
DelphinPRO
Отправлено: 08 Декабря, 2013 - 17:16:09
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
Триган пишет:
зарегистрированые человеки
обычно ее называют users
Вам не нужно вытаскивать всех "человеков". Тащите из базы только того, кто запросил страницу.
Потом напишите функцию вывода пунтка меню, например так
$user - это массив с данными текущего пользователя. Вы его получите из базы, если юзер авторизован, либо сформируете сами для гостей, с данными по умолчанию.
$user - это массив с данными текущего пользователя. Вы его получите из базы, если юзер авторизован, либо сформируете сами для гостей, с данными по умолчанию.
До меня не доходит как это работает, ну в сущности и не работает . Если гость то норм выдаёт "начать тест", а при всём остальном не работает, скорее всего я неправильно формирую массив user
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.