PHP按日期时间限制考勤提交时日期判断失效问题求助
问题原因
- 逻辑运算优先级错误:PHP中
&&优先级高于||,原代码的运算顺序和预期完全不符,导致条件判断逻辑混乱 - 日期判断逻辑本身存在致命错误:
date('N') !=3 || date('N') !=5这个条件永远为真,任意一天都会满足“不等于3 或者 不等于5”的要求,相当于日期判断完全失效 - 周几的取值对应错误:
date('N')返回值中2对应周二、4对应周四,原代码写的3、5对应周三、周五,和你的需求不匹配 - 时间范围判断不全:原代码仅限制了小时范围,没覆盖12:00-12:15的有效时段
修正后代码
// 提前获取时间参数,避免多次调用date出现时间不一致问题 $hour = (int)date('G'); $minute = (int)date('i'); $weekDay = (int)date('N'); // 判定是否属于允许提交的时段:周二/周四 11:00~12:15 $allowSubmit = ( ($weekDay === 2 || $weekDay === 4) && ( $hour === 11 || ($hour === 12 && $minute <= 15) ) ); // 不在允许时段直接跳转 if (!$allowSubmit) { header ('Location: /noattend.php'); exit(); }
内容的提问来源于stack exchange,提问作者Kubes
相关产品推荐
相关产品推荐

