#php #mysql #codeigniter #multi-user
#php #mysql #codeigniter #многопользовательский
Вопрос:
Я создаю многопользовательское приложение. создан с использованием php codeigniter, и я ищу наилучшую практику или лучший способ запретить пользователю изменять / удалять другие пользовательские данные.
У меня есть несколько реляционных таблиц.
- tbl_users (идентификатор пользователя, имя_пользователя, пароль)
- tbl_stores (store_id, user_id, store_name, store_url)
- tbs_products (product_id, store_id, product_name)
У каждого пользователя есть свой магазин, и в каждом магазине может быть много товаров.
Итак, каковы наилучшие способы запретить пользователю удалять другие пользовательские данные?
На самом деле, я создал некоторый код в модели, но поскольку я в некотором роде новичок, я не уверен, что это правильный путь, мой код выглядит следующим образом.
function remove_product($product_id)
{
$this->db->from('products as p');
$this->db->join('stores as s', 's.id = p.store_id');
$this->db->where('p.id', $product_id);
$this->db->where('s.user_id', $this->session->userdata('id'));
if($this->db->count_all_results())
{
$this->db->where('id', $product_id);
return $this->db->delete($this->table);
}
}
Пожалуйста, сообщите, правильный ли этот подход или нет, или если есть лучший способ сделать это.
С уважением
Ответ №1:
Перед удалением чего-либо проверьте, совпадает ли владелец этого с пользователем сеанса.
Комментарии:
1. Спасибо за ответ, значит, для этого все еще нужны 2 запроса?
2. УДАЛИТЬ Из продуктов, ГДЕ … И userid = SESSIONUSER