我有一个基于请求的网站,用户可以请求项目,我想在一天中的某些时间限制一些请求。
例如,用户item5
只能在下午 5 点到 8 点之间请求。其余时间不可用。
我的网站是 PHP 和 MySQL 后端。
理想情况下,我会喜欢一个可以使用项目 ID 调用的函数,该函数会检查数据库中的时间值并返回真值或假值。
如果有人有一些示例代码,我将不胜感激,我已经尝试在 PHP 中按时阅读,但它让我头疼。
我有一个基于请求的网站,用户可以请求项目,我想在一天中的某些时间限制一些请求。
例如,用户item5
只能在下午 5 点到 8 点之间请求。其余时间不可用。
我的网站是 PHP 和 MySQL 后端。
理想情况下,我会喜欢一个可以使用项目 ID 调用的函数,该函数会检查数据库中的时间值并返回真值或假值。
如果有人有一些示例代码,我将不胜感激,我已经尝试在 PHP 中按时阅读,但它让我头疼。
available_start
这假设数据库在名为和的项目表中有两列available_end
。这两个都假定为 DATETIME。
function isItemAvailableNow(item_id){
# Globals are bad but this gets the point across
global $db;
# Get the item from the database
$result = mysql_query("SELECT * FROM items WHERE id = " . mysql_real_escape_string(item_id, $db) . ";");
$row = mysql_fetch_assoc($result);
# Pull the beginning and ending availablity time out of the database result
$available_start = $row['available_start']
$available_end = $row['available_end']
# Get the current time in the same format as the MySQL DATETIME type
$now = date('%Y-%m-%d %H:%i:%s');
return ($now >= $available_start) && ($now <= $available_end);
}
此代码尚未经过测试,我做了一些假设(例如您使用的是 MySQL),但这应该可以帮助您入门。
您还需要考虑时区,但这是另一个讨论。
time()
, date()
, 也许mktime()
是你需要的。只需将当前时间与您允许/禁止查看内容的时间范围进行比较
PHP date() 手册- 这真是一个强大的功能
还有一个时区问题,您可能会考虑
您可以使用 time() 数据类型将 startTime 和 endTime 字段弹出到数据库中。在这些字段中,输入它们的可用时间以及它们必须返回的时间。
然后,查询返回可用项目是一件简单的事情。
tableAvailability
|--------------------------------|
| id | availStart | availEnd |
|--------------------------------|
| 1 | 15:00:00 | 18:00:00 |
| 2 | 12:00:00 | 12:30:00 |
|--------------------------------|
$startTime='15:30:00';
$requiredTime=2; // Showing Hours for example
$sql="
select
id
from
tableAvailability
where
".$startTime." >= availStart
and addTime('".$startTime."', '".$requiredTime.":00:00')<availEnd";