在帝国CMS后台总览页面中的“服务器信息”一栏中,有一个“魔术引用”状态,如下图所示:

1.开启方法

在php系统配置文件php.ini中找到magic_quotes_gpc变量,将其值设置为on即可。

网上有很多人反映找不到php.ini文件。此文件属于php的系统配置文件,它在php系统的安装目录中,而不是在帝国CMS的安装目录中,默认下是在…phpphp5文件夹中。如果你的网站系统是自己搭建的,可以直接更改这个文件。如果你使用的是其它供应商提供的虚拟主机,一般说来没有这个文件的读写权力,此变量的值是不可更改的。从下面的介绍中你可以看出此变量是php为了方便程序的编写和数据的输入而设置的一个变量,它对网站的使用和安全性并没有太大影响。

2.魔术引用简介

在php.ini文件中对magic_quotes_gpc的官方解释是: “Input data is no longer escaped with slashes so that it can be sent into SQL databases without further manipulation.Instead, you should use the functionaddslashes() on each input element you wish to send to a database.”也就是当开启魔术引用时,会对进入服务器的get/post/cookie数据做自动转换。

2.1addslashes函数

为了更深刻地了解魔术引用,先介绍php的addslashes函数。

该函数返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线()与NUL(NULL字符)。

一个使用addslashes()的例子是当你要往数据库中输入数据时。例如,将名字O'reilly插入到数据库中,这就需要对其进行转义。大多数据库使用作为转义符:O'reilly。这样可以将数据放入数据库中,而不会插入额外的。当PHP指令magic_quotes_sybase被设置成on时,意味着插入O'reilly字符串时,无需使用对’进行转义,php将自动为你进行转义。

默认情况下,PHP指令magic_quotes_gpc为on,它主要是对所有的GET、POST和COOKIE数据自动运行addslashes()。不要对已经被magic_quotes_gpc转义过的字符串使用addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数get_magic_quotes_gpc()进行检测。

例如,如下语句:

<?php

$str= "Is your nameO'reilly?";

echoaddslashes($str);

?>

将在网页上显示字符串Is your name O'reilly?

2.2魔术引用magic_quotes_gpc

当开启了魔术引用时,也就相当于系统自带对你存入数据库的字符串执行addslashes()操作。例如,当向数据库加入I'mAndroidyue时,它会自动将字符串转变为I'mandroidyue。当然了,如果我们在php文件利用诸如$name=$_REQUEST['name'];这种语句来获取字符串时,执行输出得到的结果也会是I'mandroidyue。这当然不是我们想要的结果,如果想去掉反斜杠,可以使用stripslashes()函数,此函数和addslashes()函数执行相反的操作。如$name=stripslashes($name);这样我们再执行输出时得到的会是正常的字符串I'mandroidyue。

1.《addslashes 帝国CMS的魔术引用及其开启方法》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《addslashes 帝国CMS的魔术引用及其开启方法》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/346940.html