11<?xml version =" 1.0" encoding =" utf-8" ?>
2- <!-- EN-Revision: aab33d644359aba597e810e2fc0c0caa0d347c9c Maintainer: shein Status: ready -->
2+ <!-- EN-Revision: 1709768e97fce7848c62aa2bf988419527bd1e8e Maintainer: shein Status: ready -->
33<!-- Reviewed: no -->
44<chapter xml : id =" faq.using" xmlns =" http://docbook.org/ns/docbook" xmlns : xlink =" http://www.w3.org/1999/xlink" >
55 <title >Использование PHP</title >
1212 <qandaset >
1313
1414 <qandaentry xml : id =" faq.using.parameterorder" >
15- <!-- TODO: Mention named arguments -->
1615 <question >
1716 <para >
1817 Я не могу запомнить порядок аргументов PHP-функций, они что, случайны?
2928 порядок <link linkend =" book.strings" >в строковых функциях</link > обратный,
3029 то есть аналогичен «<emphasis >стог, иголка</emphasis >».
3130 </para >
31+ <para >
32+ C PHP 8.0 <link linkend =" functions.named-arguments" >именованные аргументы</link >
33+ разрешили передачу аргументов по названию параметра и снизили значимость порядка параметров.
34+ </para >
3235 </answer >
3336 </qandaentry >
3437
4245 </question >
4346 <answer >
4447 <para >
45- PHP предлагает множество <link linkend =" language.variables.predefined" >
46- предопределённых переменных</link > наподобие суперглобальной переменной
47- <varname >$_POST</varname >. Можно пройти по элементам переменной <varname >$_POST</varname > в цикле,
48- поскольку это ассоциативный массив значений, которые пришли с POST-запросом.
48+ PHP предлагает множество <link linkend =" language.variables.predefined" >предопределённых переменных</link >
49+ наподобие суперглобальной переменной <varname >$_POST</varname >. Переменная <varname >$_POST</varname > поддерживает обход элементов в цикле,
50+ поскольку это ассоциативный массив значений, которые поступили в POST-запросе.
4951 Например, просто пройдёмся по элементам массива конструкцией &foreach; ,
5052 проверим значения на пустоту (<function >empty</function >) и выведем.
5153 <programlisting role =" php" >
@@ -73,8 +75,6 @@ if (empty($empty)) {
7375 print "Пустых:\n"; var_dump($empty);
7476 exit;
7577}
76-
77- ?>
7878]]>
7979 </programlisting >
8080 </para >
@@ -83,25 +83,26 @@ if (empty($empty)) {
8383 </qandaentry >
8484
8585 <qandaentry xml : id =" faq.using.addslashes" >
86- <!-- TODO Probably should mention not doing this... -->
8786 <question >
8887 <para >
89- Необходимо преобразовать одинарные кавычки (') в одинарные кавычки,
90- перед которыми идёт обратный слеш (\'). Как это можно сделать через
91- регулярное выражение?
92- Хотелось бы также преобразовать «"» в «\"», а «\» в «\\».
88+ Требуется заменить одинарные кавычки (') на кавычки с обратным слешем (\').
89+ Как это сделать через регулярное выражение? И тот же вопрос касается замены " на \" и \ на \\.
9390 </para >
9491 </question >
9592 <answer >
9693 <para >
97- Предполагая, что это требуется для базы данных,
98- используйте механизм экранирования, который идёт
99- с базой данных. Например, вызывайте функцию
100- <function >mysql_real_escape_string</function > с MySQL
101- и функцию <function >pg_escape_string</function > с PostgreSQL.
102- В предыдущих версиях PHP чаще пользовались функциями <function >addslashes</function >
94+ Задействуйте внутренний механизм экранирования базы данных,
95+ если речь идёт о базе данных. Например, вызывайте функцию
96+ <function >mysql_real_escape_string</function > в БД MySQL
97+ и функцию <function >pg_escape_string</function > в базе данных PostgreSQL.
98+ В предыдущих версиях PHP чаще вызывали функции <function >addslashes</function >
10399 и <function >stripslashes</function >.
104100 </para >
101+ <para >
102+ Экранирование значений вручную чревато ошибками и зависит от контекста.
103+ Лучше предпочесть API баз данных, которые поддерживают подготовленные запросы
104+ и привязку параметров, вместо построения запросов путём конкатенации экранированных строк.
105+ </para >
105106 </answer >
106107 </qandaentry >
107108
@@ -121,8 +122,6 @@ function myfunc($argument)
121122$variable = 10;
122123
123124echo "myfunc($variable) = " . myfunc($variable);
124-
125- ?>
126125]]>
127126 </programlisting >
128127 Что происходит?
@@ -214,8 +213,6 @@ $headers = getallheaders();
214213foreach ($headers as $name => $content) {
215214 echo "headers[$name] = $content<br />\n";
216215}
217-
218- ?>
219216]]>
220217 </programlisting >
221218 </para >
@@ -254,8 +251,8 @@ foreach ($headers as $name => $content) {
254251 <qandaentry xml : id =" faq.using.iis.sharing" >
255252 <question >
256253 <para >
257- Windows: не удаётся с IIS-сервера получить доступ к файлам,
258- к которым предоставлен общий доступ на другом компьютере.
254+ Windows: с IIS-сервера невозможно получить доступ к файлам,
255+ к которым предоставили общий доступ на другом компьютере.
259256 </para >
260257 </question >
261258 <answer >
0 commit comments