zoukankan      html  css  js  c++  java
  • PHP中magic_quotes_gpc和 magic_quotes_runtime区别及其反斜线转义问题

    php中关于反斜线转义:

    php中数据的魔法引用函数 magic_quotes_gpc  或 magic_quotes_runtime     
    设置为on时,当数据遇到 单引号' 和 双引号" 以及 反斜线 NULL时自动加上反斜线,进行自动转义。

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

    magic_quotes_gpc  和 magic_quotes_runtime二者的区别:
    magic_quotes_gpc

    作用范围是:WEB客户服务端;
    作用时间:请求开始的时候,例如当脚本运行时。

    magic_quotes_runtime
    此函数是该函数的别名: set_magic_quotes_runtime()
    作用范围:从文件中读取的数据或执行exec()的结果或是从SQL查询中得到的;
    作用时间:每次当脚本访问运行状态中产生的数据。

    由此我们可以看出:
    magic_quotes_gpc的设定值将会影响通过GET、POST 和 COOKIE获得的数据
    magic_quotes_runtime的设定值将会影响从文件中读取的数据或从数据库查询得到的数据

    下面是几个相关的函数:

    set_magic_quotes_runtime():
    设置magic_quotes_runtime值. 0或者false代表“关闭”.1或者true代表“打开”.默认状态是关闭的.可以通过 echo phpinfo()查看magic_quotes_runtime的当前状态。
    get_magic_quotes_gpc():
    查看magic_quotes_gpc值.0或者false代表“关闭”.1或者true代表“打开”。
    get_magic_quotes_runtime():
    查看magic_quotes_runtime值。0或者false代表“关闭”.1或者true代表“打开”。
    需要特别注意的是不存在set_magic_quotes_gpc()这个函数,就是不能在程序里面设置magic_quotes_gpc的值。

    由于两个值的设置问题,会给编程时造成部分混淆或者会多加一次转义,针对这种情况,需要在程序开始的时候进行设置和判断,或者默认配置
    这两个值都关闭。转义部分通过程序来执行。

    保证数据插入数据时正常 通常会使用 addslashes 这个来处理, 数据读出时多用 stripslashes 来去掉加的反斜杠

    php中类似的字符转换或者置取的函数
    ini_get                            获取一些配置选项的值
    addslashes                         指定的预定义字符前添加反斜杠
    stripslashes                        删除由 addslashes() 函数添加的反斜杠
    htmlspecialchars                把一些预定义的字符转换为 HTML 实体
    htmlspecialchars_decode  把一些预定义的 HTML 实体转换为字符
    html_entity_decode()        把 HTML 实体转换为字符
    htmlentities()                     把字符转换为 HTML 实体

  • 相关阅读:
    bzoj1660[Usaco2006 Nov]Bad Hair Day 乱发节*
    bzoj1624[Usaco2008 Open] Clear And Present Danger 寻宝之路*
    bzoj1617[Usaco2008 Mar]River Crossing渡河问题*
    bzoj1681[Usaco2005 Mar]Checking an Alibi 不在场的证明*
    bzoj1631[Usaco2007 Feb]Cow Party*
    bzoj1854[Scoi2010]游戏
    bzoj2338[HNOI2011]数矩形
    bzoj1096[ZJOI2007]仓库建设
    继承原理、派生重用
    面向对象三大特性——继承(含派生)
  • 原文地址:https://www.cnblogs.com/tblog/p/4656480.html
Copyright © 2011-2022 走看看