Здравствуйте. Скрипт из файла id.txt с первой строчки берёт значение (часы) и сравнивает их с временем (часы) на момент запуска скрипта, если эти данные равны то функция возвращает данные из файла которые находиться на второй строчке файла, если часы не совпадают, то в файл записывается час(когда скрипт был запущен) и генерируется новое число и возвращается новое сгенерированное число и тоже записывается в файл. Смысл в том, что при смене часа функция возвращает новое число, и если скрипт запустить в течение этого часа, то число не измениться, а измениться только тогда когда измениться час. Скрипт почему-то всегда возвращает новое число. PHP: <?php function get_id() { $h = date("H"); $f = file("id.txt"); if($h == $f[0]) { return $f[1]; } else { $f = fopen("id.txt","w+"); $rand = rand(1, 4777); fwrite($f, $h."\n"); fwrite($f, $rand); return $rand; } fclose($f); } echo get_id(); ?>
Думал ещё до твоего поста, если ты насчёт сравнения то я пробывал разные варианты (=, ==, ===) не помогает
1. Это не знак сравнения. Это знак присвоения. При операторе сравнения "===" условие должным образом работать не будет, т.к. число, прочитанное из файла - строка. Странно, обычно при сравнении знаком "==" числа и число-строки, выдается true, но не в этом варианте. Обычно ("1" == 1) - true Поэтому тут нужно приводить типы - а именно: 2. fclose($f); должен находиться в блоке else
Спасибо за подсказку, скрипт заработал. PHP: <?php function get_id() { $h = date("i"); $f = file("id.txt"); $f[0] = str_replace("\n", NULL, $f[0]); if($h == $f[0]) { return $f[1]; } else { $f = fopen("id.txt","w+"); $rand = rand(1, 4777); fwrite($f, $h."\n"); fwrite($f, $rand); fclose($f); return $rand; } } echo get_id(); ?>