Редактировать только свои данные, как?

Статус
В этой теме нельзя размещать новые ответы.

danneo

Честный
Регистрация
13 Ноя 2007
Сообщения
1.526
Реакции
121
Вот никак не могу понять примитивные вещи. Делаю каталог фирм. Как сделать защиту на редактирование, т.к. чтобы только свои записи можно было править? Какие поля в таблицах, как передавать данные скрипту, откуда, в общем, какой принцип работы?
 
смотря что у тебя и как сделано.
Предположим у тебя есть регистрация, т.е. каждая фирма имеет лог/пасс. Эти данные хранишь в строке с фирмой и при апдейте сверяешь их. А ссылку на редактирование выводишь только около фирмы, чей id совпадает с id в сессии.

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

Данные об авторизации можно хранить хоть где: куки, сессия, бд. Передавать данные через POST или XmlHttpRequest ))
 
В таблице пользователей добавь поле id тип целочисленный, автоинкремнтируемое поле, тем самым каждый пользователь у тебя станет уникальным, точнее будет иметь уникальный кодификатор, а от этого идентификатора уже и плеши дальше, по поводу уникальных изменений и т.д. Данные скрипту обработчику из формы, советую передавать POST типом, также проверять их валидность, и правильность перед занесением в базу. Таким образом отсеешь не малую часть школьнико-Хакеров :)
 
  • Заблокирован
  • #5
В таблице пользователей добавь поле id тип целочисленный, автоинкремнтируемое поле, тем самым каждый пользователь у тебя станет уникальным, точнее будет иметь уникальный кодификатор, а от этого идентификатора уже и плеши дальше, по поводу уникальных изменений и т.д. Данные скрипту обработчику из формы, советую передавать POST типом, также проверять их валидность, и правильность перед занесением в базу. Таким образом отсеешь не малую часть школьнико-Хакеров :)
да, через id-шник самое правильное решение

таблица 1. Логины и пароли
id | login | зашифрованный пароль

таблица 2. данные
id | данные | id_создателя

При попытке редактирования через id обращаемся к таблице 1 и если данные совпадают, разрешаем редактирование.
 
а что мешает задать в адресе нужный id и отредактировать?
 
а что мешает задать в адресе нужный id и отредактировать?
зайдя на сайт пользователь должен будет авторизоваться ( т.е. ввести свой логин и пароль, которые знает только он )
логин и пароль пользователя будет хранится в базе данных, и каждой паре логин/пароль будет соответствовать уникальный идентификатор ( просто уникальное число )
когда юзер введет логин и пароль и в базе найдется им соответствие, то уникальный идентификатор будет записан в сессию,
( предполагается что пользователь сессию подделать не может, так как она хранится на сервере и в той или иной степени защищена.
при попытке редактирования записи необходимо будет сделать какую-то проверку, например принадлежит ли созданная запись данному пользователю ( т.е. равен ли айди пользователя создавшего эту запись, айди того пользователя который залогинился и пытается ее редактировать ) или является ли пользователь с текущим айди админом или модером (т.е. есть ли у него право на редактирование записи )

если да - то пользователю разрешается редактирование ... если нет то его посылают на все 4 стороны ....
ну и собственно как сделать саму авторизацию ( в гугле еще полно есть инфы по запросу "PHP + авторизация" )
 
Русские переменные для повышенной внятности
PHP:
if($фирма_авторизована and $фирма_авторизована['id'] == $страница_с_данными_фирмы['id']) {
  редактируем
} else {
  не редактируем
}
 
Русские переменные для повышенной внятности
PHP:
if($фирма_авторизована and $фирма_авторизована['id'] == $страница_с_данными_фирмы['id']) {
  редактируем
} else {
  не редактируем
}
при таком коде любое id вставь и будет редактировать, лучше так сделать
PHP:
if($пользователь авторизован and $id_пользователя['id'] == $id_из_базы_данных['id']) {
  редактируем
} else {
  не редактируем
}
и при создании объявы занести к ней id пользователя которому можно редактировать вот самы просто способ
 
Sanja_

В моём примере переменная $страница_с_данными_фирмы - это массив данных фирмы полученных из бд, и только осёл станет переназначать значения полученные из бд.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху