PHP6取消了get_magic_quotes_gpc函数



    把服务器的PHP版本升到6以后,发现系统彻底空白,猜到是PHP程序运行时出问题了,逐步调试了一下,原来get_magic_quotes_gpc函数的问题,也就是下面这段代码的地方:

    if (!get_magic_quotes_gpc())   {
    $_REQUEST = array_map( 'addslashes',   $_REQUEST);
    } 


    查了一下原来PHP6取消了magic quotes机制,那么就默认转义一下一些特殊字符来防止SQL注入吧,代码改为如下:

    if(PHP_VERSION >= 6 || !get_magic_quotes_gpc()) {
    $_REQUEST = array_map( 'addslashes', $_REQUEST);
    } 

    系统运行正常了。

     

    在Discuz里遇到了很多类似如下的代码:

    define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());

    那就改成这样吧

    define('MAGIC_QUOTES_GPC', PHP_VERSION < 6 && get_magic_quotes_gpc());

    P.S. mysql_real_escaple_string函数在php6下也遇到了问题,会导致httpd.exe出错,但从文档来看并没有找到依据,姑且用addslashes替代来解决了;有知道原因的同学烦请告知下。

    参考:現在寫 PHP6-compatible 的一些技巧



    本博客所有文章如无特别注明均为原创。
    复制或转载请以超链接形式注明转自枫芸志,原文地址《PHP6取消了get_magic_quotes_gpc函数
    标签:
    分享:

已经有5 条评论抢在你前面了~

  1. 沙发
    Unvs 2012年4月3日 上午2:05

    get_magic_quotes_gpc 这个函数,确实在各个版本中不同的用法!深夜谷歌一个关于php的问题,来到你的博客,算一种缘分,看了博主一些文章,很多地方值得学习!个人也是喜欢程序开发,近期在研究PHP,希望能互换友链,常来常往,多多指教!博主友链已加上,O(∩_∩)O~

    [回复]

    晴枫

    晴枫 回复:

    @Unvs, 不知道你的RSS订阅地址是什么,订阅一下方便看

    [回复]

    Unvs 回复:

    @晴枫, feed地址是这个:http://blog.unvs.cn/feed.asp,
    首页被我隐藏了,看来得放出来。博主,可以把我的友链描述改为:专注net技术,涉足商务领域,谢谢了。O(∩_∩)O~

    [回复]

  2. 板凳
    Firm 2012年3月27日 下午1:35

    一直还未研读PHP6。。

    [回复]

  3. 地板
    呱呱歌舞汇 2012年3月26日 下午7:41

    php还是5.2、5.3版本稳定些。

    [回复]

无觅相关文章插件,快速提升流量