htaccess авторизация

Кинотавр

Новичок
htaccess авторизация

Есть проект с несколькими тысячами зарегистрированных юзеров. Авторизация - через htaccess. Использовать единый файл htpasswd, в котором хранились бы все пароли - вариант фиговый.
Хочется сделать так. В папках "users/lyosha/", "users/katrin/", "users/micha/" (и так несколько тысяч штук) лежат файлы htaccess каждый со своим паролем. Эти каталоги нужны по любому, так как там должны лежать фотки юзеров и инклуд-файлы с инфой о юзерах. А использовать базу данных в проекте надо по минимуму, поэтому о ней не упоминать вообще.
Вопрос следующий. Есть ли способ реализовать авторизацию так, чтобы htaccess вытягивал из разных директориев пароли. При этом, естественно, все несколько тысяч путей к htpasswd перечисляться в htaccess не должны. То есть, примерно так, чтобы после ввода логина и пароля прога как-то подставляла логин в htaccess, и на основе результата вытягивала бы пароль из нужного директория.
Спасибо.
 

ForJest

- свежая кровь
Тебе осталось сделать самую малость. Чтобы юзер попал в нужный каталог перед авторизацией.
 

Кинотавр

Новичок
Нет, дело в том, что из этих каталогов надо брать только инфу, а весь основной процесс происходит в другом месте. В них должна храниться инфа о юзере, его фотки и пароль.
 

clevel

Новичок
пусть логин совпадаем с именем директории юзера, тогда не нужно искать директорию - по логину читаешь htpasswd директории юзера и сравниваешь на равенство md5(паролей).
 

Кинотавр

Новичок
Автор оригинала: clevel
пусть логин совпадаем с именем директории юзера, тогда не нужно искать директорию - по логину читаешь htpasswd директории юзера и сравниваешь на равенство md5(паролей).
Вот это и вызывает у меня затруднения. Как сделать так, чтобы в htaccess подставлялся введенный логин?
Чтобы было типа:
AuthUserFile /users/$login/.htpasswd
Как это можно сделать?
htaccess ведь не принимает переменные.
 

ForJest

- свежая кровь
Да никак это сделать нельзя. Забудь про .htaccess и сделай авторизацию средствами PHP.
 

Кинотавр

Новичок
Эх вы, хреновые из вас советчики :) (шутка)
А динозавры почему-то мой вопрос проигнорировали.
А общем, если кому интересно, то я решил остановиться на таком варианте авторизации.

PHP:
<?
if (!isset($PHP_AUTH_USER))
{
  Header ("WWW-authenticate: Basic realm=\"Secret page\"");
  Header ("HTTP/1.0 401 Unauthorized");
  echo ("Вы ввели неправильный пароль");
  exit;
}
else
{
  $fp = @fopen("../users/$PHP_AUTH_USER/htpasswd","r");	
  if ($fp)
  {
    $password = trim(fread($fp,filesize("../users/$PHP_AUTH_USER/htpasswd")));
    fclose($fp);
  }

  if (MD5($PHP_AUTH_PW)!=$password)
  {
    Header ("WWW-authenticate: Basic realm=\"Secret page\"");
    Header ("HTTP/1.0 401 Unauthorized");
    echo ("Вы ввели неправильный пароль");
    exit;
  }
}

echo ("<p>Привет, $PHP_AUTH_USER<br>Вы ввели пароль $PHP_AUTH_PW</p>");
?>
 

Кинотавр

Новичок
Нет, зачем, сам придумывать не буду. Будут генериться как обычно, при регистрации. А что, какие-то проблемы заметил?

Если ничего не было введено, то, естественно, будет обрабатываться. Это же только макет, демонстрирующий механизм работы, а не рабочий фрагмент кода.
 
Сверху