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">
&lt;?php
  if(!isset($PHP_AUTH_USER)) {
    header(&quot;WWW-Authenticate: Basic realm=\&quot;My Realm\&quot;&quot;);
    header(&quot;HTTP/1.0 401 Unauthorized&quot;);
    echo &quot;Tekst do wysłania, jeśli użytkownik wciśnie przycisk Anuluj\n&quot;;
    exit;
  } else {
    echo &quot;&lt;p&gt;Hej $PHP_AUTH_USER.&lt;/p&gt;&quot;;
    echo &quot;&lt;p&gt;Twoje hasło to $PHP_AUTH_PW.&lt;/p&gt;&quot;;
  }
?>
    </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">
&lt;?php
  function authenticate() {
    header( &quot;WWW-Authenticate: Basic realm=\&quot;Testowy system 
autoryzacji\&quot;&quot;);
    header( &quot;HTTP/1.0 401 Unauthorized&quot;);
    echo &quot;Musisz podać poprawny login i hasło by wejść na tę stronę\n&quot;;
    exit;
  }
 
  if(!isset($PHP_AUTH_USER) || ($SeenBefore == 1 &amp;&amp; !strcmp($OldAuth, 
$PHP_AUTH_USER)) ) {
   authenticate();
  } 
  else {
   echo &quot;&lt;/p&gt;Witaj: $PHP_AUTH_USER&lt;br&gt;&quot;;
   echo &quot;Poprzenio: $OldAuth&quot;;
   echo &quot;&lt;form action=\&quot;$PHP_SELF\&quot; METHOD=POST&gt;\n&quot;;
   echo &quot;&lt;input type=\&quot;hidden\&quot; name=\&quot;SeenBefore\&quot; 
value=\&quot;1\&quot;&gt;\n&quot;;
   echo &quot;&lt;input type=\&quot;hidden\&quot; name=\&quot;OldAuth\&quot; 
value=\&quot;$PHP_AUTH_USER\&quot;&gt;\n&quot;;
   echo &quot;&lt;input type=\&quot;submit\&quot; value=\&quot;Re 
Authenticate\&quot;&gt;\n&quot;;
   echo &quot;&lt;/form&gt;&lt;/p&gt;\n&quot;;
  }
?>
   </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
-->


Reply via email to