Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 禁止在特定时间之间注册_Php_If Statement_Time_Vbulletin - Fatal编程技术网

Php 禁止在特定时间之间注册

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

我正在尝试为我的论坛软件(Vbulletin3.x,它通过一个钩子系统支持PHP例程)设计一个小例程。我从以前做过的一些研究中得到了这段代码,但条件函数并没有像我预期的那样起作用-只有在开始时间设置为0000或更高时,它才会是“真”的

$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是的,逻辑是错误的,它被认为是包含检查,我再次修改了它检查