Защитить папку/файл паролем .htaccess
Когда надо закрыть папку паролем или запаролить целый сайт. В нужной папке или в корне сайта создаём файл .htaccess, внутри пишем следующий код:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /var/www/my_site/public_html/site.ru/.htpasswd
Require valid-user
5555
<Files .htpasswd>
deny from all # запретим доступ из браузера к .htpasswd
</Files>
Если нужно сделать доступ по паролю только к конкретному файлу:
<Files private_file.zip>
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /var/www/my_site/public_html/site.ru/.htpasswd
Require valid-user
5555
<Files .htpasswd>
deny from all # запретим доступ из браузера к .htpasswd
</Files>
Узнать полный путь к директории для .htpasswd можно с помощью простого PHP-скрипта:
<?php echo dirname(__FILE__); ?>
Создаём ещё один файл с расширением .htpasswd по указанному в .htaccess пути, естественно путь у вас будет свой. Внутри этого файла нужно поместить имя и зашифрованный пароль. Для этого можно воспользоваться сервисом создания хеша пароля. Содержимое файла получится примерно таким:
user_name:$2a$12$dxvjM17DYAZh4I6pZ4I.tOIAN7qsCn0xUiHpAHtkykcsFINKrIIr6
Теперь можно проверить в баузере доступ к папке, должна открыться форма для ввода логина и пароля. Также проверьте что файл .htpasswd недоступен из браузера.
Из PHP-скрипта можно отследить авторизированного пользователя с помощью переменных массива $_SERVER:
echo $_SERVER['PHP_AUTH_USER'];
echo $_SERVER['PHP_AUTH_PW'];
Если переменные пустые, то можно вывести форму входа::
header('WWW-Authenticate: Basic realm="Authorization"');
header('HTTP/1.0 401 Unauthorized');