POST、GET、COOKIE、REQUEST等全局变量编码

来源:互联网 发布:数据分析 ab测试 编辑:程序博客网 时间:2024/05/16 17:02

1--addslashes

(PHP 4, PHP 5)

addslashes — 使用反斜线引用字符串

说明:

string addslashes ( string $str )

返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是:

单引号(')、

双引号(")、

反斜线(\

NULNULL 字符)

一个使用 addslashes() 的例子是当你要往数据库中输入数据时。例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。大多数据库使用 \ 作为转义符:O\'reilly。这样可以将数据放入数据库中,而不会插入额外的 \。当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。

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

Example #1 addslashes() 例子

<?php
$str = "Is your name O'reilly?";

 // 输出:Is your name O\'reilly?

echo addslashes($str);

?>

 

2--Stripslashes()

函数删除由addslashes() 函数生成的斜杠。

语法:

stripslashes(string)

string 必需的参数,是规定要检查的字符串。

提示和注释:

该函数用于清理从数据库或html表单中取回的数据。

例一:

<?php

echo stripslashes("Who\'s John Adams?");

?>

本例输出:

Who's John Adams?

 

addslashes()

函数在指定的预定义字符前添加反斜杠。

这些预定义字符是:

单引号(‘)

双引号(“)

反斜杠(\)

NULL

语法:

addslashes(string)

参数:

String必需。规定要检查的字符串。

提示:

该函数 可用于为储存在数据库中的字符串 以及 数据库查询语句准备合适的字符串。

注释:

默认情况下,PHP 指令 magic_quotes_gpc  on,意味着插入数据库中会自动转换,对所有的GETPOST  COOKIE 数据自动运行 addslashes()。不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。遇到这种情况时可以使用函数get_magic_quotes_gpc() 进行检测。

如果get_magic_quotes_gpc0,则表示未启用,此时POST/GET/COOKIE中的敏感字符就不会自动转义,此时就调用addslashes

例二:

测试在本例中,我们要向字符串中的预定义添加反斜杠:

<?php

$str = "Who's John Adams?";

echo $str . " This is not safe in a database query.<br />";

echo addslashes($str) . " This is safe in a database query.";

?>

本例输出:

Who's John Adams? This is not safe in a database query.

Who\'s John Adams? This is safe in a database query.

 

mysql写入数据

magic_quotes_gpc = On时,系统会自动处理单引号等问题,用不用addslashes()stripslashes()都没关系,但是如果添加数据时用了addslashes(),那么显示数据时必须要stripslashes()

magic_quotes_gpc = Off时,系统不会处理单引号等问题,所以插入数据时必须要使用addslashes(),显示数据时则不需要使用stripslashes()

既然有了分析,做程序时要怎么办呢?

根据以上两种情况,可得:

不管magic_quotes_gpcOn还是Off,添加数据时都用addslashes(),当On时,必须使用stripslashes()Off时则不能用stripslashes()

如何判断On还是Off呢?用get_magic_quotes_gpc()

例三:

<?php

//$content 从数据库里读取内容

if(get_magic_quotes_gpc()){ $Content=stripslashes($Content); }

echo $Content;

?>

 

原创粉丝点击