Skip to content

Commit

Permalink
Sync reference/xml, var, url, tidy, strings, session, uodbc with EN (#5)
Browse files Browse the repository at this point in the history
* Sync reference/xml, var, url, tidy, strings, session, uodbc with EN

* Delete unnecessary char from session-module-name.xml file

* Small change in session, tidy, url, var functions files
  • Loading branch information
grzegorz-bankowski authored May 22, 2024
1 parent 0409835 commit ed360c0
Show file tree
Hide file tree
Showing 21 changed files with 584 additions and 308 deletions.
16 changes: 9 additions & 7 deletions reference/session/configure.xml
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: leszek Status: ready -->
<!-- EN-Revision: a7d56396b4b04d83871e084371cd6c6fecdafaa8 Maintainer: leszek Status: ready -->
<!-- $Revision$ -->
<!-- CREDITS: grzesiek -->
<section xml:id="session.installation" xmlns="http://docbook.org/ns/docbook">
&reftitle.install;
<para>
Obsługa sesji jest domyślnie włączona. Aby zbudować PHP bez obsługi sesji,
należy podać opcję <option role="configure">--disable-session</option> do
wywołania configure. Aby użyć pamięci współdzielonej do przechowywania
sesji, należy podać opcję <option role="configure">--with-mm[=DIR]
</option>.
&installation.enabled.disable;
<option role="configure">--disable-session</option>
</para>
<para>
Aby używać alokacji pamięci współdzielonej (mm) do przechowywania sesji, skonfiguruj PHP
z opcją <option role="configure">--with-mm[=DIR]</option>.
</para>
&windows.builtin;
<note>
Expand All @@ -22,7 +24,7 @@
możliwe jest, że inny system obsługi sesji (na przykład taki, który używa
bazy danych) nie śledzi sesji, które nie zawierają danych.
</para>
</note>
</note>
</section>

<!-- Keep this comment at the end of the file
Expand Down
20 changes: 12 additions & 8 deletions reference/session/functions/session-encode.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 584c3e8805b728ec0cfde0318bb34e00ebc36324 Maintainer: leszek Status: ready -->
<!-- EN-Revision: 35b95a56ccc03b66af7117fc815ac7881e2e0ad3 Maintainer: leszek Status: ready -->
<!-- $Revision$ -->
<!-- CREDITS: sobak -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-encode">
<!-- CREDITS: sobak, grzesiek -->
<refentry xml:id="function.session-encode" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_encode</refname>
<refpurpose>Koduje dane bieżącej sesji do postaci ciągu tekstowego</refpurpose>
Expand All @@ -11,7 +11,7 @@
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>session_encode</methodname>
<type class="union"><type>string</type><type>false</type></type><methodname>session_encode</methodname>
<void/>
</methodsynopsis>
<para>
Expand All @@ -24,10 +24,15 @@
</para>
</refsect1>

<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>

<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Zwraca zakodowaną zawartość aktualnej sesji.
Zwraca zakodowaną zawartość aktualnej sesji, &return.falseforfailure;.
</para>
</refsect1>

Expand All @@ -38,8 +43,8 @@
Należy wywołać <function>session_start</function> przed użyciem <function>session_encode</function>.
</para>
</warning>
</refsect1>
</refsect1>

<refsect1 role="seealso">
&reftitle.seealso;
<para>
Expand All @@ -51,7 +56,6 @@
</refsect1>

</refentry>

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Expand Down
55 changes: 45 additions & 10 deletions reference/session/functions/session-module-name.xml
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: leszek Status: ready -->
<!-- EN-Revision: 151e61773c016edcae8fd4989ad9a86ffd03c283 Maintainer: leszek Status: ready -->
<!-- $Revision$ -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-module-name">
<!-- CREDITS: sobak, grzesiek -->
<refentry xml:id="function.session-module-name" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>session_module_name</refname>
<refpurpose>Pobierz i/lub ustaw moduł bieżącej sesji</refpurpose>
</refnamediv>

<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>session_module_name</methodname>
<methodparam choice="opt"><type>string</type><parameter>moduł</parameter></methodparam>
<type class="union"><type>string</type><type>false</type></type>
<methodname>session_module_name</methodname>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type>
<parameter>module</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_module_name</function> pobiera nazwę obecnego
modułu sesji.
modułu sesji, który jest również znany jako
<link linkend="ini.session.save-handler">session.save_handler</link>.
</para>
</refsect1>

Expand All @@ -24,11 +28,14 @@
<para>
<variablelist>
<varlistentry>
<term><parameter>moduł</parameter></term>
<term><parameter>module</parameter></term>
<listitem>
<para>
Jeżel <parameter>moduł</parameter> jest określony, to zostanie on
Jeżel parametr <parameter>module</parameter> jest określony i nie ma wartości &null;, to zostanie on
użyty w zamian obecnego.
Przekazanie wartości <literal>"user"</literal> do tego paramteru jest zabronione. Zamiast tego
należy wywołać funkcję <function>session_set_save_handler</function> w celu ustawienia obsługi
sesji zdefniowanego przez użytkownika.
</para>
</listitem>
</varlistentry>
Expand All @@ -39,12 +46,40 @@
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Zwraca nazwę obecnego modułu sesji.
Zwraca nazwę obecnego modułu sesji, &return.falseforfailure;.
</para>
</refsect1>

</refentry>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Parametr <parameter>module</parameter> akceptuje teraz wartość null.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Obecnie jest wyraźnie zabronione ustawianie nazwy modułu na
<literal>"user"</literal>. Wcześniej było to po cichu ignorowane.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>

</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
Expand Down
150 changes: 114 additions & 36 deletions reference/session/functions/session-regenerate-id.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 73f204de3d42053aff3c10f5bc291023eb897942 Maintainer: joeaccord Status: ready -->
<!-- EN-Revision: a0ae28d3bc85f927c22649ebd9a590b921534b7d Maintainer: joeaccord Status: ready -->
<!-- $Revision$ -->
<!-- CREDITS: sobak, grzesiek -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.session-regenerate-id">
<refnamediv>
<refname>session_regenerate_id</refname>
Expand All @@ -13,7 +14,7 @@
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_regenerate_id</methodname>
<methodparam choice="opt"><type>bool</type><parameter>usunięcie_starej_sesji</parameter><initializer>false</initializer></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>delete_old_session</parameter><initializer>&false;</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_regenerate_id</function> zastępuje bieżący identyfikator
Expand All @@ -24,17 +25,36 @@
jest włączone, wyjście musi się rozpocząć po wywołaniu <function>session_regenerate_id</function>.
W przeciwnym wypadku zostanie użyte stare ID.
</para>
<warning>
<para>
Obecnie session_regenerate_id nie radzi sobie dobrze z niestabilną siecią,
np. siecią komórkową i WiFi. W związku z tym może dojść do utraty
sesji przez wywołanie session_regenerate_id
</para>
<para>
Nie należy natychmiast niszczyć starych danych sesji, ale należy użyć
niszczącego znacznika czasu i kontrolować dostęp do starego identyfikatora sesji. W przeciwnym razie,
równoczesny dostęp do strony może skutkować niespójnym stanem lub
utratą sesji, lub może spowodować warunek wyścigu po stronie klienta (przeglądarki)
i może niepotrzebnie utworzyć wiele identyfikatorów sesji. Natychmiastowe
usunięcie danych sesji wyłącza również wykrywanie ataków związanych z przejęciem sesji
i zapobieganie im.
</para>
</warning>
</refsect1>

<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>usunięcie_starej_sesji</parameter></term>
<term><parameter>delete_old_session</parameter></term>
<listitem>
<para>
Określa czy stary identyfikator sesji ma zostać usunięty, czy też nie.
Nie powinieneś usuwać starej sesji, jeśli chcesz uniknąć
wyścigów spowodowanych usunięciem lub wykryciem/uniknięciem ataków polegających
na przejęciu sesji.
</para>
</listitem>
</varlistentry>
Expand All @@ -49,38 +69,6 @@
</para>
</refsect1>

<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>4.3.3</entry>
<entry>
Od tej wersji PHP, jeśli ciasteczka sesji są aktywne, wywołanie
<function>session_regenerate_id</function> utworzy nowe ciasteczko
sesji z nowym identyfikatorem sesji.
</entry>
</row>
<row>
<entry>5.1.0</entry>
<entry>
Dodano parametr <parameter>usunięcie_starej_sesji</parameter>.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>

<refsect1 role="examples">
&reftitle.examples;
<para>
Expand All @@ -89,12 +77,31 @@
<programlisting role="php">
<![CDATA[
<?php
// Notatka: Ten kod nie jest w pełni działającym kodem, ale przykładem!
session_start();
// Sprawdza usunięty znacznik czasu time-stamp
if (isset($_SESSION['destroyed'])
&& $_SESSION['destroyed'] < time() - 300) {
// Zwykle nie powinno się to zdarzać. Może to być spowodowane atakiem lub niestabilną siecią.
// Usunięcie całego statusu uwierzytelniania tej sesji użytkownika.
remove_all_authentication_flag_from_active_sessions($_SESSION['userid']);
throw(new DestroyedSessionAccessException);
}
$old_sessionid = session_id();
// Ustawienie znacznika czasu zniszczenia
$_SESSION['destroyed'] = time(); // session_regenerate_id() zapisuje stare dane sesji
// Samo wywołanie session_regenerate_id() może spowodować utratę sesji itp.
// Zobacz następny przykład.
session_regenerate_id();
// Nowa sesja nie potrzebuje zniszczonego znacznika czasu
unset($_SESSION['destroyed']);
$new_sessionid = session_id();
echo "Stara sesja: $old_sessionid<br />";
Expand All @@ -106,14 +113,85 @@ print_r($_SESSION);
</programlisting>
</example>
</para>
</refsect1>

<para>
Obecny moduł sesji nie radzi sobie dobrze z niestabilną siecią. Powinieneś
zarządzać identyfikatorem sesji, aby uniknąć utraty sesji za pomocą funkcji session_regenerate_id.
</para>

<para>
<example>
<title>Unikanie utraconej sesji za pomocą funkcji <function>session_regenerate_id</function></title>
<programlisting role="php">
<![CDATA[
<?php
// UWAGA: Ten kod nie jest w pełni działającym kodem, ale przykładem!
// my_session_start() i my_session_regenerate_id() zapobiegają utracie sesji przez
// niestabilną sieć. Ponadto, kod ten może zapobiec wykorzystaniu skradzionej
// sesji przez atakujących.
function my_session_start() {
session_start();
if (isset($_SESSION['destroyed'])) {
if ($_SESSION['destroyed'] < time()-300) {
// Zwykle nie powinno się to zdarzać. Może to być spowodowane atakiem lub niestabilną siecią.
// Usunięcie całego statusu uwierzytelniania tej sesji użytkownika.
remove_all_authentication_flag_from_active_sessions($_SESSION['userid']);
throw(new DestroyedSessionAccessException);
}
if (isset($_SESSION['new_session_id'])) {
// Nie wygasł jeszcze całkowicie. Możliwe, że plik cookie został utracony przez niestabilną sieć.
// Spróbuj ponownie ustawić prawidłowy identyfikator sesji cookie.
// UWAGA: Nie próbuj ponownie ustawiać identyfikatora sesji, jeśli chcesz usunąć
// flagę uwierzytelniania.
session_commit();
session_id($_SESSION['new_session_id']);
// Nowy identyfikator sesji powinien istnieć
session_start();
return;
}
}
}
function my_session_regenerate_id() {
// Nowy identyfikator sesji jest wymagany do ustawienia prawidłowego identyfikatora
// sesji, gdy identyfikator sesji nie jest ustawiony z powodu niestabilnej sieci.
$new_session_id = session_create_id();
$_SESSION['new_session_id'] = $new_session_id;
// Ustawienie znacznika czasu zniszczenia
$_SESSION['destroyed'] = time();
// Zapis i zamknięcie bieżącej sesji;
session_commit();
// Rozpoczęcie sesji z nowym identyfikatorem sesji
session_id($new_session_id);
ini_set('session.use_strict_mode', 0);
session_start();
ini_set('session.use_strict_mode', 1);
// Nowa sesja ich nie potrzebuje
unset($_SESSION['destroyed']);
unset($_SESSION['new_session_id']);
}
?>
]]>
</programlisting>
</example>
</para>

</refsect1>

<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>session_id</function></member>
<member><function>session_create_id</function></member>
<member><function>session_start</function></member>
<member><function>session_destroy</function></member>
<member><function>session_reset</function></member>
<member><function>session_name</function></member>
</simplelist>
</para>
Expand Down
Loading

0 comments on commit ed360c0

Please sign in to comment.