Аутентификация в Apache через PHP (вход в систему htaccess осуществляется PHP)Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Аутентификация в Apache через PHP (вход в систему htaccess осуществляется PHP)

Сообщение Anonymous »

Я хочу разрешить индексирование каталога (список каталогов в браузере), но только для пользователей, вошедших в систему через php. Не вошедшие в систему пользователи не должны иметь никакого доступа.
Можно ли войти в Apache (AuthType Basic, AuthName и т. д.) через php или есть другой способ разрешить вошедшим в систему пользователям использовать индекс каталога, но запретить его для других.
например. site.com/dir/subdir покажет список каталогов для вошедших в систему пользователей, но доступ запрещен для всех остальных.
Я выразился НЕдостаточно ясно:
случай:
  • пользователь входит в систему через php.
  • некоторые страницы ссылаются на контент в каталогах
  • эти каталоги должны быть доступны через браузере (например, кнопка «открыть в браузере»).
Так что вопрос не в том, «можно ли это сделать на php или лучше сделать на php». Вопрос в том, может ли php сообщить Apache, что есть вошедший в систему пользователь, который должен получить разрешение на индекс каталога, в то время как все остальные не могут получить индекс каталога.
Лучшее, что придумал ChatGPT, — это файл htaccess, который проверяет, существует ли созданный php «файл пользователя».
htaccess:

Код: Выделить всё

# Allow access only if the .user_logged_in file exists
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/path/to/protected_directory/.user_logged_in -f
RewriteRule ^ - [L]

# Deny access if the flag file does not exist
RewriteRule ^ - [F]
PHP:

Код: Выделить всё

file_put_contents('/path/to/protected_directory/.user_logged_in', '');
Проблема в том, что это не относится к конкретному соединению, как только кто-то входит в каталог, каталог становится видимым для всех.
Идея состоит в том, чтобы создать файл htaccess с аутентификацией и т. д., но php должен каким-то образом выполнять процесс входа, например манипулировать некоторыми файлами или чем-то еще.
Но, AFAIK, это невозможно.
Обходной путь PHP:
php может записывать файлы .htaccess. В приведенном ниже коде сайт php создает файл .htaccess «на лету» с разрешением индексирования. Затем команда exec восстанавливает исходный файл htaccess для удаления разрешения индекса с задержкой в ​​0,5 секунды.
php немедленно перенаправляется в каталог для просмотра списка каталогов.
Это работает для отдельных каталогов (в списке каталогов невозможно открыть подкаталог), и безопасность оказывается под угрозой на полсекунды.

Код: Выделить всё

file_put_contents( 'hip/.htaccess', 'IndexOptions +FancyIndexing');

exec (' ( sleep 0.5; cd hip ; cp htaccess .htaccess ) > /dev/null 2>&1 &')  ;
header('Location: http://note.local/hip ');
(Чтобы улучшить этот подход, htaccess должен перенаправляться на php, чтобы при щелчке по каталогу в списке каталогов отображался каталог, т. е. htaccess направляется на php, php проверяет вход в систему, создает файл temp htaccess и перенаправляет в новый каталог. Файл temp htaccess позволяет индексировать и не перенаправляет на php, поэтому каталог отображается в списке.)

Подробнее здесь: https://stackoverflow.com/questions/798 ... one-by-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»