zoukankan      html  css  js  c++  java
  • 【转载】关于get_magic_quotes_gpc()函数

    原文地址

    在PHP中get_magic_quotes_gpc()函数是内置的函数,这个函数的作用就是得到php.ini设置中magic_quotes_gpc选项的值。

    那么就先说一下magic_quotes_gpc选项:

    如果magic_quotes_gpc=On,PHP解析器就会自动为post、get、cookie过来的数据增加转义字符“”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误。

    在magic_quotes_gpc=On的情况下,如果输入的数据有

    单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被加上反斜线。这些转义是必须的,如果这个选项为off,那么我们就必须调用addslashes这个函数来为字符串增加转义。

    正是因为这个选项必须为On,但是又让用户进行配置的矛盾,在PHP6中删除了这个选项,一切的编程都需要在magic_quotes_gpc=Off下进行了。在这样的环境下如果不对用户的数据进行转义,后果不仅仅是程序错误而已了。同样的会引起数据库被注入攻击的危险。所以从现在开始大家都不要再依赖这个设置为On了,以免有一天你的服务器需要更新到PHP6而导致你的程序不能正常工作。

    当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就会返回1

    当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就会返回0

    因此可以看出这个get_magic_quotes_gpc()函数的作用就是得到环境变量magic_quotes_gpc的值。既然在PHP6中删除了magic_quotes_gpc这个选项,那么在PHP6中这个函数我想也已经不复存在了。

     ----------------------------以上为转载内容,以下为笔记---------------------------------------------

    注:ini_get("magic_quotes_gpc")=="1"同样是判断此变量是否开启的方法。

    如果未开启,可以用addslashes()方法添加反斜线进行转义。

    如果已经开启,要获取原来字符串的本样,可以使用stripslashes()方法,把反斜线删除。

    与之对应的数据库中的防止数据库被攻击的函数还有mysql_real_escape_string()。

    mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

    下列字符受影响:

    • x00
    • '
    • "
    • x1a

    如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

    使用方法如下(示例及解释来自W3School):

    <?php
    $con = mysql_connect("localhost", "hello", "321");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());
      }
    
    // 获得用户名和密码的代码
    
    // 转义用户名和密码,以便在 SQL 中使用
    $user = mysql_real_escape_string($user);
    $pwd = mysql_real_escape_string($pwd);
    
    $sql = "SELECT * FROM users WHERE
    user='" . $user . "' AND password='" . $pwd . "'"
    
    // 更多代码
    
    mysql_close($con);
    ?>
    

      

  • 相关阅读:
    CSS中position小解
    position
    mac默认安装postgresql, 如何让postgresql可以远程访问
    The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.0.
    active admin gem error
    psql 无法添加超级用户
    ubuntu 15.04 安装Balsamiq Mockups 3
    Rails html 写public里图片的路径
    rails c 历史命令
    undefined local variable or method `per' for []:ActiveRecord::Relation
  • 原文地址:https://www.cnblogs.com/zhanglm125/p/3600660.html
Copyright © 2011-2022 走看看