Предоставление доступа к странице ограниченный период времени на php

Last update: 22 Квітня, 2023

Category: PHP code examples

Доступ дается на 1 час по ip-адресу пользователя. В момент предоставления доступа в папке создается файл с ip-адресом в качестве имени, внутри файла – дата создания +1 час. При обращении к странице проверяется, наступило это время или еще нет. Если еще нет – доступ предоставляется, если уже наступило – переадресация на страницу ввода логина/пароля.

Код создающий файл с данными о том когда закончится доступ:

<?php
$ip_filename = $_SERVER['REMOTE_ADDR'];
$handle = fopen($ip_filename, 'w') or die('Cannot open file:  '.$ip_filename); //implicitly creates file

$fp = fopen($ip_filename, "w+");
ftruncate($fp, 0);
$text_to_file = date('Y-m-d H:i:s', strtotime("+1 hours"));
fwrite($fp, $text_to_file);
fclose($fp);
unset($fp);

Код, выполняющий поиск файла при попытке запроса страницы, и проверяющий давать доступ или нет:

<?php
// echo $_SERVER['DOCUMENT_ROOT'];

$my_file = '../dir/'.$_SERVER['REMOTE_ADDR'];
$handle = fopen($my_file, 'r');
$data = '';
$data = fread($handle,filesize($my_file));
if ( (strtotime($data) < time()) or ( $data == '' ))
    {
        echo 'acces denied';
        header('Location: http://site.com/login/', true, 302);
        die;
    }