com doc/zh: Remove magic quote mentions see https://github. com/php/doc-en/commit/f029b664b8728bd5cbb 697cb9a4409aea07cb36c: faq/using. xml reference/info/functions/get-magic-quotes-gpc.xml sec urity/magicquotes.xml
[email protected] (Dai Jie) Sat, 16 Jan 2021 16:13:07 +0000
| Newsgroups | php.doc.zh |
|---|---|
| Message-ID | <[email protected]> |
Commit: f92a4ece4afe67591a68183dbc93f646e6264262 Author: 戴劼 <[email protected]> Sun, 17 Jan 2021 00:13:07 +0800 Parents: 18698fda50e129ebd78b828f1cbe5adf4a47c3ee Branches: master Link: http://git.php.net/?p=doc/zh.git;a=commitdiff;h=f92a4ece4afe67591a68183dbc93f646e6264262 Log: Remove magic quote mentions see https://github.com/php/doc-en/commit/f029b664b8728bd5cbb697cb9a4409aea07cb36c Changed paths: M faq/using.xml M reference/info/functions/get-magic-quotes-gpc.xml D security/magicquotes.xml
diff_f92a4ece4afe67591a68183dbc93f646e6264262.txt
(text/plain, 13.6 KB)
diff --git a/faq/using.xml b/faq/using.xml
index 1ade41e8..dc49e78f 100755
--- a/faq/using.xml
+++ b/faq/using.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- $Author$ -->
-<!-- EN-Revision: 87a2f30351e8939c82b1b5ecd46fcccedd3ad7c2 Maintainer: Avenger Status: ready -->
+<!-- EN-Revision: f029b664b8728bd5cbb697cb9a4409aea07cb36c Maintainer: Avenger Status: ready -->
<chapter xml:id="faq.using"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink">
@@ -96,31 +96,6 @@ if (empty($empty)) {
<function>stripslashes</function> 可以在旧的 PHP 版本中实现类似的操作。
</para>
- ¬e.magicquotes.gpc;
-
- </answer>
- </qandaentry>
-
-
-
- <qandaentry xml:id="faq.using.stripslashes">
- <question>
- <para>
- 我所有的 " 和 ' 都变成了 \" 和
- \',我如何才能去掉这些不必要的反斜线?它们为什么及如何出现?
- </para>
- </question>
- <answer>
- <para>
- 最可能的情况是,由于 PHP 的
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> 被开启,反斜线神奇的存在了。这是
- PHP 的一个旧特性引起的,应该被禁用,不要依赖它。另外,
- <function>stripslashes</function> 函数能够从
- <type>string</type>中去掉所有的反斜线。
- </para>
-
- ¬e.magicquotes.gpc;
-
</answer>
</qandaentry>
@@ -446,7 +421,7 @@ foreach ($headers as $name => $content) {
<question>
<para>
有些 PHP 选项可以接受缩写的字节值,与仅能接受
- <type>integer</type> 字节值相反。都有哪些缩写字节值?
+ <type>int</type> 字节值相反。都有哪些缩写字节值?
</para>
</question>
<answer>
@@ -456,9 +431,9 @@ foreach ($headers as $name => $content) {
<literal>1048576</literal> 字节。
<literal>1K</literal> 等于一个 Kilobyte,即
<literal>1024</literal> 字节。不能在 &php.ini; 之外使用这些符号,最好用整数的
- <type>integer</type> 字节值。参见
+ <type>int</type> 字节值。参见
<function>ini_get</function> 文档中的转换示例。要注意,数字类型为
- <type>integer</type> 会自动取整,这意味着
+ <type>int</type> 会自动取整,这意味着
<literal>0.5M</literal> 与 <literal>0</literal> 是等价的。
</para>
<note>
diff --git a/reference/info/functions/get-magic-quotes-gpc.xml b/reference/info/functions/get-magic-quotes-gpc.xml
index b5dcb3ee..3d8d3102 100644
--- a/reference/info/functions/get-magic-quotes-gpc.xml
+++ b/reference/info/functions/get-magic-quotes-gpc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 098fcff39a18a4edffdb61dd17eec4264123dcab Maintainer: daijie Status: ready -->
+<!-- EN-Revision: f029b664b8728bd5cbb697cb9a4409aea07cb36c Maintainer: daijie Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.get-magic-quotes-gpc" xmlns="http://docbook.org/ns/docbook">
@@ -8,6 +8,10 @@
<refname>get_magic_quotes_gpc</refname>
<refpurpose>获取当前 magic_quotes_gpc 的配置选项设置</refpurpose>
</refnamediv>
+
+ <refsynopsisdiv>
+ &warn.deprecated.function-7-4-0;
+ </refsynopsisdiv>
<refsect1 role="description">
&reftitle.description;
@@ -16,22 +20,14 @@
<void/>
</methodsynopsis>
<para>
- 返回当前 <link
- linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link> 配置选项的设置
- </para>
- <para>
- 记住,尝试在运行时设置 <link linkend="ini.magic-quotes-gpc">
- magic_quotes_gpc</link> 将不会生效。
- </para>
- <para>
- 更多关于 magic_quotes 的信息参见<link linkend="security.magicquotes">安全</link>一章。
+ 始终返回 &false;。
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
- 如果 magic_quotes_gpc 为关闭时返回 0,否则返回 1。在 PHP 5.4.O 起将始终返回 &false;。
+ 始终返回 &false;。
</para>
</refsect1>
@@ -48,9 +44,9 @@
</thead>
<tbody>
<row>
- <entry>5.4.0</entry>
+ <entry>7.4.0</entry>
<entry>
- 始终返回 &false;,因为这个魔术引号功能已经从 PHP 中移除了。
+ 该函数已被废弃。
</entry>
</row>
</tbody>
@@ -59,51 +55,6 @@
</para>
</refsect1>
- <refsect1 role="examples">
- &reftitle.examples;
- <para>
- <example>
- <title><function>get_magic_quotes_gpc</function> 例子</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-// 如果启用了魔术引号
-echo $_POST['lastname']; // O\'reilly
-echo addslashes($_POST['lastname']); // O\\\'reilly
-
-// 适用各个 PHP 版本的用法
-if (get_magic_quotes_gpc()) {
- $lastname = stripslashes($_POST['lastname']);
-}
-else {
- $lastname = $_POST['lastname'];
-}
-
-// 如果使用 MySQL
-$lastname = mysql_real_escape_string($lastname);
-
-echo $lastname; // O\'reilly
-$sql = "INSERT INTO lastnames (lastname) VALUES ('$lastname')";
-?>
-]]>
- </programlisting>
- </example>
- </para>
- </refsect1>
-
- <refsect1 role="notes">
- &reftitle.notes;
- <note>
- <para>
- 如果指令
- magic_quotes_sybase 为 ON,它会完全覆盖 <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>。
- 所以即使 <function>get_magic_quotes_gpc</function> 返回 &true;,双引号、反斜杠或 NUL 都不会被转义。
- 只有单引号会被转义。
- 这种情况下它们看上去像:<emphasis>''</emphasis>
- </para>
- </note>
- </refsect1>
-
<refsect1 role="seealso">
&reftitle.seealso;
<para>
diff --git a/security/magicquotes.xml b/security/magicquotes.xml
deleted file mode 100644
index 26ce98d1..00000000
--- a/security/magicquotes.xml
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- $Revision$ -->
-<!-- EN-Revision: 2f0cfaf4060b232835537001936d20b0a1e2a2d6 Maintainer: HonestQiao Status: ready -->
-<!-- Reviewed: no Maintainer: HonestQiao -->
-<!-- CREDITS: dallas -->
-<chapter xml:id="security.magicquotes" xmlns="http://docbook.org/ns/docbook">
- <title>魔术引号</title>
-&warn.deprecated.feature-5-3-0.removed-5-4-0;
- <para>
- 魔术引号(Magic Quote)是一个自动将进入 <acronym>PHP</acronym> 脚本的数据进行转义的过程。最好在编码时不要转义而在运行时根据需要而转义。
- </para>
-
- <sect1 xml:id="security.magicquotes.what">
- <title>什么是魔术引号</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <para>
- 当打开时,所有的 <literal>'</literal>(单引号),<literal>"</literal>(双引号),<literal>\</literal>(反斜线)和
- <literal>NULL</literal> 字符都会被自动加上一个反斜线进行转义。这和
- <function>addslashes</function> 作用完全相同。
- </para>
- <para>
- 一共有三个魔术引号指令:
- </para>
- <itemizedlist>
- <listitem>
- <simpara>
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- </simpara>
- <simpara>
- 影响到 <acronym>HTTP</acronym> 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在
- <acronym>PHP</acronym> 中默认值为 <emphasis>on</emphasis>。
- </simpara>
- <simpara>
- 参见 <function>get_magic_quotes_gpc</function>。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- <link linkend="ini.magic-quotes-runtime">magic_quotes_runtime</link>
- </simpara>
- <simpara>
- 如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在
- <acronym>PHP</acronym> 中的默认值为 <emphasis>off</emphasis>。
- </simpara>
- <simpara>
- 参见 <function>set_magic_quotes_runtime</function> 和
- <function>get_magic_quotes_runtime</function>。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- magic_quotes_sybase
- </simpara>
- <simpara>
- 如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>。如果同时打开两个选项的话,单引号将会被转义成
- <literal>''</literal>。而双引号、反斜线 和 NULL 字符将不会进行转义。
- </simpara>
- <simpara>
- 如何取得其值参见 <function>ini_get</function>。
- </simpara>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="security.magicquotes.why">
- <title>为什么要用魔术引号</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <itemizedlist>
- <listitem>
- <simpara>
- 没有理由再使用魔术引号,因为它不再是 <acronym>PHP</acronym> 支持的一部分。
- 不过它帮助了新手在不知不觉中写出了更好(更安全)的代码。
- 但是在处理代码的时候,最好是更改你的代码而不是依赖于魔术引号的开启。
- </simpara>
- <simpara>
- 为什么这个功能存在?是为了阻止<link linkend="security.database.sql-injection">SQL 注入</link>。
- 在今天,开发者能够更好得意识到了安全问题,并最终使用数据库转移机制或者 prepared 语句来取代魔术引号功能。
- </simpara>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="security.magicquotes.whynot">
- <title>为什么不用魔术引号</title>
- &warn.deprecated.feature-5-3-0.removed-5-4-0;
- <itemizedlist>
- <listitem>
- <simpara>
- 可移植性
- </simpara>
- <simpara>
- 编程时认为其打开或并闭都会影响到移植性。可以用
- <function>get_magic_quotes_gpc</function> 来检查是否打开,并据此编程。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- 性能
- </simpara>
- <simpara>
- 由于并不是每一段被转义的数据都要插入数据库的,如果所有进入
- PHP 的数据都被转义的话,那么会对程序的执行效率产生一定的影响。在运行时调用转义函数(如
- <function>addslashes</function>)更有效率。
- </simpara>
- <simpara>
- 尽管 <filename>php.ini-dist</filename> 默认打开了这个选项,但是
- <filename>php.ini-recommended</filename> 默认却关闭了它,主要是出于性能的考虑。
- </simpara>
- </listitem>
- <listitem>
- <simpara>
- 不便
- </simpara>
- <simpara>
- 由于不是所有数据都需要转义,在不需要转义的地方看到转义的数据就很烦。比如说通过表单发送邮件,结果看到一大堆的 \'。针对这个问题,可以使用
- <function>stripslashes</function> 函数处理。
- </simpara>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1 xml:id="security.magicquotes.disabling">
- <title>关闭魔术引号</title>
- <para>
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>
- 指令只能在系统级关闭,不能在运行时。也就是说不能用
- <function>ini_set</function>。
- </para>
- <para>
- <example>
- <title>在服务器端关闭魔术引号</title>
- <para>
- 下面是一个通过 &php.ini; 文件把这些选项设为 <literal>Off</literal>
- 的范例。更多信息请参见本手册的<link
- linkend="configuration.changes">怎样修改配置设定</link>。
- </para>
- <screen>
-<![CDATA[
-; Magic quotes
-;
-
-; Magic quotes for incoming GET/POST/Cookie data.
-magic_quotes_gpc = Off
-
-; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
-magic_quotes_runtime = Off
-
-; Use Sybase-style magic quotes (escape ' with '' instead of \').
-magic_quotes_sybase = Off
-]]>
- </screen>
- <para>
- 如果不能修改服务器端的配置文件,使用
- <filename>.htaccess</filename> 也可以。范例如下:
- </para>
- <screen>
-<![CDATA[
-php_flag magic_quotes_gpc Off
-]]>
- </screen>
- </example>
- </para>
- <para>
- 为了能写出移植性较强的代码(可以运行于任何环境),例如不能修改服务器配置的情况,下面的例子可以在运行时关闭
- <link linkend="ini.magic-quotes-gpc">magic_quotes_gpc</link>。但是这样做比较低效,适当的修改配置才是更好的办法。
- </para>
- <para>
- <example>
- <title>在运行时关闭魔术引号</title>
- <programlisting role="php">
-<![CDATA[
-<?php
-if (get_magic_quotes_gpc()) {
- function stripslashes_deep($value)
- {
- $value = is_array($value) ?
- array_map('stripslashes_deep', $value) :
- stripslashes($value);
-
- return $value;
- }
-
- $_POST = array_map('stripslashes_deep', $_POST);
- $_GET = array_map('stripslashes_deep', $_GET);
- $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
- $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
-}
-?>
-]]>
- </programlisting>
- </example>
- </para>
- </sect1>
-
-</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
--->