14、addslashes在预定义字符串前添加反斜杠

阅读() @2018-01-07 22:20:17

不管是什么类型的编程语言,安全性始终是最重要的,特别是用户在提交数据的时候,如果上传了有破坏性的字符串,当这个字符串被插入到数据库中的时候,就会影响网站的正常的运行,所以非常有必要给用户提交的字符串进行转义处理。

html代码:

<form action="" method="post">
       账号:<input type="text" name="uname">
       密码:<input type="password" name="upwd">
       <input type="submit" value="提交">
</form>

php代码:

//接收上面html代码传进来的值
<?php
    $uname = $_POST[uname];
    echo $uname;
?>

如果用户输入的账号是【zymseo'】,就会出问题,因为php中的单双引号都是成对出现的,现在只有一个单引号字符,插入到数据库就会出错。

addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。

预定义字符包括:单引号、双引号、反斜杠、NULL

解决这个问题有2个方法:

1、在php环境中进行相应的配置:

打开php.ini这个文件,找到magic_quotes_gpc,如果它的值是Off,说明默认没有开启字符串自动转义,只需要修改为On即可。

2、如果购买的是虚拟空间,没有权限修改php配置环境,那么接收到用户提交的数据,在插入到数据库之前需要进行判断,如果字符串没有被转义,那么就使用php函数对其进行转义。

<?php
	/*
		addslashes() 在预定义字符串前添加反斜杠
		get_magic_quotes_gpc()   获得php.ini中是否开启自动转义
	*/
	if(!get_magic_quotes_gpc()){
		$uname = addslashes($_POST[uname]);
	}
	echo $uname;
?>

OK!

微信二维码
锐壳主机