【发布时间】:2020-06-13 14:59:44
【问题描述】:
我正在制作一个注册表单,我想获取每个注册用户的出生日期。
<input class="field" type="date" name="birthday" max="9999-12-31" />
不过,当我制作这个时,我意识到每个人都可以打开“检查元素”选项并设置他们喜欢的任何值。这将进入数据库并破坏体验。我不想让这种情况发生,所以我现在正在寻找一种方法来执行以下操作:
- 找到一种方法来检查日期是否有效(无论格式是什么,mm/dd/yyyy 和 dd/mm/yyyy 都将被数据库接受,但它们将被转换为 yyyy-mm-dd在去那里之前)
- 确保地区无关紧要(就像我说的,每种格式都会被接受,但我有点担心某些国家/地区显示输入字段的方式不同(例如,我偶然发现了 дд/мм /гггг г. 格式,基本上表示 dd/mm/yyyy y。最后的“y.”会影响 PHP 中作为变量存储的内容吗?它就在那里,它是一个缩写,不能更改由用户)
- 不允许此人输入比当前日期更高的日期。我正在考虑添加一个简单的 13 岁年龄限制。怎么做?
在提出这个问题之前,我一直在寻找解决所有这些问题的方法。我发现了 checkdate() 函数,但据我所知,它只接受 mm/dd/yyyy 格式,这不是我想要的。它的工作方式也略有不同。我需要为日、月和年输入三个单独的值。所以,我去寻找替代解决方案。我偶然发现了这个话题:Correctly determine if date string is a valid date in that format。解决方案似乎是我正在寻找的。唯一的问题是它只接受“yyyy/mm/dd”格式。所以,从逻辑上讲,我只需要找到一种方法来检测格式是什么(我唯一关心的是:如果用户打开 Inspect Element 并更改输入类型怎么办......也许解决这个问题的方法是简单检查 $ _POST['birthday'] 首先是 type="data" 元素吗?我仍然担心出现在某些地区的“г./y.”)。检测后,将迭代检查日期是否有效的正确函数。在所有这些之后,日期将简单地转换为 yyyy/mm/dd,并且网站将进行最后一次检查,以查看用户是否至少 13 岁并允许注册。我不经常使用 PHP,因此非常感谢任何形式的帮助!
【问题讨论】:
-
没错,@Loko!这是我最关心的问题之一!我想解决方案是通过不查看输入而是查看用户的区域/操作系统语言来检查输入字段的格式。不确定PHP是否可以做到这一点。