【问题标题】:Creating a timed validation with PHP and MySQL使用 PHP 和 MySQL 创建定时验证
【发布时间】:2009-04-01 22:29:57
【问题描述】:

我将如何创建一个用户必须单击链接才能验证某些内容的系统。

假设在我的网站上,每个用户都有自己的未共享文件夹。我希望他们成为每个用户在其帐户页面上的一个选项,他们可以在其中与另一个用户建立信任以访问彼此的文件夹。也许通过输入他们想要与之建立信任的用户的名称。

所以在这种情况下,用户 Jim 在他的创建信任输入框中键入“Tom”,因此需要建立信任。我想,A) 需要一些东西来存储 Jim 的请求,B.然后将其分配为未验证,C.最后将验证链接发送给 Tom。然后汤姆以某种方式收到了一条消息? (还不确定),也许要检查一下是否有汤姆的验证链接?然后 Tom 单击发送的验证链接以验证他是否也想与 Jim 建立信任。一旦 Tom 点击它,A. 告诉任何存储了 Tom 接受的 Jim 请求的内容,B. 将验证分配为已验证 C. 通知 Jim Tom 的请求已被接受或拒绝。

但是,如果 24 小时结束,或者 Tom 拒绝了 Jim 的请求,还需要有一种方法来删除验证存储(无论它是什么)。

谁能帮帮我? :)

【问题讨论】:

    标签: php validation


    【解决方案1】:

    对于数据库来说,这听起来不错。当用户 A 请求共享时,它在数据库中输入为待处理。当用户 B 收到通知时,他可以单击一个链接,该链接的脚本将检查数据库中的原始请求,验证它是否在 24 小时内,如果是,则数据库记录我们更新为接受或拒绝。如果 24 小时已过,记录将更新为过期。

    【讨论】:

      【解决方案2】:

      如果您使用的是数据库,这很简单。只需为每个请求生成某种唯一 ID,并将请求(状态为“等待响应”或类似的)存储在数据库中,然后向 Tom 发送一封电子邮件,其中包含指向您的一个 php 页面的链接,该页面的唯一 ID 为查询字符串中的请求。

      这样,您可以将请求的“接受时间”字段更新为每当汤姆点击他电子邮件中的链接时,并将状态更改为“接受”。

      逻辑上确定是否已过 24 小时很简单,您可以在此时间段之后拒绝访问受信任的共享。

      【讨论】:

        【解决方案3】:

        您可以定义一个具有以下属性的表:
        -唯一 ID
        -ID1(第 1 个人)
        -ID2(属于第 2 个人)
        -验证状态(对或错)
        -验证哈希 MD5(名称(ID1)+RANDOM(100,99999),名称(ID2))
        - 请求关系的日期和时间
        - 与需要此功能的系统相关的其他信息...

        然后按照你说的进行。
        1) 2009 年 12 月 5 日下午 5:25,Tom (ID=15) 要求 Mark(ID=21) 加入他的网络,然后您的脚本将数据添加到表中,如下所示:
        - 唯一 ID:由自动增量自动分配
        -ID1:15
        -ID2:21
        -已验证:错误
        -验证哈希 MD5:MD5("Tom".42574."Mark")=bedbcfc6e679be69ff3587f15213c83f
        -日期和时间:2009 年 12 月 5 日下午 5:25
        - 与需要此功能的系统相关的其他信息...

        确保在将数据设置到数据库之前,检查重复项。
        之后,删除日期和时间超过 24 小时的所有字段 =D

        2)如果没有重复,发送邮件给 Mark 并带有一个返回到您页面的链接,包括 md5 哈希作为 url 的 Get 属性。让我们坐在页面名称是 validate.php?h=bedbcfc6e679be69ff3587f15213c83f

        3)您的脚本 validate.php 收到带有 get 参数 h=bedbcfc6e679be69ff3587f15213c83f
        的请求 前往 chek de db。
        如果哈希值存在,并且日期和时间不超过 24 小时,请将 Validated 设置为 true,然后将邮件发送到 Tom 的电子邮件,其中包含他的新朋友的信息。
        如果 hash 不存在,通过验证页面结果通知 Mark。

        好的。就这样。希望它对您有所帮助。

        【讨论】:

        • =) 另外想一想,正如其他回复中所说,您也可以避免删除过期字段,并将它们标记为过期,这样您就可以进行统计=)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 2022-06-13
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 2014-04-14
        • 2016-01-24
        相关资源
        最近更新 更多