Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Директива Require регламентирует, какие пользователи или группы пользователей имеют доступ к данному ресурсу. В приведённом примере я позволил всем пользователям (конечно, только если они пройдут процедуру авторизации) обращаться к файлам и подкаталогам директории, где размещён наш .htaccess.
Техника ограничения доступа описана многократно, и я не хотел бы повторять здесь других авторов. Для нас будет важно то, что когда клиент работает в директории авторизованно, сервер создаёт ещё две дополнительные переменные: REMOTE_USER и AUTH_TYPE. Первая, как вы понимаете, содержит имя пользователя, вторая – тип авторизации (Basic).
Если несколько пользователей имеют доступ к одному ресурсу, то переменную REMOTE_USER удобно использовать в системах хранения персональных настроек или для ведения журналов.
Эти переменные доступны и CGI-сценариям, и SSI-документам. Например, страница enter.shtml:
<html>
<head><title>Enter</title></head>
<body>
<h1>Hi, <!--#echo var="REMOTE_USER" -->!</h1>
<p>(AUTH_TYPE=<!--#echo var="AUTH_TYPE" -->)</p>
</body>
</html>
Будет выглядеть так:
После успешной авторизации переменные REMOTE_USER и AUTH_TYPE передаются и обработчикам ошибок в дополнение ко всем перечисленным выше, содержащим информацию об ошибке. Эта передача происходит даже в том случае, если обработчик находится за пределами засекреченной области (ошибка, конечно, должна произойти в засекреченной области).
При неудачной авторизации возникает ошибка 401, для которой тоже может быть назначен обработчик:
ErrorDocument 401 /error/401.shtml
или
ErrorDocument 401 /cgi-bin/error.cgi
Мне осталось только заметить, что пользователи могут быть объединены в группы. Для этого существует директива AuthGroupFile. Так вот, информация о том, к какой группе принадлежит пользователь, не передаётся сценарию.
Применение PATH_INFO
Сервер Apache (и не только он) предоставляет интересную возможность: если существует сценарий /cgi-bin/script.cgi, то любой адрес вида /cgi-bin/script.cgi/location/doc.ext считается вполне допустимым. При его обработке выполняется сценарий /cgi-bin/script.cgi, а строка /location/doc.ext передаётся ему в переменной PATH_INFO. Кроме неё, создаётся переменная PATH_TRANSLATED, содержащая как бы путь к запрашиваемому файлу относительно корня файловой системы сервера. Если в нашем примере предположить, что документы сервера расположены в директории /www/docs, то PATH_TRANSLATED будет содержать путь /www/docs/location/doc.ext.