mirror of
https://github.com/php/doc-ru.git
synced 2025-08-15 23:42:35 +00:00
new
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@342800 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
42
reference/parsekit/book.xml
Normal file
42
reference/parsekit/book.xml
Normal file
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 1634a886415d0ab4df195fe49d18a1c150b70758 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<book xml:id="book.parsekit" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>Parsekit</title>
|
||||
|
||||
<preface xml:id="intro.parsekit">
|
||||
&reftitle.intro;
|
||||
<para>
|
||||
Эти функции позволяют анализировать скомпилированные опкоды PHP-скриптов во время выполнения.
|
||||
</para>
|
||||
</preface>
|
||||
|
||||
&reference.parsekit.setup;
|
||||
&reference.parsekit.constants;
|
||||
&reference.parsekit.reference;
|
||||
|
||||
</book>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
||||
|
40
reference/parsekit/configure.xml
Normal file
40
reference/parsekit/configure.xml
Normal file
@ -0,0 +1,40 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<section xml:id="parsekit.installation" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
&reftitle.install;
|
||||
<para>
|
||||
&pecl.moved;
|
||||
</para>
|
||||
<para>
|
||||
&pecl.info;
|
||||
<link xlink:href="&url.pecl.package;parsekit">&url.pecl.package;parsekit</link>.
|
||||
</para>
|
||||
<para>
|
||||
&pecl.windows.download;
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
1893
reference/parsekit/constants.xml
Normal file
1893
reference/parsekit/constants.xml
Normal file
File diff suppressed because it is too large
Load Diff
124
reference/parsekit/functions/parsekit-compile-file.xml
Normal file
124
reference/parsekit/functions/parsekit-compile-file.xml
Normal file
@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: dfd913a054ce5301220bec9b8d400ae462ae3564 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.parsekit-compile-file" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>parsekit_compile_file</refname>
|
||||
<refpurpose>Компилирует скрипт PHP и возвращает результат в виде массива</refpurpose>
|
||||
</refnamediv>
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>array</type><methodname>parsekit_compile_file</methodname>
|
||||
<methodparam><type>string</type><parameter>filename</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter role="reference">errors</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>int</type><parameter>options</parameter><initializer>PARSEKIT_QUIET</initializer></methodparam>
|
||||
</methodsynopsis>
|
||||
&warn.experimental.func;
|
||||
</refsect1>
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>filename</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Строка, содержащая путь к файлу скрипта..
|
||||
Аналогично как для <function>include</function>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>errors</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
2D хэш ошибок (включая фатальные) обнаруженных во время компиляции.
|
||||
Передается по ссылке.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>options</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<constant>PARSEKIT_QUIET</constant> или
|
||||
<constant>PARSEKIT_SIMPLE</constant>.
|
||||
Влияет на уровень детализации результата.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает массив содержащий сложную многоразмерную структуру, как показано ниже.
|
||||
</para>
|
||||
</refsect1>
|
||||
<!-- No changelog: it's only in PECL. -->
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>parsekit_compile_file</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
var_dump(parsekit_compile_file('hello_world.php', $errors, PARSEKIT_SIMPLE));
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(5) {
|
||||
[0]=>
|
||||
string(37) "ZEND_ECHO UNUSED 'Hello World' UNUSED"
|
||||
[1]=>
|
||||
string(30) "ZEND_RETURN UNUSED NULL UNUSED"
|
||||
[2]=>
|
||||
string(42) "ZEND_HANDLE_EXCEPTION UNUSED UNUSED UNUSED"
|
||||
["function_table"]=>
|
||||
NULL
|
||||
["class_table"]=>
|
||||
NULL
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member><function>parsekit_compile_string</function></member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
212
reference/parsekit/functions/parsekit-compile-string.xml
Normal file
212
reference/parsekit/functions/parsekit-compile-string.xml
Normal file
@ -0,0 +1,212 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.parsekit-compile-string" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>parsekit_compile_string</refname>
|
||||
<refpurpose>Компилирует строку PHP-кода и возвращает результат в виде массива</refpurpose>
|
||||
</refnamediv>
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>array</type><methodname>parsekit_compile_string</methodname>
|
||||
<methodparam><type>string</type><parameter>phpcode</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter role="reference">errors</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>int</type><parameter>options</parameter><initializer>PARSEKIT_QUIET</initializer></methodparam>
|
||||
</methodsynopsis>
|
||||
&warn.experimental.func;
|
||||
</refsect1>
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>phpcode</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Строка содержащая код PHP. Аналогично как аргумент для <function>eval</function>.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>errors</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
2D хэш ошибок (включая фатальные) обнаруженных во время компиляции.
|
||||
Передается по ссылке.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>options</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
<constant>PARSEKIT_QUIET</constant> или
|
||||
<constant>PARSEKIT_SIMPLE</constant>.
|
||||
Влияет на уровень детализации результата.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает массив содержащий сложную многоразмерную структуру, как показано ниже.
|
||||
</para>
|
||||
</refsect1>
|
||||
<!-- No changelog: it's only in PECL. -->
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>parsekit_compile_string</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
$ops = parsekit_compile_string('
|
||||
echo "Foo\n";
|
||||
', $errors, PARSEKIT_QUIET);
|
||||
|
||||
var_dump($ops);
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(20) {
|
||||
["type"]=>
|
||||
int(4)
|
||||
["type_name"]=>
|
||||
string(14) "ZEND_EVAL_CODE"
|
||||
["fn_flags"]=>
|
||||
int(0)
|
||||
["num_args"]=>
|
||||
int(0)
|
||||
["required_num_args"]=>
|
||||
int(0)
|
||||
["pass_rest_by_reference"]=>
|
||||
bool(false)
|
||||
["uses_this"]=>
|
||||
bool(false)
|
||||
["line_start"]=>
|
||||
int(0)
|
||||
["line_end"]=>
|
||||
int(0)
|
||||
["return_reference"]=>
|
||||
bool(false)
|
||||
["refcount"]=>
|
||||
int(1)
|
||||
["last"]=>
|
||||
int(3)
|
||||
["size"]=>
|
||||
int(3)
|
||||
["T"]=>
|
||||
int(0)
|
||||
["last_brk_cont"]=>
|
||||
int(0)
|
||||
["current_brk_cont"]=>
|
||||
int(-1)
|
||||
["backpatch_count"]=>
|
||||
int(0)
|
||||
["done_pass_two"]=>
|
||||
bool(true)
|
||||
["filename"]=>
|
||||
string(17) "Parsekit Compiler"
|
||||
["opcodes"]=>
|
||||
array(3) {
|
||||
[8594800]=>
|
||||
array(5) {
|
||||
["opcode"]=>
|
||||
int(40)
|
||||
["opcode_name"]=>
|
||||
string(9) "ZEND_ECHO"
|
||||
["flags"]=>
|
||||
int(768)
|
||||
["op1"]=>
|
||||
array(3) {
|
||||
["type"]=>
|
||||
int(1)
|
||||
["type_name"]=>
|
||||
string(8) "IS_CONST"
|
||||
["constant"]=>
|
||||
&string(4) "Foo
|
||||
"
|
||||
}
|
||||
["lineno"]=>
|
||||
int(2)
|
||||
}
|
||||
["859484C"]=>
|
||||
array(6) {
|
||||
["opcode"]=>
|
||||
int(62)
|
||||
["opcode_name"]=>
|
||||
string(11) "ZEND_RETURN"
|
||||
["flags"]=>
|
||||
int(16777984)
|
||||
["op1"]=>
|
||||
array(3) {
|
||||
["type"]=>
|
||||
int(1)
|
||||
["type_name"]=>
|
||||
string(8) "IS_CONST"
|
||||
["constant"]=>
|
||||
&NULL
|
||||
}
|
||||
["extended_value"]=>
|
||||
int(0)
|
||||
["lineno"]=>
|
||||
int(3)
|
||||
}
|
||||
[8594898]=>
|
||||
array(4) {
|
||||
["opcode"]=>
|
||||
int(149)
|
||||
["opcode_name"]=>
|
||||
string(21) "ZEND_HANDLE_EXCEPTION"
|
||||
["flags"]=>
|
||||
int(0)
|
||||
["lineno"]=>
|
||||
int(3)
|
||||
}
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member><function>parsekit_compile_file</function></member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
125
reference/parsekit/functions/parsekit-func-arginfo.xml
Normal file
125
reference/parsekit/functions/parsekit-func-arginfo.xml
Normal file
@ -0,0 +1,125 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.parsekit-func-arginfo" xmlns="http://docbook.org/ns/docbook">
|
||||
<refnamediv>
|
||||
<refname>parsekit_func_arginfo</refname>
|
||||
<refpurpose>Возвращает информацию о аргументах функции</refpurpose>
|
||||
</refnamediv>
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>array</type><methodname>parsekit_func_arginfo</methodname>
|
||||
<methodparam><type>mixed</type><parameter>function</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
&warn.experimental.func;
|
||||
</refsect1>
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>function</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Строка, описывающая функцию или массив, описывающий класс/метод.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает массив, содержащий информацию об аргументах.
|
||||
</para>
|
||||
</refsect1>
|
||||
<!-- No changelog: it's only in PECL. -->
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>parsekit_func_arginfo</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
function foo($bar, stdClass $baz, &$bomb, $bling = false) {
|
||||
}
|
||||
|
||||
var_dump(parsekit_func_arginfo('foo'));
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
array(4) {
|
||||
[0]=>
|
||||
array(3) {
|
||||
["name"]=>
|
||||
string(3) "bar"
|
||||
["allow_null"]=>
|
||||
bool(true)
|
||||
["pass_by_reference"]=>
|
||||
bool(false)
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["name"]=>
|
||||
string(3) "baz"
|
||||
["class_name"]=>
|
||||
string(8) "stdClass"
|
||||
["allow_null"]=>
|
||||
bool(false)
|
||||
["pass_by_reference"]=>
|
||||
bool(false)
|
||||
}
|
||||
[2]=>
|
||||
array(3) {
|
||||
["name"]=>
|
||||
string(4) "bomb"
|
||||
["allow_null"]=>
|
||||
bool(true)
|
||||
["pass_by_reference"]=>
|
||||
bool(true)
|
||||
}
|
||||
[3]=>
|
||||
array(3) {
|
||||
["name"]=>
|
||||
string(5) "bling"
|
||||
["allow_null"]=>
|
||||
bool(true)
|
||||
["pass_by_reference"]=>
|
||||
bool(false)
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
30
reference/parsekit/ini.xml
Normal file
30
reference/parsekit/ini.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<section xml:id="parsekit.configuration" xmlns="http://docbook.org/ns/docbook">
|
||||
&reftitle.runtime;
|
||||
&no.config;
|
||||
</section>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
32
reference/parsekit/reference.xml
Normal file
32
reference/parsekit/reference.xml
Normal file
@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<reference xml:id="ref.parsekit" xmlns="http://docbook.org/ns/docbook">
|
||||
<title>&Functions; Parsekit</title>
|
||||
|
||||
&reference.parsekit.entities.functions;
|
||||
|
||||
</reference>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
45
reference/parsekit/setup.xml
Normal file
45
reference/parsekit/setup.xml
Normal file
@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 96c9d88bad9a7d7d44bfb7f26c226df7ee9ddf26 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<chapter xml:id="parsekit.setup" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
&reftitle.setup;
|
||||
|
||||
<section xml:id="parsekit.requirements">
|
||||
&reftitle.required;
|
||||
&no.requirement;
|
||||
</section>
|
||||
|
||||
&reference.parsekit.configure;
|
||||
|
||||
&reference.parsekit.ini;
|
||||
|
||||
<section xml:id="parsekit.resources">
|
||||
&reftitle.resources;
|
||||
&no.resource;
|
||||
</section>
|
||||
|
||||
</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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
||||
|
85
reference/password/functions/password-get-info.xml
Normal file
85
reference/password/functions/password-get-info.xml
Normal file
@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 95f6764aef0aaf5b99cb692de6783831b2431226 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.password-get-info" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>password_get_info</refname>
|
||||
<refpurpose>Возвращает информацию о заданном хеше</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>array</type><methodname>password_get_info</methodname>
|
||||
<methodparam><type>string</type><parameter>hash</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Если передан корректный хеш, созданный поддерживаемым
|
||||
<function>password_hash</function> алгоритмом, то эта функция вернет
|
||||
информацию об этом хеше.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>hash</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.hash;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает ассоциативный массив с тремя элементами:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<literal>algo</literal>, содержащий одну из
|
||||
<link linkend="password.constants">констант алгоритмов паролей</link>
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<literal>algoName</literal>, содержащий имя алгоритма в человеко-читаемом виде.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<literal>options</literal>, включающий опции переданные
|
||||
при вызове <function>password_hash</function>
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
349
reference/password/functions/password-hash.xml
Normal file
349
reference/password/functions/password-hash.xml
Normal file
@ -0,0 +1,349 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 7e65787ddc8fbb01d8239e0c593c2347200d2b7c Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.password-hash" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>password_hash</refname>
|
||||
<refpurpose>Создает хеш пароля</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>string</type><methodname>password_hash</methodname>
|
||||
<methodparam><type>string</type><parameter>password</parameter></methodparam>
|
||||
<methodparam><type>integer</type><parameter>algo</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter>options</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
<function>password_hash</function> создает хеш пароля используя сильный,
|
||||
необратимый алгоритм хеширования.
|
||||
Функция <function>password_hash</function> совместима с функцией
|
||||
<function>crypt</function>.
|
||||
Следовательно, хэши паролей, созданные <function>crypt</function> можно использовать
|
||||
с <function>password_hash</function>.
|
||||
</para>
|
||||
<simpara>
|
||||
В данный момент поддерживаются следующие алгоритмы:
|
||||
</simpara>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<constant>PASSWORD_DEFAULT</constant> - используется алгоритм bcrypt (по умолчанию с PHP 5.5.0).
|
||||
Обратите внимание, что используемый алгоритм может со временем меняться на более
|
||||
сильный, когда таковой добавляется в PHP. Соответственно и длина результата может со
|
||||
временем меняться. В связи с этим рекомендуется выбирать длину поля для хранения
|
||||
в базе данных более 60 символов (255 - вообще идеально).
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
<constant>PASSWORD_BCRYPT</constant> - использует алгоритм
|
||||
<constant>CRYPT_BLOWFISH</constant>. Генерирует стандартный хеш, совместимый
|
||||
с генерированным функцией <function>crypt</function> с использованием
|
||||
идентификатора "$2y$". В результате будет сгенерирована строка длиной 60 символов, &return.falseforfailure;.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<simpara>
|
||||
Поддерживаемые опции:
|
||||
</simpara>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>salt</literal> - для самостоятельного задания соли для хеширования.
|
||||
Обратите внимание, что это приведет к переопределению и предотвращению
|
||||
автоматического создания соли.
|
||||
</para>
|
||||
<para>
|
||||
Если не задано, то <function>password_hash</function> будет генерировать
|
||||
случайную соль для каждого хешируемого пароля. Это предпочтительный
|
||||
режим работы.
|
||||
</para>
|
||||
<warning>
|
||||
<para>
|
||||
Эта опция была объявлена устаревшей начиная с PHP 7.0.0.
|
||||
Рекомендуется использовать автоматически генерируемую соль.
|
||||
</para>
|
||||
</warning>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>cost</literal> - задает необходимую алгоритмическую сложность.
|
||||
Пример использования этого значения можно посмотреть на странице посвященной
|
||||
функции <function>crypt</function>.
|
||||
</para>
|
||||
<para>
|
||||
Если не задано, то будет использовано значение по умолчанию <literal>10</literal>.
|
||||
Это хорошая базовая стоимость, но вы можете ее увеличить в зависимости
|
||||
от возможностей своего железа.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>password</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.password;
|
||||
</para>
|
||||
<caution>
|
||||
<para>
|
||||
Использование алгоритма <constant>PASSWORD_BCRYPT</constant> приведет
|
||||
к обрезанию поля <parameter>password</parameter> до максимальной длины
|
||||
в 72 символа.
|
||||
</para>
|
||||
</caution>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>algo</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.algo;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>options</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.options;
|
||||
</para>
|
||||
<para>
|
||||
Если не задано, то будет использована стандартная стоимость и соль будет
|
||||
генерироваться автоматически.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает зашехированный пароль, &return.falseforfailure;.
|
||||
</para>
|
||||
<para>
|
||||
Использованный алгоритм, стоимость и соль будут возвращены как часть шеша.
|
||||
Таким образом, информация необходимая для проверки хеша будет в него
|
||||
включена. Это позволит функции <function>password_verify</function> проверять
|
||||
хеш без необходимости отдельного хранения информации о соли и алгоритме.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>password_hash</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
/**
|
||||
* Мы просто хотим захешировать свой пароль используя настройки по умолчанию.
|
||||
* Значит будет использован BCRYPT и результат будет 60 символов длиной.
|
||||
*
|
||||
* Помните, что алгоритм по умолчанию может измениться в будущем, так что
|
||||
* имеет смысл заранее позаботиться о том, чтобы система хранения хешей
|
||||
* смогла хранить более 60 символов (255 в самый раз)
|
||||
*/
|
||||
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>password_hash</function> с ручным заданием стоимости</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
/**
|
||||
* Тут мы увеличиваем алгоритмическую стоимость BCRYPT до 12.
|
||||
* Но это никак не скажется на длине полученного результата, она останется 60 символов
|
||||
*/
|
||||
$options = [
|
||||
'cost' => 12,
|
||||
];
|
||||
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>password_hash</function> с ручным заданием соли</title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
/**
|
||||
* Обратите внимание, что мы все равно генерируем соль автоматически.
|
||||
* Никогда не используйте для соли заранее заданное статическое значение.
|
||||
*
|
||||
* Самым лучшим выбором будет позволить password_hash создавать соль автоматически
|
||||
*/
|
||||
$options = [
|
||||
'cost' => 11,
|
||||
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
|
||||
];
|
||||
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример поиска хорошего значения стоимости для <function>password_hash</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
/**
|
||||
* Данный код замерит скорость выполнения операции хешитрования для вашего сервера
|
||||
* с разными значениями алгоритмической сложности для определения максимального
|
||||
* его значения, не приводящего к деградации производительности. Хорошее базовое
|
||||
* значение лежит в диапазоне 8-10, но если ваш сервер достаточно мощный, то можно
|
||||
* задать и больше. Данный скрипт ищет максимальное значение, при котором
|
||||
* хеширование уложится в 50 миллисекунд.
|
||||
*/
|
||||
$timeTarget = 0.05; // 50 миллисекунд.
|
||||
|
||||
$cost = 8;
|
||||
do {
|
||||
$cost++;
|
||||
$start = microtime(true);
|
||||
password_hash("test", PASSWORD_BCRYPT, ["cost" => $cost]);
|
||||
$end = microtime(true);
|
||||
} while (($end - $start) < $timeTarget);
|
||||
|
||||
echo "Оптимальная стоимость: " . $cost . "\n";
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs.similar;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
Appropriate Cost Found: 10
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="notes">
|
||||
&reftitle.notes;
|
||||
<caution>
|
||||
<para>
|
||||
Настоятельно рекомендуется использовать автоматическую генерацию соли.
|
||||
Данная функция самостоятельно создаст хорошую соль если вы не будете ей мешать
|
||||
подсовывая свою.
|
||||
</para>
|
||||
<para>
|
||||
Как было замечены выше, опция <literal>salt</literal> была объявлена
|
||||
устаревшей в PHP 7.0 и будет вызывать соответствующее предупреждение.
|
||||
Поддержка ручного задания соли может быть удалена в более новых версиях.
|
||||
</para>
|
||||
</caution>
|
||||
<note>
|
||||
<para>
|
||||
Рекомендуется протестировать данную функцию на вашем железе для определения
|
||||
оптимального значения алгоритмической сложности. Убедитесь, что с выбранной
|
||||
сложностью функция выполняется быстрее 100 миллисекунд для интерактивных
|
||||
систем. Скрипт показанный выше поможет вам выбрать подходящее значение.
|
||||
</para>
|
||||
</note>
|
||||
<note>
|
||||
<simpara>
|
||||
Обновление поддерживаемых алгоритмов для этой функции (или изменение значения по
|
||||
умолчанию) обязаны следовать правилам:
|
||||
</simpara>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Любой новый алгоритм должен присутствовать в ядре как минимум
|
||||
1 полный релиз PHP для того, чтобы его можно было установить по умолчанию.
|
||||
Таким образом если, к примеру, новый алгоритм был добавлен в
|
||||
7.5.5, то задать по умолчанию его можно юудет только в 7.7 (7.6 будет тем самым
|
||||
полным релизом, в течении которого он должен присутствовать, от 7.6.0 до 7.7.0). Но
|
||||
если новый алгоритм добавлен в 7.6.0, то его также можно будет задать по умолчанию
|
||||
в 7.7.0.
|
||||
</simpara>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<simpara>
|
||||
Алгоритм по умолчанию может быть изменен только в полном релизе
|
||||
(7.3.0, 8.0.0, и т.д.), но не в промежуточных. Единственное исключение - это
|
||||
если в текущем алгоритме найдена критическая уязвимость.
|
||||
</simpara>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</note>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member><function>password_verify</function></member>
|
||||
<member><function>crypt</function></member>
|
||||
<member><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&url.password.compat;">пользовательская реализация</link></member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
118
reference/password/functions/password-needs-rehash.xml
Normal file
118
reference/password/functions/password-needs-rehash.xml
Normal file
@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: 5650ac40beff0b033fa8351ab57641391dacaee8 Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.password-needs-rehash" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>password_needs_rehash</refname>
|
||||
<refpurpose>Проверяет, что указанный хеш соответствует заданным опциям</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>boolean</type><methodname>password_needs_rehash</methodname>
|
||||
<methodparam><type>string</type><parameter>hash</parameter></methodparam>
|
||||
<methodparam><type>integer</type><parameter>algo</parameter></methodparam>
|
||||
<methodparam choice="opt"><type>array</type><parameter>options</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Проверяет, что указанный хеш соответствует заданным опциям и заданному алгоритму.
|
||||
Если нет, то можно сделать вывод о том, что хеш надо переделать.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>hash</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.hash;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>algo</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.algo;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>options</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.options;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>password_needs_rehash</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
|
||||
$password = 'rasmuslerdorf';
|
||||
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';
|
||||
|
||||
// Параметр стоимости может изменяться в связи со сменой оборудования
|
||||
$options = array('cost' => 11);
|
||||
|
||||
// Проверка сохраненного хеша с помощью пароля
|
||||
if (password_verify($password, $hash)) {
|
||||
// Проверяем, не нужно ли использовать более новый алгоритм
|
||||
// или другую алгоритмическую стоимость
|
||||
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
|
||||
// Если таки да, перехешируем и сохраняем новый хеш
|
||||
$newHash = password_hash($password, PASSWORD_DEFAULT, $options);
|
||||
}
|
||||
|
||||
// Авторизуем пользователя
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает &true; если пароль должен быть перехеширован с использованием
|
||||
алгоритма <parameter>algo</parameter> и опций <parameter>options</parameter>,
|
||||
или &false;, если нет.
|
||||
</para>
|
||||
</refsect1>
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
122
reference/password/functions/password-verify.xml
Normal file
122
reference/password/functions/password-verify.xml
Normal file
@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- $Revision$ -->
|
||||
<!-- EN-Revision: f0e80e2c3f4455e06c34f052a091b1d9b22e81fe Maintainer: rjhdby Status: ready -->
|
||||
<!-- Reviewed: no -->
|
||||
|
||||
<refentry xml:id="function.password-verify" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<refnamediv>
|
||||
<refname>password_verify</refname>
|
||||
<refpurpose>Проверяет, соответствует ли пароль хешу</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsect1 role="description">
|
||||
&reftitle.description;
|
||||
<methodsynopsis>
|
||||
<type>boolean</type><methodname>password_verify</methodname>
|
||||
<methodparam><type>string</type><parameter>password</parameter></methodparam>
|
||||
<methodparam><type>string</type><parameter>hash</parameter></methodparam>
|
||||
</methodsynopsis>
|
||||
<para>
|
||||
Проверяет, соответствует ли пароль хешу.
|
||||
</para>
|
||||
<para>
|
||||
обратите внимание, что <function>password_hash</function> возвращает алгоритм,
|
||||
стоимость и соль как части хеша. Таким образом, вся необходимая для проверки
|
||||
информация включена в него. Это позволяет производить проверку без
|
||||
необходимости хранить все эти данные раздельно.
|
||||
</para>
|
||||
<para>
|
||||
Эта функция безопасна для атак по времени.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="parameters">
|
||||
&reftitle.parameters;
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><parameter>password</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.password;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><parameter>hash</parameter></term>
|
||||
<listitem>
|
||||
<para>
|
||||
&password.parameter.hash;
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="returnvalues">
|
||||
&reftitle.returnvalues;
|
||||
<para>
|
||||
Возвращает &true; или &false;, в зависимости от результатов проверки.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="examples">
|
||||
&reftitle.examples;
|
||||
<para>
|
||||
<example>
|
||||
<title>Пример использования <function>password_verify</function></title>
|
||||
<programlisting role="php">
|
||||
<![CDATA[
|
||||
<?php
|
||||
// Смотрите пример использования password_hash(), для понимания откуда это взялось.
|
||||
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';
|
||||
|
||||
if (password_verify('rasmuslerdorf', $hash)) {
|
||||
echo 'Пароль правильный!';
|
||||
} else {
|
||||
echo 'Пароль неправильный.';
|
||||
}
|
||||
?>
|
||||
]]>
|
||||
</programlisting>
|
||||
&example.outputs;
|
||||
<screen>
|
||||
<![CDATA[
|
||||
Пароль правильный!
|
||||
]]>
|
||||
</screen>
|
||||
</example>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1 role="seealso">
|
||||
&reftitle.seealso;
|
||||
<para>
|
||||
<simplelist>
|
||||
<member><function>password_hash</function></member>
|
||||
<member><link xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="&url.password.compat;">пользовательская реализация</link></member>
|
||||
</simplelist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
<!-- 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
|
||||
indent-tabs-mode:nil
|
||||
sgml-parent-document:nil
|
||||
sgml-default-dtd-file:"~/.phpdoc/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
|
||||
-->
|
Reference in New Issue
Block a user