php - 最佳实践 : Creating a simple CRUD web application with users/roles

标签 php codeigniter crud

在网上搜索了大量内容后,我找不到任何我正在寻找的东西,也找不到概述如何与用户一起创建 Web 应用程序的内容。我能找到的最接近的东西是 this stackoverflow post ,其中概述了如何在 SQL 服务器上创建具有用户/角色的 Web 应用程序。

我还从 this post 中找到了几个替代品.

  • 创建一个简单的关系数据库
  • 制作一个“元表”

我正在 CodeIgniter 上创建一个 Web 应用程序,它是一个 Wine 管理工具,类似于 CellarTracker .每个用户都有自己的“酒窖”,或者他们可以对其执行 CRUD 操作的 Wine 集合。做这个的常规方法是什么。我应该如何构建数据库?是否有任何 CI 库可以使用户管理、角色、权限等更容易? (我已经发现 TankAuth 似乎是最好的身份验证库)。

以下是我构建(部分)数据库的方式:

**users_table**
id
email
password

**wines_table**
id
user_id

我的计划是让每瓶酒都有一个与之关联的用户 ID。我怀疑这是处理具有许多用户的 CRUD Web 应用程序的最安全或最有效的方法。

我有 CRUD 操作的经验,但不确定如何将它们与用户管理系统连接起来。

最佳答案

考虑为与用户无关的 Wine 设置一个完全独立的表格。

此 table 有酒亲子。父项包含酿酒厂的字段、 Wine 的名称、位置等。子项将是年份的特定年份。

所以用户在他的跟踪器中输入了一个酒名。系统查找 - 如果未找到,则用户创建记录。系统使用年份创建一个父记录和一个单独的子记录。

如果找到了 Wine - 那么用户可以更新父记录,然后选择年份或输入新年份。

系统然后会在一个单独的表中添加一条记录 - users_wines - 其中包含父项(酒)的 ID 和子项的 ID(特定年份)

这开辟了许多不同的可能性,包括拥有由用户组共享的酒单。

您还可以轻松地改变用户和他的酒瓶的关系——因为它们是分开的。用户可以更改 users_wines 的状态——酒窖中的酒、饮用的酒、空酒瓶——这不会影响酒本身的记录。

==== 编辑 - 是的,提到 wine.com api 会是很好的信息。这就涉及到更大的问题。建议您首先定义您的用户能够做什么。我的第一个问题是——如果用户不喜欢从 wine.com 返回的名称怎么办?如果 api 中存在实际错误怎么办? 您是否要向客户服务提供从 api 返回的错误 Wine 名称?

或者 - 用户可以重命名他们列表中的 Wine 吗?如果他们可以,那么与 wine.com 的数据关系将大不相同。

我个人认为尝试创建酒单会很烦人,但您不能编辑名称。似乎那是从用户那里删除了太多的控制权。

但是,如果这是一款适用于需要问责制的餐厅的应用程序,那么让酒名不可更改可以被视为一项功能。

所以花一些时间了解您的用户角色和用户故事。然后让它通知数据关系。

关于php - 最佳实践 : Creating a simple CRUD web application with users/roles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18135668/

相关文章:

php - jquery 电子邮件表单 submitHandler 的问题

php - 正则表达式的 CodeIgniter 路由问题

php - 实时网络服务的更改和测试

php - 按循环内的函数对 foreach 进行排序

php - sql 查询在列中搜索我需要的特定模式的字符串

node.js - 无法让用户使用 node 和 mongodb 的 restful API

php - Codeigniter 2 脚手架

php - 从数据库中删除内容,安全预防措施

mysql - 如何在mysql where子句中使用if else

php - 在 CRUD 中将创建和更新作为一项操作