Тип доступа в php

Модификаторы доступа PHP

До этого момента мы явно объявляли все свойства как public (общедоступные). И такой тип доступа задан по умолчанию для всех методов. В этом уроке мы узнаем, как ограничить внутренний доступ к нашим классам с помощью модификаторов доступа private, protected и public.

Модификаторы доступа в PHP

С помощью специальных модификаторов можно задать область видимости для свойств и методов класса. В PHP есть три таких модификатора:

Пример

Результат выполнения кода:

Как получить доступ к свойству private?

Мы увидели, что у нас нет доступа к private (приватным) свойствам извне класса, но нам все равно нужно каким-то образом установить и получить значения свойств. Для взаимодействия с приватными свойствами мы используем публичные (public) методы, потому что они могут взаимодействовать как с кодом за пределами области действия класса, так и с кодом внутри класса. Публичные методы, которые могут взаимодействовать таким образом, обычно делятся на два типа:

Пример

Результат выполнения кода:

Зачем нужны модификаторы доступа?

Нам нужны модификаторы доступа, чтобы ограничить возможность вносить изменения в методы и свойства извне классов. Как только мы определяем свойство или метод как приватные, только методы, находящиеся внутри класса, смогут приближаться к ним. Итак, чтобы взаимодействовать с приватными методами и свойствами, нам необходимо предоставить публичные методы. Внутри этих методов мы можем составить такую логику, которая сможет проверять и ограничивать данные, поступающие извне класса.

Пример

Результат выполнения кода:

Заключение

Модификатор protected подробнее рассмотрим в следуюих уроках.

Источник

Права доступа пользователей при авторизации на PHP

Учебник PHP

Практика

Важное

Регулярки

Работа с htaccess

Файлы, папки

Сессии и куки

Работа с БД

Практика по работе с БД в PHP

Перед чтением см. новые уроки раздела «Важное», которые появились выше.

Практика

Движок PHP

Продвинутые БД

Аутентификация

Практика

ООП и MVC

Абстрактные классы и интерфейсы

Трейты

ООП Магия

Практика

Практика: классы как набор методов

Очень часто на сайтах делают различные типы пользователей.

Каждый тип обладает разными привилегиями.

Более сложные варианты: юзер, редактор, публикатор, модератор, дизайнер, администратор.

Конечно, количество типов пользователей зависит конкретно от вашего сайта.

Устанавливаем права доступа

Ну, а теперь приступим к реализации.

Обычно права доступа хранят в базе данных в специальном поле.

Давайте назовем его status.

Сделаем сайт, на котором только два типа пользователей: юзер и администратор.

Статусы 2-9 мы резервируем за вероятными появлениями на нашем сайте других типов пользователей.

idlogin (Логин)password (Соленый пароль)cookiestatus (Статус)
1user827ccb0eea8a706c4c34a16891f84e7bsdfLjgyl1
2admin01cfcd4f6b8770febfb40cb906715822sMtrnwpJ10

Теперь при авторизации мы должны добавить значение поля status в переменную сессии $_SESSION[‘status’]:

Теперь, если какое-то действие требует определенного приоритета, мы можем проверить его так:

При регистрации нового пользователя мы должны жестко задать его статус (скорее всего это будет 1) при сохранении в базу данных (чтобы хакер не смог зарегистрироваться как админ!).

Админка

Админкой называется зона сайта, куда имеет доступ только администратор сайта (иногда некоторые другие типы пользователей могут иметь ограниченный доступ).

В админке обычно реализуется добавление и редактирование текстов статей, управление пользователями (удаление, бан, изменение статуса) и многое другое.

Список пользователей

Пример страницы админки:

idлогинemailстатусудалитьзабанитьредактировать
1user0test0@mail.ruадминудалить
delete.php?user_id=1
забанить
ban.php?user_id=1
редактировать
edit.php?user_id=1
2user1test1@mail.ruмодераторудалить
delete.php?user_id=1
забанить
ban.php?user_id=1
редактировать
edit.php?user_id=1
3user2test2@mail.ruюзерудалить
delete.php?user_id=1
забанить
ban.php?user_id=1
редактировать
edit.php?user_id=1
4user3test3@mail.ruюзерудалить
delete.php?user_id=1
забанить
ban.php?user_id=1
редактировать
edit.php?user_id=1
5user4test4@mail.ruзабаненудалить
delete.php?user_id=1
разбанить
unban.php?user_id=1
редактировать
edit.php?user_id=1
6user5test5@mail.ruюзерудалить
delete.php?user_id=1
забанить
ban.php?user_id=1
редактировать
edit.php?user_id=1

Обратите внимание на забаненного пользователя с у него вместо ссылки ‘Забанить’ стоит ссылка ‘Разбанить’.

Бан пользователей

Администратор должен иметь возможность забанить какая-либо пользователя.

Аккаунт забаненного пользователя не удаляется, но пользователь не сможет больше зайти на сайт (совсем или какое-то время).

Для этого в таблице users следует ввести дополнительное поле banned.

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

В админке бан осуществляется так: администратор переходит по ссылке типа: ban.php?user_id=1 и выполняется SQL запрос на UPDATE строки с пользователем:

