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

#php #session-variables #access-control

#php #переменные сеанса #управление доступом

Вопрос:

Я искал переменные сеанса в Google. Насколько я понимаю, я могу использовать их для сбора таких данных, как имя пользователя и другие данные.

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

Я очень новичок во всем этом, и у меня недостаточно понимания, чтобы даже написать какой-то код, который вы могли бы исправить для меня. Как я могу отправить данные, хранящиеся в переменной сеанса, как $_GET или $ _POST? Если у меня есть он в этом формате, я могу использовать его в запросе (я думаю).

  1. У меня есть таблица под названием «work_orders» с полем под названием «updated_by». Я хотел бы иметь возможность сохранить идентификатор последнего человека, который обновил запись.
  2. Я также хотел бы добавить привилегии к рабочим заказам, чтобы пользователи могли просматривать только записи, созданные определенными пользователями.

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

Комментарии:

1. Это действительно помогло бы ответить на ваш вопрос, если бы вы указали конкретную проблему и, возможно, какой-то код, который вы пробовали, когда искали решение. Вопрос, который вы написали, очень широк, и на него трудно ответить.

2. Извините. Я отредактирую вопрос, чтобы он был более конкретным. Спасибо за ответ.

Ответ №1:

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

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

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

Ответ №2:

Похоже, вы здесь смешиваете свои вопросы.

Во-первых, где ваша база данных? Если бы это был, например, MySQL, то вам нужно добавить дополнительный столбец в таблицу заказов на работу (и другие. Лично мне нравится добавлять столбец timestamp в, для аудита морских свиней) .

Я предпочитаю POST, а не GET, потому что 1) он может содержать больше данных и 2) пользователю не так просто вмешаться.

Итак, если у вас есть форма с объявленным полем ввода

 <form>
 

Имя:

(см http://www.w3schools.com/html/html_forms.asp )

Вы можете получить доступ $_POST['user_name'] , например
$sql = 'INSERT INTO work_order_table (user_name, ... <other column names>) VALUES($_POST['user_name'], .. <other values>)

Я бы порекомендовал вам взять хорошую книгу (достаточно дешевую вторую версию) или онлайн-учебник и проработать свой путь.

Просьба сообщить мне, если я что-то пропустил или если что-то непонятно. Удачи вам!


Поскольку вы беспокоитесь о том, что школьники портят вашу базу данных

1) google для того, чтобы узнать, как сделать MySQL более безопасным
2) подсказка для этого потребуются подготовленные файлы
3) используйте POST, а не get, чтобы у вас были URL-адреса, подобные http://192.1.68.1.1/application , а не http://192.1.68.1.1/application?user=smith которые соблазняют пользователей возиться с URL-адресом «просто посмотреть, что произойдет» (вероятно, более опасно, чем внедрение SQL на школьном уровне, но … вы никогда не знаете
4) зайдите в библиотеку для чего-то подобного, например, O’Reilly’s PHP amp; MySQL для чайников за 24 часа для полных идиотов-новичков — или найдите онлайн-учебник god
5) «Я хотел бы иметь возможность ограничить этого конкретного пользователя просмотром только сгенерированных им заказов на выполнение работ» ПРОЧИТАЙТЕ, ГДЕв SQL ВЫБЕРИТЕ
6) измените пароль корня MySQL — или даже добавьте нового пользователя с правами root, а затем удалите root
7) убедитесь, что ни один студент не имеет доступа к серверу, чтобы они не смотрели на PHP и не видели вашего пользователя и пароль MySQL

Комментарии:

1. Спасибо за ответ. База данных — MySQL с таблицей work_orders. В этой таблице у меня есть поле для хранения имени пользователя последнего пользователя, который обновлял данные. Имя поля — userlogin . Также я хотел бы иметь возможность ограничить этого конкретного пользователя просмотром только сгенерированных им заказов на выполнение работ. Это для школьного проекта, где я учусь на первом курсе веб-дизайна. Он будет использоваться для хранения данных класса. Там есть несколько студентов, которые были бы рады испортить работу других, поэтому я пытаюсь установить как можно больше ограничений. Я отредактирую вопрос, чтобы сделать его более понятным. Спасибо

2. 1 за отзыв. Упс, поскольку это для школы, никто не даст вам код. На самом деле, вопросы, как правило, закрываются, если вы задаете слишком общий вопрос домашнего задания. Что нравится людям здесь, так это то, что вы пока показываете свою работу и задаете конкретный вопрос о конкретной проблеме. Однако … Я немного обновил свой ответ

3. 1) Погуглите, как сделать MySQL безопасным (я не буду делать это за вас 😉

4. Спасибо. Я уже несколько дней гуглю. Это не совсем вопрос домашнего задания. Я взял на себя создание сайта для школы, чтобы создать приложение, управляемое базой данных, которое будет хранить эти записи. Раньше все это было на бумаге. Я вышел за рамки того, с чем мне могут помочь мои учителя, класс основан на использовании Dreamweaver и использовании мастеров. Я хочу узнать больше, чем просто как использовать мастер. Я хочу понять, что происходит. Я не прошу код, но должен указывать в правильном направлении. Я так много читаю в Интернете, но мне не хватает основы, чтобы понять это, поэтому я пришел сюда, чтобы уточнить.