符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
为了输出系统保留的字符,所以需要转义
创新互联长期为千余家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为屏山企业提供专业的网站制作、成都网站建设,屏山网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
比如双引号,一般在程序里都是有特定用处的,你非要输出,就要转义
一般直接加个反斜杠,就算转义了
php常用的转义函数:
将与、单双引号、大于和小于号化成HTML格式:htmlspecialchars
所有字符都转成HTML格式 :htmlentities()
将换行字符转成br :nl2br()
base64解码:base64_decode
base64编码:base64_encode
一般简单的能记住,记不住的查手册就可以了
在处理MySQL和GET、POST的数据时,常常要对数据的引号进行转义操作。
PHP中有三个设置可以实现自动对’(单引号),”(双引号),\(反斜线)和 NULL 字符转转。
php称之为魔术引号,这三项设置分别是
magic_quotes_gpc
影响到 HTTP 请求数据(GET,POST 和 COOKIE)。不能在运行时改变。在 PHP 中默认值为 on。
这个开启时,通过GET,POST,COOKIE传递的数据会自动被转义。
如 test.php?id=abc'de"f
echo $_GET['id']; # 会得到 abc\'de\"f
magic_quotes_gpc=On; 这个开启了,对写入数据库是没有影响的,比如 上面的$_GET['id'] 写到数据库里面,依然是 abc'de"f ,
相反,如果magic_quotes_gpc=Off; 那么字符中要带有引号(不管单引号还是双引号) ,直接写入mysql都会直接变成空白
但是,如果你将它写入文档,而非mysql。那么它将是 abc\'de\"f
magic_quotes_runtime
如果打开的话,大部份从外部来源取得数据并返回的函数,包括从数据库和文本文件,所返回的数据都会被反斜线转义。该选项可在运行的时改变,在 PHP 中的默认值为 off。
magic_quotes_sybase
如果打开的话,将会使用单引号对单引号进行转义而非反斜线。此选项会完全覆盖 magic_quotes_gpc。如果同时打开两个选项的话,单引号将会被转义成 ”。而双引号、反斜线 和 NULL 字符将不会进行转义。
我表单内容本来是:img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” /
img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” /
对策一:修改php.ini文件(修改php.ini这个方法就不说了,大家可以google下)
对策二:把转义的给取消了
第一步:找到你提交的数据比如$_POST['content'],将其改成$content=stripslashes($_POST['content']);
第二步:以后在使用$POST['content']的地方都换成$content
第三步:提交到数据库,数据库储存还是正常的:img alt=”" width=”400″ height=”300″ src=”/Upfiles/201105/images/1306657040.jpg” /读出来又成了
img alt=\”\” width=\”400\” height=\”300\” src=\”/Upfiles/201105/images/1306657040.jpg\” /(这个应该知道怎么解决了吧?要不我再罗嗦下吧)
第四步:将数据库读取的内容再用stripslashes()过滤一下。
stripslashes() 这个函数 ,删除由addslashes()函数添加的反斜杠。用于清理从数据库或 HTML 表单中取回的数据
(
PHP页面中如果不希望出现以下情况:
单引号被转义为 \'
双引号被转义为 \"
那么可以进行如下设置以防止:
在php.ini中设置:magic_quotes_gpc = Off)
总结如下:
1. 对于magic_quotes_gpc=on的情况,
我们可以不对输入和输出数据库的字符串数据作
addslashes()和stripslashes()的操作,数据也会正常显示。
如果此时你对输入的数据作了addslashes()处理,
那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。
2. 对于magic_quotes_gpc=off 的情况
必须使用addslashes()对输入数据进行处理,但并不需要使用stripslashes()格式化输出
因为addslashes()并未将反斜杠一起写入数据库,只是帮助mysql完成了sql语句的执行。
首先我们要知道,数据库都是由表构成的,当你把数据插入到其中的一个表中的时候,比如是数字呀、文字呀等等的插入的时候能正常插入,但是一旦你要插入特殊的字符,比如说插入下面这个括号里面的内容(“ABC”)到表里。如果不带引号的话ABC是能够插入进去的,但加上双引号以后,插入到表的时候,数据库会认为这对双引号是php语言里面的特殊字符,那么这对双引号就插入不进表格了,这时候只有通过转义,让数据库把这对双引号认为是和ABC三个字符一样。那就那能插入进去了。希望能对你有帮助。。
首先说明下magic-quote在PHP5.4版本中就已经废除了。详情请参考:
1. magic_quotes_gpc和magic_quotes_runtime作用
magic_quotes_gpc主要是作用是自动转义GET/POST/COOKIES请求的数据,也就是自动执行 addslashes()。magic_quotes_gpc在5.4版本之前的配置中有两个值,分别是0(关闭)和1(开启),默认配置是1(开启)。
magic_quotes_runtime主要作用是自动转移sql,为了防止恶意攻击获取数据库信息。magic_quotes_runtime在5.4版本前的配置也有两个值,分别是0(关闭)和1(开启),默认配置是0(关闭)。
2. magic_quotes_gpc和magic_quotes_runtime的应用
假设提交过来的数据分别是$datastr= 'aaa'; $datafile= implode(file('demo.txt'));第一个数据是一个字符串,第二个是读取的文件信息,但是你不知道是否安全。就可以使用get_magic_quotes_gpc()和get_magic_quotes_runtime()进行判断。
应用示例
注意:一般来说为了运行效率会将get_magic_quotes_gpc()和get_magic_quotes_runtime()设置成常量进行判断
应用示例
在PHP中,实现转义正则表达式字符的函数是:preg_quote函数。语法如下:
Stringpreg_quote(stringstr[,stringdelimiter])
Str是用来进行字符转义的正则表达式,delimiter是其他需要转义的字符。
在PHP中可以使用preg_quote函数转义一些特殊字符。
例如:
?php
$str=preg_quote(“/\d{3}(\-\d{4})/”);echo$str;?
结果:
/\\d\{3\}\-d{4}\-d{4}/
?php
$str=preg_quote(“/\d{3}(\-\d{4})/”,”3“);echo$str;?
结果:
/\\d\{\3\}\-d{4}\-d{4}/
这两个例子有什么区别呢?
就是红色区域中的“3”,在第二个例子中将“3”也转义出了。