您的位置:澳门402永利com > 计算机 网络 > 函数说明,函数用法介绍

函数说明,函数用法介绍

发布时间:2019-09-25 07:36编辑:计算机 网络浏览(193)

    get_magic_quotes_gpc函数介绍

    在magic_quotes_gpc=On的情况下,假设输入的数量有

    赢得 PHP 景况变数 magic_quotes_gpc 的值,属于 PHP 系统成效。
    语法: long get_magic_quotes_gpc(void);
    返回值: 长整数
    本函数到手 PHP 情状安排的变量 magic_quotes_gpc (GPC, Get/Post/Cookie) 值。重临 0 表示关闭本成效;重回 1 表示本成效张开。

    单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)等字符都会被抬高反斜线。那些转义是必需的,借使那些选项为off,那么大家就非得调用addslashes这些函数来为字符串增添转义。

    当 magic_quotes_gpc 张开时,全部的 ‘ (单引号), ” (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。
    magic_quotes_gpc设置是不是自动为GPC(get,post,cookie)传来的数码中的’”加上反斜线。能够用get_magic_quotes_gpc()检查评定系统装置。
    若是未有张开那项设置,能够利用addslashes()函数增添,它的功效正是给数据库询问语句等的必要在好几字符前增加了反斜线。
    那些字符是单引号(’)、双引号(”)、反斜线()与 NUL(NULL 字符)。
    暗许景况下,PHP 指令 magic_quotes_gpc 为 on,它至关心珍惜固然对具备的 GET、POST 和 COOKIE 数据自动运营 addslashes()。

    辛亏因为这一个选项必须为On,不过又让客户张开配备的争论,在PHP6中删除了这些选项,一切的编制程序都亟待在magic_quotes_gpc=Off下进展了。在如此的条件下要是不对客商的数码进行转义,后果不止是前后相继不当而已了。同样的会引起数据库被注入攻击的危急。所以从明天开头大家都休想再依据那一个装置为On了,防止有一天你的服务器需求立异到PHP6而产生您的次序不能够寻常专门的学业。

    不用对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这么会导致双层转义。遭逢这种情景时方可运用函数 get_magic_quotes_gpc() 举行检查评定。

     代码如下

    当magic_quotes_gpc=On的时候,函数get_magic_quotes_gpc()就能够回去1

    利用 get_magic_quotes_gpc()预防数据库攻击的不利做法

    当magic_quotes_gpc=Off的时候,函数get_magic_quotes_gpc()就能够重临0

     代码如下

    由此能够看出那么些get_magic_quotes_gpc()函数的职能正是获得景况变量magic_quotes_gpc的值。既然在PHP6中剔除了magic_quotes_gpc这几个选项,那么在PHP6中那几个函数我想也已经破灭了。

    <?php
    function check_input($value)
    {
    // 去除斜杠
    if (get_magic_quotes_gpc())
    {
    $value = stripslashes($value);
    }
    // 假诺不是数字则加引号
    if (!is_numeric($value))
    {
    $value = “‘” . mysql_real_escape_string($value) . “‘”;
    }
    return $value;
    }
    $con = mysql_connect(“localhost”, “hello”, “321″);
    if (!$con)
    {
    die(‘Could not connect: ‘ . mysql_error());
    }
    // 实行安全的 SQL
    $user = check_input($_POST['user']);
    $pwd = check_input($_POST['pwd']);
    $sql = “SELECT * FROM users WHERE
    user=$user AND password=$pwd”;
    mysql_query($sql);
    mysql_close($con);
    ?>

    php 推断是不是开启get_magic_quotes_gpc成效了,以有益咱们是还是不是决定利用addslashes那一个函数了。

    小结如下:

     代码如下

    1. 对于magic_quotes_gpc=on的情况,

    function SQLString($c, $t){
     $c=(!get_magic_quotes_gpc())?addslashes($c):$c;
     switch($t){
      case 'text':
       $c=($c!='')?"'".$c."'":'NULL';
       break;
      case 'search':
       $c="'%%".$c."%%'";
       break;
      case 'int':
       $c=($c!='')?intval($c):'0';
       break;
     }
     return $c;
    }

    大家能够不对输入和出口数据库的字符串数据作
    addslashes()和stripslashes()的操作,数据也会寻常呈现。

    防护数据库攻击的准确做法

    尽管那时候您对输入的数码作了addslashes()处理,
    那么在输出的时候就必须使用stripslashes()去掉多余的反斜杠。

     代码如下

    1. 对于magic_quotes_gpc=off 的情况

    <?php

    不能够不选拔addslashes()对输入数据举办拍卖,但并不须求使用stripslashes()格式化输出
    因为addslashes()并未有将反斜杠一同写入数据库,只是协理mysql完毕了sql语句的实施

    function check_input($value)

    {

    // 去除斜杠

    if (get_magic_quotes_gpc())

    {

    $value = stripslashes($value);

    }

    // 假使不是数字则加引号

    if (!is_numeric($value))

    {

    $value = “‘” . mysql_real_escape_string($value) . “‘”;

    }

    return $value;

    }

    $con = mysql_connect(“localhost”, “hello”, “321″);

    if (!$con)

    {

    die(‘Could not connect: ‘ . mysql_error());

    }

    // 进行安全的 SQL

    $user = check_input($_POST['user']);

    $pwd = check_input($_POST['pwd']);

    $sql = “SELECT * FROM users WHERE

    user=$user AND password=$pwd”;

    mysql_query($sql);

    mysql_close($con);

    ?>

    本文由澳门402永利com发布于计算机 网络,转载请注明出处:函数说明,函数用法介绍

    关键词: