【问题标题】:Asking for reservation process询问预订流程
【发布时间】:2015-03-09 07:18:56
【问题描述】:

我目前正在制作一个包含预订系统的网站。我想问一下我是否可以避免多次预订(我的意思是恶作剧预订)。我想要这样,如果有人预订,系统不会立即将其添加到数据库中。如果他/她真的确定他所做的预订,则必须得到用户的确认。如果用户确认那是时间,它将被添加到数据库中。我该怎么做?谁能帮我?

【问题讨论】:

  • 立即添加,但一旦确认预订,标志就会从 0 设置为 1。
  • @ Sepehr Farshid ,我有一个预订,它会自动在数据库中添加预订用户的信息。这里的问题是,如果某个用户进行了恶作剧预订怎么办多次?然后数据库将充满虚假的预订/不确定的预订......
  • @Strawberry,但它仍会立即添加到数据库中吗?你的意思是我只需要在我的reservation 表中添加一个数据类型为布尔值的字段?
  • Boolean 或 tinyint - 两者都可以。 PK 或 UNIQUE 密钥应防止用户在同一日期提交多个预订。
  • 这不仅仅是一个做这个或那个问题..您需要提供您当前的代码..例如,您当前如何处理每个请求?您目前如何将其存储在数据库中?一旦我们知道您当前代码的结构,我们就可以实现您想要的方式。旗帜(正如草莓提到的)绝对是我会考虑的东西,但同样,它取决于你目前拥有的结构或方法。

标签: php mysql html codeigniter


【解决方案1】:

在 cmets 中,我认为最好的办法是创建您的预订条目并添加一个标志以指示预订条目未确认。然后发送带有链接的确认电子邮件以将用户重定向到将预订标记为已确认的 php 脚本是有意义的。这是非常标准的东西,您应该找到示例来了解如何构建一次性确认 URL

cmets 中提到了如何避免多次预订。与其查看主键/唯一约束,不如通过检查用户电子邮件地址并确保其在该日期和时间的唯一性来更简单地实现。对电子邮件的唯一约束没有意义,因为您可能希望同一用户进行多次预订。您可以考虑对日期和电子邮件进行复合约束,但这在数据库级别可能过于严格。最好在 PHP 中实现一个可配置的值(例如,每 X 小时/天没有电子邮件可以预订超过一次)

发布您的代码以获取更多信息

【讨论】:

    【解决方案2】:

    有一个用于临时预订的数据库表,另一个用于确认预订的数据库表。当客户确认预订时,会在已确认预订表中创建一条记录。这也使网站和管理工具分开:客户正在访问临时预订数据库表——管理员正在访问确认的预订表。

    否则,您的 db 表是实际预订和未完成预订的混合体。验证用户的第一步是搜索唯一的电子邮件地址。第二个是向用户发送电子邮件,他们必须单击并回复它——因此您确认他们正在输入他们有权访问的电子邮件地址。第三个是需要一个手机号码——验证该号码是唯一的——然后向用户发送一条带有随机字符串的短信,他们必须在网站中输入该短信以确认预订。

    【讨论】:

    • 好吧,我不会这样做。
    • 是的,第二张桌子让自己头疼。没有必要浪费时间和精力来维护。只是一个简单的状态标志来描述状态,例如“未确认”、“已确认”、“已取消”等
    • 第一个表没有值。第二个表是业务价值。第一张桌子是公开的。包含业务资产的第二个表始终是私有的。注意到他的部分问题是用户在多次提交时点击了预订表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    相关资源
    最近更新 更多