slawek Fri Nov 2 18:29:50 2001 EDT
Added files:
/phpdoc/pl/features http-auth.xml
Log:
Finished translation
Index: phpdoc/pl/features/http-auth.xml
+++ phpdoc/pl/features/http-auth.xml
<?xml encoding="iso-8859-1"?>
<!-- $Revision: 1.1 $ -->
<chapter id="features.http-auth">
<title>Autoryzacja HTTP w PHP</title>
<simpara>
Autoryzacja HTTP jest obs�ugiwana przez PHP tylko wtedy, gdy PHP pracuje
jako modu� Apache'a, nie jest dost�pna w trybie CGI. W skrypcie mo�na u�y�
funkcji <function>header</function> by wys�a� do przegl�darki komunikat
"Wymagana autoryzacja", co spowoduje wy�wietlenie okienka z polami
U�ytkownik i Has�o. Po wype�nieniu przez u�ytkownika tych p�l, URL
zawieraj�cy skrypt PHP zostanie ponownie wywo�any ze zmiennymi
$PHP_AUTH_USER, $PHP_AUTH_PW i $PHP_AUTH_TYPE zawieraj�cymi odpowiednio
nazw� u�ytkownika, has�o i typ autoryzacji. Obecnie obs�ugiwany jest
jedynie typ "Basic". Wi�cej informacji znajdziesz w opisie funkcji
<function>header</function>.
<para>
Przyk�adowy skrypt wymuszaj�cy autoryzacj� klienta:
<example>
<title>Autoryzacja HTTP</title>
<programlisting role="php">
<?php
if(!isset($PHP_AUTH_USER)) {
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header("HTTP/1.0 401 Unauthorized");
echo "Tekst do wys�ania, je�li u�ytkownik wci�nie przycisk Anuluj\n";
exit;
} else {
echo "<p>Hej $PHP_AUTH_USER.</p>";
echo "<p>Twoje has�o to $PHP_AUTH_PW.</p>";
}
?>
</programlisting>
</example></para>
<note>
<para>
Nale�y uwa�a� z linijkami dodawanymi do nag��wka HTTP. W celu zachowania
maksymalnej zgodno�ci ze wszystkimi klientami, s�owo Basic powinno
zaczyna� si� du�� liter� "B", warto�� realm powinna by� otoczona
cudzys�owami (nie apostrofami), i dok�adnie jeden znak odst�pu powinien
poprzedza� kod 401 w linii "HTTP/1.0 401".
</para>
</note>
<para>
Zamiast wy�wietla� warto�ci $PHP_AUTH_USER i $PHP_AUTH_PW, zapewne
zechcesz sprawdzi� poprawno�� nazwy u�ytkownika i has�a. Na przyk�ad
poprzez zapytanie do bazy danych lub odnalezienie u�ytkownika w pliku dbm.
</para>
<para>
Nale�y uwa�a� na kapry�ne przegl�darki Internet Explorer. S� wra�liwe na
kolejno�� wysy�anych nag��wk�w HTTP. Wys�anie nag�owka
<emphasis>WWW-Authenticate</emphasis> przed
<errorcode>HTTP/1.0 401</errorcode> powinno rozwi�za� problem.
</para>
<simpara>
Aby zapobiec sytuacji w kt�rej kto� napisze skrypt wykradaj�cy has�o
wys�ane tradycyjnym zewn�trznym mechanizmem, zmienne PHP_AUTH nie b�d�
ustawiane, je�li dla danej strony aktywna jest autoryzacja zewn�trzna.
W tym wypadku, aby uzyska� nazw� u�ytkownika zautoryzowanego zewn�trznie,
nale�y skorzysta� ze zmiennej $REMOTE_USER.
</simpara>
<note>
<para>
Aby wykry� czy mia�a miejsce zewn�trzna autoryzacja, PHP sprwadza
obecno�� dyrektywy <literal>AuthType</literal>. Pami�taj zatem, by
nie stosowa� tej dyrektywy w miejscach, gdzie b�dzie u�ywana autoryzacja
PHP. Inaczej ka�da pr�ba autoryzacji zako�czy si� niepowodzeniem.
</para>
</note>
<simpara>
Powy�sza metoda nie zapobiega jednak wykradaniu hase� do stron wymagaj�cych
autoryzacji przez kogo�, kto na tym samym serwerze kontroluje strony nie
wymagaj�ce autoryzacji.
</simpara>
<simpara>
Zar�wno Netscape Navigator jak i Internet Explorer opr�ni� bufor
autoryzacji po otrzymaniu od serwera kodu 401. Mo�na w ten spos�b
wylogowani� u�ytkownika i zmusi� go do ponownego wys�ania nazwy u�ytkownika
i has�a. Tej metody mo�na u�y� do wylogowania u�ytkownika po okre�lonym
czasie lub stworzenia przycisku "Wyloguj".
</simpara>
<simpara></simpara>
<example>
<title>Autoryzacja HTTP z wymuszeniem przelogowania</title>
<programlisting role="php">
<?php
function authenticate() {
header( "WWW-Authenticate: Basic realm=\"Testowy system
autoryzacji\"");
header( "HTTP/1.0 401 Unauthorized");
echo "Musisz poda� poprawny login i has�o by wej�� na t� stron�\n";
exit;
}
if(!isset($PHP_AUTH_USER) || ($SeenBefore == 1 && !strcmp($OldAuth,
$PHP_AUTH_USER)) ) {
authenticate();
}
else {
echo "</p>Witaj: $PHP_AUTH_USER<br>";
echo "Poprzenio: $OldAuth";
echo "<form action=\"$PHP_SELF\" METHOD=POST>\n";
echo "<input type=\"hidden\" name=\"SeenBefore\"
value=\"1\">\n";
echo "<input type=\"hidden\" name=\"OldAuth\"
value=\"$PHP_AUTH_USER\">\n";
echo "<input type=\"submit\" value=\"Re
Authenticate\">\n";
echo "</form></p>\n";
}
?>
</programlisting>
</example>
<simpara>
Powy�sza metoda nie jest wymagana przez autoryzacj� HTTP typu "Basic",
wi�c nie mo�na na niej polega�. Testy z przegl�dark� Lynx pokaza�y, �e
Lynx nie usuwa danych o autoryzacji po odebraniu od serwera kodu 401,
zatem przej�cie wstecz a nast�pnie do przodu otworzy stron�, chyba, �e
wymagania co do danych autoryzacji zmieni�y si�. U�ytkownik mo�e jednak
u�y� klawisza '_' by usun�c dane o autoryzacji.
</simpara>
<simpara>
Autoryzacja HTTP nie dzia�a je�li u�ywasz serwera Microsoft IIS i
PHP w wersji CGI. Powodem s� pewne ograniczenia IIS.
</simpara>
</chapter>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->