【问题标题】:How to add birthdate (tel type datefield class) to database and set an age restriction?如何将出生日期(电话类型 datefield 类)添加到数据库并设置年龄限制?
【发布时间】:2015-07-12 07:43:00
【问题描述】:

正如标题所暗示的,我很难找到一种简洁优雅的方法来为用户的生日添加有效的 php 函数并为我创建的生日表单设置年龄限制:

<div id="date1" class="datefield">
            <input id="day" type="tel" maxlength="2" placeholder="DD"/> /
            <input id="month" type="tel" maxlength="2" placeholder="MM"/> /
            <input id="year" type="tel" maxlength="4" placeholder="YYYY" />
</div>

这是我为生日设置的变量:

//initializing registration variables to prevent errors
$bday = ""; //birthday
$bday = date("Y-m-d");

在我的数据库中,birth_date 类型仅设置为日期。到目前为止我的设置是否正确?我了解可能需要将日期分为月、日和年,但如果我想包含有关每个月不同天数的条件,我感兴趣的是用户输入的有效年份.

编辑:对于刚刚被替换的段落,我意识到我让这变得比必要的更复杂。我只是想要一个 php 验证函数来检查输入的年份是否在所需的年龄规范内。因此,在您看到的第一个代码中,我将删除日期和月份字段,只保留年份字段。

不切实际(但仍然相关),我是否应该懒得提示用户输入他们的出生日期,而是在条款/隐私政策中记录所需的年龄限制?我知道即使使用带有限制的 DOB 表格,也不是每个人都愿意遵守规则(例如,Facebook 等社交网络服务有 13 岁的年龄限制,但更年轻的孩子可以通过撒谎来解决这个问题;Twitter 有年龄限制记录而不是提示)。

非常感谢您的建议,谢谢。

【问题讨论】:

  • 重新思考我最后的正文段落,我意识到我需要为我计划的系统提供用户的生日年份,所以我想在我的情况下提示 DOB 是必要的。但是,由于我将使用的只是用户出生日期的年份,因此我放弃询问月份和日期可能是最好和更清晰的,对吧?
  • 复选框 [x] 我证明了这一点。加入验证码
  • @DrewPierce 所以如果我有一个复选框+验证码,大多数(如果不是全部)垃圾邮件和机器人都会被阻止,对吧?不过,我对使用验证码有点犹豫,因为尽管它需要防止垃圾邮件发送者和机器人,但对于试图成功注册的潜在用户来说,这可能是一种令人沮丧的体验。
  • 我有时很难输入验证码可笑吧?我曾经读过一个同样有效的图形,它甚至可以像笑话一样告诉你答案。上面写着什么是4+3? (输入 7)。这是随机的。
  • 谁在乎他们在生日时输入了什么。反正就是撒谎

标签: php date


【解决方案1】:

Php 有checkdate 函数来检查日期是否有效。为了确保年龄,您可以使用date_add() 函数创建生日日期时间对象+您的范围。然后你比较这个对象是否小于当前时间。

【讨论】:

  • checkdate 已经是一个函数了,真是太酷了。好吧,所以在接近年龄限制时,我只会做一个布尔/条件语句,对吧?
【解决方案2】:

您可以使用以下代码来验证日期

ValidationExpression="(((0|1)[1-9]|2[1-9]|3[0-1])/(0[1-9]|1[0-2])/ ((19|20)\d\d))$"

【讨论】:

  • 谢谢,但请您向我解释一下这是如何工作的?我还在学习 php 和 web 编码,所以我对学习其他人的代码非常感兴趣,以提高我的编码直觉。谢谢。
猜你喜欢
  • 2020-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2019-03-09
  • 2016-06-27
相关资源
最近更新 更多