服务器端用 mysql_real_escape_string 清洁客户端数据
在服务器端清洁客户端数据是每个程序员经常要做的工作,虽然我们通常会在客户端添加 Javascript 验证,但是,恶意用户很容易自己构造 FORM 提交数据以绕过客户端验证,另外,在客户端禁用 Javascript 时验证同样不能起到作用。因此,服务器端清洁数据必不可少,本文介绍的是用 mysql_real_escape_string 清洁数据的方法,经过清洁的数据可以直接插入到数据库中。
由于 mysql_real_escape_string 需要 MySQL 数据库连接,因此,在调用 mysql_real_escape_string 之前,必须连接上 MySQL 数据库。
PHP:
1 <?php
2 // 说明:用 array_map() 调用 mysql_real_escape_string 清理数组
3 // 整理:http://www.codebit.cn
4 function mysqlClean($data)
5 {
6 return (is_array($data))?array_map('mysqlClean', $data):mysql_real_escape_string($data);
7 }
8 ?>
调用方法
PHP:
1 <?php
2 $conn = mysql_connect('localhost', 'user', 'pass');
3
4
5 $_POST = mysqlClean($_POST);
6 ?>
经过清洁的数据可以直接插入数据库。
注意!mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
由于 mysql_real_escape_string 需要 MySQL 数据库连接,因此,在调用 mysql_real_escape_string 之前,必须连接上 MySQL 数据库。
在知道数据类型为字符串时,我们可以在清洁数据的同时限制字符串长度。此方法来自 David Lane, Hugh E. Williams《Web Database Application with PHP and MySQL 》(O'Reilly, May 2004)
PHP:
1 <?php
2 // 说明:用 mysql_real_escape_string 清洁并限制字符长度
3 // 整理:http://www.codebit.cn
4 function mysqlClean($array, $index, $maxlength)
5 {
6 if (isset($array[$index]))
7 {
8 $input = substr($array["{$index}"], 0, $maxlength);
9 $input = mysql_real_escape_string($input);
10 return ($input);
11 }
12 return NULL;
13 }
14 ?>
调用方法:
PHP:
1 <?php
2 $conn = mysql_connect('localhost', 'user', 'pass');
3
4 if(isset($_POST['username']))
5 {
6 $_POST['username'] = mysqlClean($_POST, 'username', 20);
7 echo $_POST['username'];
8 }
9 ?>
将 $_POST 数组中的 'username' 清洁并截取前20位字符。
摘自:http://www.cnblogs.com/labs
在服务器端清洁客户端数据是每个程序员经常要做的工作,虽然我们通常会在客户端添加 Javascript 验证,但是,恶意用户很容易自己构造 FORM 提交数据以绕过客户端验证,另外,在客户端禁用 Javascript 时验证同样不能起到作用。因此,服务器端清洁数据必不可少,本文介绍的是用 mysql_real_escape_string 清洁数据的方法,经过清洁的数据可以直接插入到数据库中。
由于 mysql_real_escape_string 需要 MySQL 数据库连接,因此,在调用 mysql_real_escape_string 之前,必须连接上 MySQL 数据库。
PHP:
1 <?php
2 // 说明:用 array_map() 调用 mysql_real_escape_string 清理数组
3 // 整理:http://www.codebit.cn
4 function mysqlClean($data)
5 {
6 return (is_array($data))?array_map('mysqlClean', $data):mysql_real_escape_string($data);
7 }
8 ?>
调用方法
PHP:
1 <?php
2 $conn = mysql_connect('localhost', 'user', 'pass');
3
4
5 $_POST = mysqlClean($_POST);
6 ?>
经过清洁的数据可以直接插入数据库。
注意!mysql_real_escape_string 必须在(PHP 4 >= 4.3.0, PHP 5)的情况下才能使用。否则只能用 mysql_escape_string ,两者的区别是:
mysql_real_escape_string 考虑到连接的当前字符集,而mysql_escape_string 不考虑。
由于 mysql_real_escape_string 需要 MySQL 数据库连接,因此,在调用 mysql_real_escape_string 之前,必须连接上 MySQL 数据库。
在知道数据类型为字符串时,我们可以在清洁数据的同时限制字符串长度。此方法来自 David Lane, Hugh E. Williams《Web Database Application with PHP and MySQL 》(O'Reilly, May 2004)
PHP:
1 <?php
2 // 说明:用 mysql_real_escape_string 清洁并限制字符长度
3 // 整理:http://www.codebit.cn
4 function mysqlClean($array, $index, $maxlength)
5 {
6 if (isset($array[$index]))
7 {
8 $input = substr($array["{$index}"], 0, $maxlength);
9 $input = mysql_real_escape_string($input);
10 return ($input);
11 }
12 return NULL;
13 }
14 ?>
调用方法:
PHP:
1 <?php
2 $conn = mysql_connect('localhost', 'user', 'pass');
3
4 if(isset($_POST['username']))
5 {
6 $_POST['username'] = mysqlClean($_POST, 'username', 20);
7 echo $_POST['username'];
8 }
9 ?>
将 $_POST 数组中的 'username' 清洁并截取前20位字符。
摘自:http://www.cnblogs.com/labs