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

Тема в разделе "PHP", создана пользователем danneo, 9 дек 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    Вот никак не могу понять примитивные вещи. Делаю каталог фирм. Как сделать защиту на редактирование, т.к. чтобы только свои записи можно было править? Какие поля в таблицах, как передавать данные скрипту, откуда, в общем, какой принцип работы?
     
  2. Phrack

    Phrack

    Регистр.:
    3 ноя 2010
    Сообщения:
    264
    Симпатии:
    38
    смотря что у тебя и как сделано.
    Предположим у тебя есть регистрация, т.е. каждая фирма имеет лог/пасс. Эти данные хранишь в строке с фирмой и при апдейте сверяешь их. А ссылку на редактирование выводишь только около фирмы, чей id совпадает с id в сессии.

    Если есть только пароль для редактирования(т.е. любой кто его имеет, может редактировать), то при редактировании сверяешь его
     
  3. SiZE

    SiZE Постоялец

    Регистр.:
    31 янв 2010
    Сообщения:
    51
    Симпатии:
    10
    Во первых у тебя должна быть таблица с логинами/паролями. Далее таблица с названиями фирм. В таблице с пользователями или в отдельной должны хранится связи пользователя с фирм(ой/ами). И кто то должен эту привязку устаналивать. Пишешь авторизацию. После того как пользователь себя идентифицировал можешь проверять если идентификатор выбранной организации совпал с тем на который ссылается поле из таблицы пользователей значит даешь редактировать.

    Данные об авторизации можно хранить хоть где: куки, сессия, бд. Передавать данные через POST или XmlHttpRequest ))
     
  4. trooll

    trooll PHP кодер

    Регистр.:
    22 дек 2008
    Сообщения:
    503
    Симпатии:
    116
    В таблице пользователей добавь поле id тип целочисленный, автоинкремнтируемое поле, тем самым каждый пользователь у тебя станет уникальным, точнее будет иметь уникальный кодификатор, а от этого идентификатора уже и плеши дальше, по поводу уникальных изменений и т.д. Данные скрипту обработчику из формы, советую передавать POST типом, также проверять их валидность, и правильность перед занесением в базу. Таким образом отсеешь не малую часть школьнико-Хакеров :)
     
  5. DenisK

    DenisK

    Регистр.:
    8 фев 2007
    Сообщения:
    206
    Симпатии:
    14
    да, через id-шник самое правильное решение

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

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

    При попытке редактирования через id обращаемся к таблице 1 и если данные совпадают, разрешаем редактирование.
     
  6. danneo

    danneo Честный

    Регистр.:
    13 ноя 2007
    Сообщения:
    1.463
    Симпатии:
    114
    а что мешает задать в адресе нужный id и отредактировать?
     
  7. chang

    chang

    Регистр.:
    20 ноя 2009
    Сообщения:
    363
    Симпатии:
    117
    зайдя на сайт пользователь должен будет авторизоваться ( т.е. ввести свой логин и пароль, которые знает только он )
    логин и пароль пользователя будет хранится в базе данных, и каждой паре логин/пароль будет соответствовать уникальный идентификатор ( просто уникальное число )
    когда юзер введет логин и пароль и в базе найдется им соответствие, то уникальный идентификатор будет записан в сессию,
    http://phpfaq.ru/sessions ( предполагается что пользователь сессию подделать не может, так как она хранится на сервере и в той или иной степени защищена.
    при попытке редактирования записи необходимо будет сделать какую-то проверку, например принадлежит ли созданная запись данному пользователю ( т.е. равен ли айди пользователя создавшего эту запись, айди того пользователя который залогинился и пытается ее редактировать ) или является ли пользователь с текущим айди админом или модером (т.е. есть ли у него право на редактирование записи )

    если да - то пользователю разрешается редактирование ... если нет то его посылают на все 4 стороны ....
    ну и собственно как сделать саму авторизацию ( в гугле еще полно есть инфы по запросу "PHP + авторизация" )

    http://www.ruseller.com/lessons.php?rub=37&id=347 - с исходниками и максимально подробно расписана
    http://habrahabr.ru/blogs/php/13726/ ( также читаем коменты с рекомендациями и пожеланиями )
     
  8. vizard-06

    vizard-06 Создатель

    Регистр.:
    9 фев 2007
    Сообщения:
    11
    Симпатии:
    2
    Русские переменные для повышенной внятности
    PHP:
    if($фирма_авторизована and $фирма_авторизована['id'] == $страница_с_данными_фирмы['id']) {
      
    редактируем
    } else {
      
    не редактируем
    }
     
  9. Sanja_

    Sanja_ Создатель

    Регистр.:
    9 окт 2009
    Сообщения:
    27
    Симпатии:
    8
    при таком коде любое id вставь и будет редактировать, лучше так сделать
    PHP:
    if($пользователь авторизован and $id_пользователя['id'] == $id_из_базы_данных['id']) {
      
    редактируем
    } else {
      
    не редактируем
    }
    и при создании объявы занести к ней id пользователя которому можно редактировать вот самы просто способ
     
  10. vizard-06

    vizard-06 Создатель

    Регистр.:
    9 фев 2007
    Сообщения:
    11
    Симпатии:
    2
    Sanja_

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