Запретить регистрацию между определенными часами

Я пытаюсь изобразить небольшую рутину для моего программного обеспечения на форуме (vBulletin 3.x, который поддерживает PHP-подпрограммы через систему хуков). У меня есть этот код из некоторых исследований, которые я проводил ранее, но условие не работает так, как я планировал - оно будет "истинным", только если время запуска установлено равным 0000 или позже.

$regtime = gmdate('Hi');
$pnr_b1 = "2300";
$pnr_b2 = "0600";

if ($regtime > $pnr_b1 && $regtime < $pnr_b2) {
 // prevent registration code
}

Кто-нибудь может помочь? Для справки я использую PHP версии 5.3.29 на случай, если это повлияет на ваши предложения.

2 ответа

Решение

Вместо сравнения строк, вы также можете использовать 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';
}

Это работает:

<?php
$regtime = gmdate('Gi');
$pnr_b1 = 2300;
$pnr_b2 = 600;
if ($regtime > $pnr_b1 or $regtime < $pnr_b2) {
    echo "fail";
} 
Другие вопросы по тегам