Apache na Win95 a Http autentifikace
Vladimír Beneš
Vladimir.Benes na pvt.cz
Pondělí Září 25 09:38:35 CEST 2000
Dobrý den,
-----Původní zpráva-----
Od: charlie76 <charlie76 na atlas.cz>
Komu: Vladimír Beneą <linux na linux.cz>
Datum: 22. září 2000 16:16
Předmět: Re[2]: Apache na Win95 a Http autentifikace
>>>
>>>na win95 mam nainstalovane
>>> apache_1_3_12_win32.exe
>>> php-3.0.16-win32.zip
>>> a
>>> mysql-3.23.24-beta-win.zip
>>>
>>>Pokud v php3 scriptu poslu tuto hlavicku:
>>>
>>>************************************************************
>>> Header("HTTP/1.0 401 Unauthorized");
>>> Header("WWW-Authenticate: Basic realm=\"Jmeno\"");
>>>************************************************************
>
>
>VB> místo instrukce
>
>VB> Header("HTTP/1.0 401 Unauthorized");
>
>VB> zkuste toto:
>
>VB> if (Ereg("Microsoft", $SERVER_SOFTWARE)):
>VB> Header("Status: 401 Unauthorized");
>VB> else:
>VB> Header("HTTP/1.0 401 Unauthorized");
>VB> endif;
>
>VB> ...a mělo by to chodit jak v M$ tak i na normálních OS.
>
>Pokud to nahradim timto nezmeni se bohuzel vubec nic.
>
>Pokud mu dam jenom toto: Header("Status: 401 Unauthorized");
>
>Sice uz nehlasi chybu a dokonce se objevi okno, ktere chce prihlaseni,
>ale bohuzel se nejde prihlasit.
Správně - tak se to má chovat. Zřejmě ale nemáte ošetřené vlastní
přihlášení.
>
>Script bezi po win95, pokud jsou scripty ulozeny na linuxu a nebo
>nekde na fyzickym serveru, ale ne kdyz mam instalovan server na
>lokalnim pocitaci:(
>
>Nezkusil by jeste nekdo neco?
>
>Bezradny Mira
Bez problémů používáme zhruba tento kód:
<code>
if ($PHP_AUTH_USER == "" && $PHP_AUTH_PW == "" && Ereg("^Basic
",$HTTP_AUTHORIZATION)) {
List($PHP_AUTH_USER, $PHP_AUTH_PW) =
Explode(":",Base64_Decode(Substr($HTTP_AUTHORIZATION, 6)));
}
$Authenticated = false;
if ($PHP_AUTH_USER != "" || $PHP_AUTH_PW != "") {
// zde si umistete vlastni autorizaci.
// pokud je kombinace $PHP_AUTH_USER a $PHP_AUTH_PW spravna,
// nastavte $Authenticated na true;
}
if(!$Authenticated) {
Header("WWW-Authenticate: Basic realm=\"xxxxxxxxx\"");
if (Ereg("Microsoft", $SERVER_SOFTWARE)):
Header("Status: 401 Unauthorized");
else:
Header("HTTP/1.0 401 Unauthorized");
endif;
// tady muzete mit html kod o chybne kombinaci jmeno / heslo
exit();
}
</code>
Místo komentářů uprostřed můžete vyzkoušet naprosto triviální
autorizaci:
if ($PHP_AUTH_USER='pokus' && $PHP_AUTH_PW = 'heslo') $Authenticated = true;
...a až to rozchodíte, můžete autorizaci převést na čtení dat ze souboru, z
databáze, heslo tam můžete mít cryptované atd.
S pozdravem V. Beneš
P.S.: nepatří tento dotaz spíše třeba do konference php_prog na pandora.cz ?
Další informace o konferenci Linux