вопрос
Хочу поставить на админку второй пароль при входе. Добавил скрипт в начало админ.php, подобрал уже не помню где...
Работает сносно, но хочется убрать дубли ip в записи ip.txt скажем за 30 минут сессии, а то получается, что при бруте админки лог файл разбухает одним и тем же ip-шником. И хотелось бы добавить в лог ошибочной авторизации дату/время, и автоматически выкидывать в корень сайта после неудачной авторизации. Подскажите плиз, если не сильно затруднит, а то для меня это пока почти темный лес, увы.
$q_ = array( "логин" => "хеш md5" );
if (!isset($_SERVER['PHP_AUTH_USER']) || md5($_SERVER['PHP_AUTH_PW']) !== $q_[ $_SERVER['PHP_AUTH_USER'] ])
{
header('WWW-Authenticate: Basic realm=""');
header('HTTP/1.0 401 Unauthorized');
$ip = getenv ("REMOTE_ADDR");
$log = fopen("ip.txt", "a+");
fwrite($log, "// ".$ip."\n");
fclose($log);
exit("Ошибка авторизации!");
}
Работает сносно, но хочется убрать дубли ip в записи ip.txt скажем за 30 минут сессии, а то получается, что при бруте админки лог файл разбухает одним и тем же ip-шником. И хотелось бы добавить в лог ошибочной авторизации дату/время, и автоматически выкидывать в корень сайта после неудачной авторизации. Подскажите плиз, если не сильно затруднит, а то для меня это пока почти темный лес, увы.
Что подсказать то?
Как записать дату? Очень просто. Для начала нужно структурировать данные записываемые в файл. Например сделать разделители между строками, а так же между элементами записи. И уже записывать айпишник, дату создания записи. И разделить их чем-нибудь вроди |, что никогда не встретится ни в айпишнике ни в дате. И уже записывать это дело в файл
Как убрать дубли? Очень просто. А при обработке, взять содержимое файла как строку, разделить на строки (explode), дальше разделить строку на элементы двумерного массива и уже в ней смотреть. Если в элементах массива уже замечен такой айпишник, то получить его ключ и проверить дату. Если дата отлична от текущей более чем на 30 минут, то запись не делать.
Как сделать перенаправление на главную в случае неудачной попытки? Ещё проще чем работать с файлами. Строка 10 вашего кода с функцией exit должна быть заменена на строку с функцией header(); где параметром к ней послужит тип редиректа и УРЛ вашего сайта.
Если вы всётаки пробовали программировать на php, а то о чём я вам написал не могло, то рекомендую почитать документацию по работе с массивами, функциям: date(), header(). search_array(). Вроди и всё. Успехов
Как записать дату? Очень просто. Для начала нужно структурировать данные записываемые в файл. Например сделать разделители между строками, а так же между элементами записи. И уже записывать айпишник, дату создания записи. И разделить их чем-нибудь вроди |, что никогда не встретится ни в айпишнике ни в дате. И уже записывать это дело в файл
Как убрать дубли? Очень просто. А при обработке, взять содержимое файла как строку, разделить на строки (explode), дальше разделить строку на элементы двумерного массива и уже в ней смотреть. Если в элементах массива уже замечен такой айпишник, то получить его ключ и проверить дату. Если дата отлична от текущей более чем на 30 минут, то запись не делать.
Как сделать перенаправление на главную в случае неудачной попытки? Ещё проще чем работать с файлами. Строка 10 вашего кода с функцией exit должна быть заменена на строку с функцией header(); где параметром к ней послужит тип редиректа и УРЛ вашего сайта.
Если вы всётаки пробовали программировать на php, а то о чём я вам написал не могло, то рекомендую почитать документацию по работе с массивами, функциям: date(), header(). search_array(). Вроди и всё. Успехов