Удаление пользователей

Удаление выполняется аналогично бану, только в этом случае аккаунт удаляется совсем из базы данных.

Администратор переходит по ссылке типа delete.php?user_id=1 и выполняется SQL запрос на DELETE строки с пользователем:

Аналогично решаются все другие задачи админки, например, изменение статуса.

Что вам делать дальше:

Приступайте к решению задач по следующей ссылке: задачи к уроку.

Источник

Модификаторы доступа в PHP

Тип доступа в php

В PHP имеется три модификатора доступа:

Начнём с модификатора доступа public. Данный модификатор означает, что свойство, метод или конструктор будут доступны для всех объектов, которые их используют.

Модификатор доступа protected означает, что данный элемент объекта может быть использован только в самом объекте, а также в его дочерних.

И, наконец, модификатор доступа private означает, что данный элемент объекта может быть использован только в самом объекте и нигде больше.

Давайте продолжим заниматься классами по автомобилям и реализуем их заново, но с использованием модификаторов доступа. Напоминаю, что раньше мы использовали только public, что не есть хорошо. Итак, абстрактный класс, отвечающий за «Автомобиль«:

Как видите, мы сделали свойства объекта Car защищёнными (protected), то есть они теперь доступны только внутри самого класса Car, а также во всех его наследниках. Также мы закрыли служебную функцию sound(), сделав её также protected. Всё остальное (конструктор и метод move()) мы оставили открытыми, то есть public. Иногда всё-таки бывает нужно иметь доступ к свойствам, однако, делать их открытыми совсем не хочется. Тогда добавляют так называемые методы get и set:

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

Теперь класс «Auto«, отвечающий за легковой автомобиль:

Здесь мы поменяли модификатор доступа только у метода sound().

И, наконец, скрипт, который использует объект Auto.

Тип доступа в php

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 21 ):

Сразу в поля записать то, что в GET не получится. Но можно вручную это сделать. То есть принять массив и сразу его значения раскидать по полям. А уже потом обычными методами вытаскивать эти значения из полей.

Ясно, а если делать для каждого поля свой метод, это не сильно скажется на быстродействии?

На быстродействие это практически не повлияет.

Источник

Как сделать типы пользователей на PHP

Тип доступа в php

Буквально вчера мне задали вопрос, как сделать так, чтобы администратору выводились одни данные, гостю другие, а обычному пользователю третьи. Данный вопрос я слышу относительно часто, поэтому и решил написать статью о том, как сделать типы пользователей на PHP.

Сначала Вам необходимо добавить ещё одно поле в таблицу с пользователями. В этом поле будет содержаться число, характеризующее тип пользователя. Например, так:

Теперь в самом скрипте надо написать примерно следующее:

Это основа для разграничения прав доступа при работе с различными типами пользователей. Разумеется, вместо строк «Вы модератор» надо выводить что-то более полезное. Например, для всех авторизованных пользователей можно вывести ссылку, закрытую для гостей. А для администратора можно вывести ссылку на Admin-панель.

Вот таким достаточно простым и очевидным способом можно сделать типы пользователей на PHP с разграничением прав доступа.

Тип доступа в php

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Комментарии ( 4 ):

Неопределённая функция: Fatal error: Call to undefined function getuserType().

Эту функцию надо написать самому.

Ахахах! Это я, конечно, круто спросил. Спасибо большое за ответ. 🙂

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

Copyright © 2010-2021 Русаков Михаил Юрьевич. Все права защищены.

Источник

Модификаторы доступа PHP

До этого момента мы явно объявляли все свойства как public (общедоступные). И такой тип доступа задан по умолчанию для всех методов. В этом уроке мы узнаем, как ограничить внутренний доступ к нашим классам с помощью модификаторов доступа private, protected и public.

Модификаторы доступа в PHP

С помощью специальных модификаторов можно задать область видимости для свойств и методов класса. В PHP есть три таких модификатора:

Пример

Результат выполнения кода:

Как получить доступ к свойству private?

Мы увидели, что у нас нет доступа к private (приватным) свойствам извне класса, но нам все равно нужно каким-то образом установить и получить значения свойств. Для взаимодействия с приватными свойствами мы используем публичные (public) методы, потому что они могут взаимодействовать как с кодом за пределами области действия класса, так и с кодом внутри класса. Публичные методы, которые могут взаимодействовать таким образом, обычно делятся на два типа:

Пример

Результат выполнения кода:

Зачем нужны модификаторы доступа?

Нам нужны модификаторы доступа, чтобы ограничить возможность вносить изменения в методы и свойства извне классов. Как только мы определяем свойство или метод как приватные, только методы, находящиеся внутри класса, смогут приближаться к ним. Итак, чтобы взаимодействовать с приватными методами и свойствами, нам необходимо предоставить публичные методы. Внутри этих методов мы можем составить такую логику, которая сможет проверять и ограничивать данные, поступающие извне класса.

Пример

Результат выполнения кода:

Заключение

Модификатор protected подробнее рассмотрим в следуюих уроках.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *