Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Второй пароль на админку

Второй пароль на админку


     26.03.2012    пароль, админка    Общие вопросы по PHP, Хаки    4361

вопрос
Хочу поставить на админку второй пароль при входе. Добавил скрипт в начало админ.php, подобрал уже не помню где...
$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-шником. И хотелось бы добавить в лог ошибочной авторизации дату/время, и автоматически выкидывать в корень сайта после неудачной авторизации. Подскажите плиз, если не сильно затруднит, а то для меня это пока почти темный лес, увы.

Ответил: rashpil


Что подсказать то?
Как записать дату? Очень просто. Для начала нужно структурировать данные записываемые в файл. Например сделать разделители между строками, а так же между элементами записи. И уже записывать айпишник, дату создания записи. И разделить их чем-нибудь вроди |, что никогда не встретится ни в айпишнике ни в дате. И уже записывать это дело в файл

Как убрать дубли? Очень просто. А при обработке, взять содержимое файла как строку, разделить на строки (explode), дальше разделить строку на элементы двумерного массива и уже в ней смотреть. Если в элементах массива уже замечен такой айпишник, то получить его ключ и проверить дату. Если дата отлична от текущей более чем на 30 минут, то запись не делать.

Как сделать перенаправление на главную в случае неудачной попытки? Ещё проще чем работать с файлами. Строка 10 вашего кода с функцией exit должна быть заменена на строку с функцией header(); где параметром к ней послужит тип редиректа и УРЛ вашего сайта.

Если вы всётаки пробовали программировать на php, а то о чём я вам написал не могло, то рекомендую почитать документацию по работе с массивами, функциям: date(), header(). search_array(). Вроди и всё. Успехов fellow

4 комментария

Vozemz
Юзер

Vozemz - 26 марта 2012 22:40 -

rashpil, большое спасибо за такой доброжелательный ответ. А то некоторые мудаки тыкнули бы пару строчек кода, и разбирайся мол сам, что для чего... А тут видно, действительно человек помочь хочет, столько времени на текст потратил. Еще раз большое спасибо за потраченное время и содержательный ответ, очень мне помог, пошел документацию читать.

Osima
Юзер

Osima - 27 марта 2012 22:48 -

Хочу тоже в админку второй пароль, а то пытается лезть кто попало постоянно. Логин понятно, а что такое хеш md5 и откуда мне его взять? Я попробовал в яндексе поискать: хеш md5, страниц много, но я ничего не понимаю в этих кодах. Только если действительно захотите помочь то не посылайте и меня справочник читать, лучше на пальцах, для меня язык глухонемых как родной belay

Vozemz
Юзер

Vozemz - 28 марта 2012 13:25 -

Возьми нужный пароль и закодируй его на хоть на этом онлайн сервисе _http://www.adamek.biz/md5-generator.php в md5. Кодирует только в одну сторону, т.е раскодировать пароль уже сложно. Полученный результат вставь в скрипт, вместо надписи хеш md5, вместо слова логин - любой логин. Скрипт добавить в admin.php сразу после <?php. Строки 6-9 из скрипта выкинь, они в таком виде никому не нужны, а привести их в нормальный вид мне сложно, даже после очень полезного совета учебник читать... smile

Читаю в свободное время, конечно не вредно и времени мало, но может для тех, кому это просто, пару строчек в код допишут, а то у меня это чтение... лучше один раз увидеть.

G-Force
Юзер

G-Force - 23 ноября 2012 19:40 -

как сделать дату и время чтобы писало ip.txt и блокировало человека ip при 10 ошибок &

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

наверх