RM pisze:
> Mam prawdopodobnie problem z plikiem .htpass utworzonym przez program
> htpasswd.
>
> Użytkownik Robert może się zalogować z hasłem hasło_Roberta, a
> użytkownik Adam z hasłem hasło_Adama nie.
>
> Tzn. mam:
>
> $ head ~robert/public_html/.htaccess
> #v+
> AuthUserFile "/home/robert/resources/.htpass"
> AuthName "Strony zabezpieczone"
> AuthType Basic
> require valid-user
>
> $ cat ~robert/resources/.htpass
> Adam:$apr1$SBuOrH52$npHXYtgKVDJMaq6vR3PKT1
> Robert:$apr1$bBUEgXpC$oqJ05771CIL3VXhPDz8nK.
>
> $ htpasswd -v ~robert/resources/.htpass Robert
> Enter password:hasło_Robeta
> Password for user Robert correct.
>
> $ htpasswd -v ~robert/resources/.htpass Adam
> Enter password: hasło_Adama
> Password for user Adam correct.
Ta opcja "-v" ma zweryfikować hasło ?
> $ ls -la ~robert/resources/.htpass
> -rw-rw-r-- 1 robert www-data 176 kwi 29 22:25 .htpass
>
> $ cat ~robert/public_html/strona.php
>
> ...
>
> function authenticate() {
> if (!isset($_SERVER['PHP_AUTH_PW'])) {
> // wyświetl okienko:
> header('HTTP/1.0 401 Authorization Required');
> header("WWW-Authenticate: Basic realm=Logowanie do systemu");
> exit;
> }
> $currentAdmin = ... // wpisany login, 'Adam' albo 'Robert'
> $users =array('Adam', 'Robert');
> $passwords = array('hasło_Adama', 'hasło_Roberta');
> if (!isset($_SERVER['PHP_AUTH_PW']) ||
> $passwords[array_search($currentAdmin, $users)] !=
> $_SERVER['PHP_AUTH_PW'] ||
> !in_array($currentAdmin, $users)) { // złe hasło
> header("WWW-Authenticate: Basic realm=Logowanie do systemu");
> header("HTTP/1.0 401 Unauthorized");
> echo '*** Niepowodzenie logowania ***';
> return FALSE;
> } else { // dobre hasło
>
> ...
>
> }
> return TRUE; // zalogowany
> }
Jeśli dobrze rozumiem powyższy kod, to sam sprawdzasz poprawność hasła ?
To może problemem jest ta linia:
> $currentAdmin = ... // wpisany login, 'Adam' albo 'Robert'
Tu powyżej masz wpisany tylko jeden login,
a próbujesz zalogować się dwa razy,
używając jednego a potem drugiego loginu.
Tutaj poniżej też widzę nie poprawną konstrukcję
> $users =array('Adam', 'Robert');
> $passwords = array('hasło_Adama', 'hasło_Roberta');
To bardzo niebezpieczny zapis, kiedy indeksy przestaną być zbieżne,
hasła będą przypisane do innych loginów.
Nie lepiej zapisać to tak: ?
$USERPASS =array('Adam'=>'hasło_Adama', 'Robert'=>'hasło_Roberta');
Poza tym naprawdę używasz polskich liter w haśle ?
może gdybyś zamiast 'hasło_Adama' zastosował:
'hasło_Huberta'
'hasło_Roberta'
może problem jest z polskimi literami i kodowanie (tak tylko wymyślam) ?
Przede wszystkim najpierw wyłączył bym własne sprawdzanie hasła.
W pierwszej kolejności sprawdziłbym czy w apache wywołanie
pliku / strony np: index.html działa.
W drugiej kolejności próbowałbym ze skryptem.