新用户仅限夜晚可以访问,网站仅限晚上访问
以下是个人想法,未充值过的新用户(数据库字段paycount<1)白天无法访问首页加载404页面,仅限晚上可以登录后正常访问首页。设置首页必须登录可见。登录后跳转到会员中心页面,货源中心添加session记录paycount函数。然后在首页index.php加入以下代码。
// 判断访问时间是否在白天范围(假设白天从8点到20点)
function isDaytime() {
$hour = date('G');
return ($hour >= 8 && $hour < 19);
}
// 判断是否是未充值用户
$isNewUser = ($_SESSION["paycount"] < 1);
// 判断是否需要加载 404 页面
$load404 = $isNewUser && isDaytime();
if ($load404) {
// 重定向到 404 页面
include('404.html');
exit(); // 确保代码终止
}
如果要排除周末
// 判断访问时间是否在白天范围(假设白天从8点到20点)
function isDaytime() {
$hour = date('G');
return ($hour >= 8 && $hour < 20); // 注意这里应该是小于20,因为小时数是从0开始的
}
// 判断是否是未充值用户
$isNewUser = ($_SESSION["paycount"] < 1);
// 判断是否需要加载 404 页面
$load404 = $isNewUser && isDaytime();
// 判断是否需要加载 404 页面,排除周末和节假日
$load404 = $isNewUser && isDaytime() && !in_array(date('N'), [6, 7]);
if ($load404) {
// 重定向到 404 页面
include('404.html');
exit(); // 确保代码终止
}
在上面的代码中,我们添加了一行代码来排除周末和节假日。date('N')
函数返回当前日期的星期几(1表示星期一,7表示星期日),因此in_array(date('N'), [6, 7])
用于检查当前日期是否为周末。如果当前日期是周末,!in_array(date('N'), [6, 7])
将返回false
,从而排除了周末
如果还要排除节假日
比如今年清明节是4.1日,中秋是10月1日到7日
// 判断访问时间是否在白天范围(假设白天从8点到20点)
function isDaytime() {
$hour = date('G');
$dayOfWeek = date('N'); // 获取当前日期的星期几,1表示星期一,7表示星期日
$holidays = [
'清明节' => ['2023-04-01'], // 清明节日期范围
'中秋节' => ['2023-10-01', '2023-10-07'] // 中秋节日期范围
]; // 添加您要排除的节假日
// 检查当前日期是否为周末或节假日
$isWeekend = ($dayOfWeek == 6 || $dayOfWeek == 7); // 6表示星期六,7表示星期日
$isHoliday = false;
foreach ($holidays as $holiday => $dates) {
$startDate = new DateTime($dates[0]);
$endDate = new DateTime($dates[1]);
$currentDate = new DateTime();
if ($currentDate >= $startDate && $currentDate <= $endDate) {
$isHoliday = true;
break;
}
}
return ($hour >= 8 && $hour < 20) && !$isWeekend && !$isHoliday;
}
// 判断是否是未充值用户
$isNewUser = ($_SESSION["paycount"] < 1);
// 判断是否需要加载 404 页面
$load404 = $isNewUser && isDaytime();
if ($load404) {
// 重定向到 404 页面
include('404.html');
exit(); // 确保代码终止
}
在上述代码中,我们将节假日的日期范围存储在$holidays
数组中的关联数组中。然后,在isDaytime()
函数中,我们使用循环遍历每个节假日的日期范围,并检查当前日期是否在该范围内。如果是,将$isHoliday
设置为true
,并退出循环。最后,在返回结果之前,我们将$isHoliday
添加到条件中进行检查,以排除节假日。