php mysql过滤特殊字符_php特殊字符过滤,html标签处理

1,magic_quotes_gpc

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

其实这个函数就是判断PHP有没有自动调用addslashes 这个函数

例子:判断是否开启magic_quotes_gpc ,如果没有开启则用stripslashes处理字符串

define('SYS_MAGICGPC', get_magic_quotes_gpc());$_POST = magic_gpc($_POST);function magic_gpc($string) {if(SYS_MAGICGPC) {if(is_array($string)) {foreach($string as $key => $val) {$string[$key] = magic_gpc($val);

}

}else{$string = stripslashes($string);

}

}return $string;

}

2,addcslashes()

定义和用法addcslashes() 函数在指定的字符前添加反斜杠。

语法addcslashes(string,characters)参数 描述

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

characters 可选。规定受 addcslashes() 影响的字符或字符范围。

提示和注释

注释:在对 0,r,n 和 t 应用 addcslashes() 时要小心。在 PHP 中,\0,\r,\n 和 \t 是预定义的转义序列。实例

例子 1在本例中,我们要向字符串中的特定字符添加反斜杠:

$str = "Hello, my name is John Adams.";

echo $str;

echo addcslashes($str,'m');

echo addcslashes($str,'J');

?>

输出:Hello, my name is John Adams.

Hello, \my na\me is John Ada\ms.

Hello, my name is \John Adams.

而函数addslashes()的使用:PHP addslashes() 函数

定义和用法addslashes() 函数在指定的预定义字符前添加反斜杠。

这些预定义字符是:

•单引号 (')

•双引号 (")

•反斜杠 (\)

•NULL语法addslashes(string)参数 描述

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

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

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

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

echo $str . " This is not safe in a database query.
";

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.

stripcslashes()和stripslashes()

他们都有对应的去除他们添加的反斜杠的方法,分别是:stripcslashes()和stripslashes()。

htmlspecialchars

替换html代码中的标签

定义和用法

htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。

预定义的字符是:

& (和号)成为 &

" (双引号)成为 "

' (单引号)成为 '

< (小于)成为 <

> (大于)成为 >

默认替换上面的几个

htmlspecialchars_decode()用法刚好和上面的相反.

strip_tags

去掉字符串中的html标签只保留文字

举例:

$str = '此处是中文';echo strip_tags($str);//结果是:此处是中文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,我需要说明的是,SQL注入是一种常见的安全漏洞,攻击者可以通过构造恶意SQL语句来获取或修改数据库中的数据,甚至控制整个网站。因此,开发者需要在编写代码时,对用户输入的数据进行过滤和验证,以避免这种漏洞的出现。 下面是一个基于PHP.Mysql,apache的SQL注入漏洞示例: ```php <?php // 从GET参数中获取用户输入的用户名和密码 $username = $_GET['username']; $password = $_GET['password']; // 将输入的密码进行MD5哈希加密 $md5_password = md5($password); // 构造SQL查询语句 $query = "SELECT * FROM users WHERE username='$username' AND password='$md5_password'"; // 执行查询 $result = mysql_query($query); // 处理查询结果 if ($row = mysql_fetch_assoc($result)) { echo "欢迎 ".$row['username']."!"; } else { echo "用户名或密码错误!"; } ?> ``` 上面的代码中,用户输入的用户名和密码直接拼接到SQL查询语句中,没有进行任何过滤和验证。这就给了攻击者利用SQL注入漏洞的机会。 攻击者可以通过构造恶意输入,比如将密码输入为`' OR '1'='1`,来使得SQL查询语句变成如下形式: ```sql SELECT * FROM users WHERE username='xxx' AND password='' OR '1'='1' ``` 这样,就会返回所有用户的信息,攻击者就可以获取到所有用户的用户名和密码。 为了修复这个漏洞,我们需要对用户输入的数据进行过滤和验证,确保其符合预期的格式和内容。比如,可以使用PHP的`mysql_real_escape_string`函数对用户输入的字符串进行转义,来避免特殊字符的影响: ```php <?php // 从GET参数中获取用户输入的用户名和密码 $username = mysql_real_escape_string($_GET['username']); $password = mysql_real_escape_string($_GET['password']); // 将输入的密码进行MD5哈希加密 $md5_password = md5($password); // 构造SQL查询语句 $query = "SELECT * FROM users WHERE username='$username' AND password='$md5_password'"; // 执行查询 $result = mysql_query($query); // 处理查询结果 if ($row = mysql_fetch_assoc($result)) { echo "欢迎 ".$row['username']."!"; } else { echo "用户名或密码错误!"; } ?> ``` 通过使用`mysql_real_escape_string`函数对用户输入的字符串进行转义,可以确保输入的特殊字符不会影响SQL查询语句的执行,从而避免SQL注入漏洞的出现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值