Heim >php教程 >php手册 >快速掌握PHP引号转义原理

快速掌握PHP引号转义原理

WBOY
WBOYOriginal
2016-06-13 11:11:591210Durchsuche

我们在运用

PHP中有三个设置可以实现自动对’(单引号),”(双引号),(反斜线)和 NULL 字符转移。

PHP称之为魔术引号,这三项设置分别是

magic_quotes_gpc

影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。

magic_quotes_runtime

如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。

magic_quotes_sybase

如果打开的话,将会使用单引号对单引号进行PHP引号转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。

虽然方便的实现了对特殊符号的自动PHP引号转义,但是这样会使得程序效率降低,并导致程序可移植变得麻烦。在不知道服务器ini设置的情况下,还需要调用get_magic_quotes_gpc() ,get_magic_quotes_runtime() 或ini_get()来检测状态。

例如:

<ol class="dp-xml">
<li class="alt"><span><span>if (!get_magic_quotes_gpc()) {  </span></span></li>
<li>
<span>$</span><span class="attribute">lastname</span><span> = </span><span class="attribute-value">addslashes<br></span><span>($_POST['lastname']);  </span>
</li>
<li class="alt"><span>} else {  </span></li>
<li>
<span>$</span><span class="attribute">lastname</span><span> = $_POST['lastname'];  </span>
</li>
<li class="alt"><span>}   </span></li>
</ol>

因此最好关闭php的魔术引号,根据情况手动用addslashes(),stripslashes()来转义和取消PHP引号转义。可以学习discuz的做法,在配置文件中加入set_magic_quotes_runtime(0);来取消转义。


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn