编辑:戈登发布的查询似乎有问题。如果我有一个10-12的预订,它似乎认为下午12点以后的所有预订都无效,但上午10点之前的所有预订都是有效的。
一些快速而简单的想法最终使我创建了以下查询:
SELECT serverip
FROM server
WHERE serverip NOT IN (SELECT serverip
FROM booking
WHERE startat >= datehere
AND expiresat <= datehere)
LIMIT 1;
假设booking表存储以下内容:
+-----------+-----------+----------+----------+-----------+
| bookingid | serverip | username | startat | expiresat |
+-----------+-----------+----------+----------+-----------+
| 1 | 127.0.0.1 | testuser | 10:00 | 12:00 |
+-----------+-----------+----------+----------+-----------+
如果用户要输入以下数据进行预订:
startat = 9:59
expiresat = 12:01
他们可以很容易地绕过我的检查,看看预订时间是否基于之前存储的预订而可用。
对于如何更好地解决这个问题,有什么建议吗?
我更喜欢而不是来限制用户输入,并希望避免硬编码特定的时间段,如果这不是问题,但我会坚持我已经得到的。
耽误您时间,实在对不起。
https://stackoverflow.com/questions/14586739
复制相似问题