Php 禁止在特定时间之间注册
我正在尝试为我的论坛软件(Vbulletin3.x,它通过一个钩子系统支持PHP例程)设计一个小例程。我从以前做过的一些研究中得到了这段代码,但条件函数并没有像我预期的那样起作用-只有在开始时间设置为0000或更高时,它才会是“真”的Php 禁止在特定时间之间注册,php,if-statement,time,vbulletin,Php,If Statement,Time,Vbulletin,我正在尝试为我的论坛软件(Vbulletin3.x,它通过一个钩子系统支持PHP例程)设计一个小例程。我从以前做过的一些研究中得到了这段代码,但条件函数并没有像我预期的那样起作用-只有在开始时间设置为0000或更高时,它才会是“真”的 $regtime = gmdate('Hi'); $pnr_b1 = "2300"; $pnr_b2 = "0600"; if ($regtime > $pnr_b1 && $regtime < $pnr_b2) { // prev
$regtime = gmdate('Hi');
$pnr_b1 = "2300";
$pnr_b2 = "0600";
if ($regtime > $pnr_b1 && $regtime < $pnr_b2) {
// prevent registration code
}
$regtime=gmdate('Hi');
$pnr_b1=“2300”;
$pnr_b2=“0600”;
如果($regtime>$pnr_b1&$regtime<$pnr_b2){
//防止注册码
}
有人能帮忙吗?作为参考,我正在运行PHP版本5.3.29,以防影响您的建议。此功能:
<?php
$regtime = gmdate('Gi');
$pnr_b1 = 2300;
$pnr_b2 = 600;
if ($regtime > $pnr_b1 or $regtime < $pnr_b2) {
echo "fail";
}
除了比较字符串,还可以使用DateTime
对象,以便轻松比较时间:
$regtime = new DateTime('23:15');
$from_time = new DateTime('23:00');
$to_time = new DateTime('23:30');
if($regtime >= $from_time && $regtime <= $to_time) {
echo 'okay, process this';
} else {
echo 'not allowed';
}
$regtime=newdatetime('23:15');
$from_time=新日期时间('23:00');
$to_time=新日期时间('23:30');
如果($regtime>=$from_time&&$regtime,请提供更多详细信息,然后“…它不起作用”。你在比较strngs,而不是times,没有大于2300
的字符串也小于0600
@HoboSapiens谢谢,我猜这就是问题所在,但无法找到其他方法。我已经尝试了一段时间,提出了一些建议,但没有任何运气-因此请求帮助:)您应该考虑使用<代码> DATESTIME/<代码>类。您不应该使用<代码> 0600代码>代码,因为这是八进制表示法,它代表了与<代码> 600 < /C>完全不同的值。我不确定这是否真的会导致一个bug,但请不要这样做。所以你建议只使用600?出于兴趣,gmdate在早上6点返回的值是多少?此外,这里的解决方案是否只是用“或”来代替?我不确定这就是全部?是的,600
和Gi
而不是Hi
。我还将“2300”更改为2300(没有引号,这将使其成为字符串),谢谢,但这不起作用。我试过这个测试:$pnr_b1到23:00,pnr_b2到23:15——然后我试着在23:30(这里的当前本地时间)注册,但它仍然阻止了我。知道为什么吗@Ghost@SomeGuy是的,逻辑是错误的,它被认为是包含检查,我再次修改了它检查