grinko03
@grinko03
Backend - developer ::> PHP

Как ограничить доступ к скрипту (Боту) в определенное время?

Всем привет !

Хочу сделать функцию, чтобы я мог устанавливать время работы Бота. Но время работы будет хранится в базе данных, поэтому просто указать их в условии не получиться. Подскажите пожалуйста кто-нибудь, у меня уже варианты закончились как сделать условие (

if ((date ('H:i') >= $start) && (date ('H:i') <= $stop)) {
       exit ("start - stop");
 }


В этом коде $start - Время начало работы Бота, а $stop - Время окончания работы Бота. Этот вариант рабочий, но если поставить время работы с 10:00 до 02:00 , то этот не хочет работать (
  • Вопрос задан
  • 124 просмотра
Решения вопроса 1
@dagababaev
Можно решить добавлением пары проверок:

$start = "10:00";
$stop = "02:00";
$current_time = "01:01"; // $current_time = date('H:i');

$result = false;

if ($start >= $stop) {
    if ($current_time >= "00:00" && $current_time <= $stop) $result = true;
    if ($current_time >= $start && $current_time <= "23:59") $result = true;
} elseif ($current_time >= $start && $current_time <= $stop) {
   $result = true;
}

if ($result == true) exit ("start - stop");


Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@lolzqq
HTML,CSS,JS,PHP
Сделайте промежутки с 10:00 до 23:59 и с 00:00 до 02:00 ночи.
Условно вам надо где цифры - добавить ещё пару переменных
if ((date ('H:i') >= 10:00) && (date ('H:i') <= 23:59) || (date ('H:i') >= 00:00) && (date ('H:i') <= 02:00)) {
exit ("start - stop");
}
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега PHP
Fullstack programmer, DBA, медленно, дорого
Еще один способ:
<?php
$start = "10:00";
$stop = "02:00";

$current_time = time();

$start_time	= strtotime($start);
$stop_time  = strtotime($stop);

// if end time less then start add one day
if ($stop_time < $start_time) $stop_time += 60 * 60 * 24;

echo "$start_time < $current_time < $stop_time" . PHP_EOL;

if ($current_time < $start_time || $current_time > $stop_time) {
	die('Closed');
}

echo 'Open';


share PHP code
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы