php mysql_real_escape_string函数用法与实例教程


Posted in PHP onSeptember 30, 2013

转义特殊字符在unescaped_string,考虑到当前字符的连接设置,以便它在的地方是安全的在mysql_query()它。如果二进制数据要插入,这个函数必须被使用

下列字符受影响:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

语法

mysql_real_escape_string(string,connection)
参数 描述
string 必需。规定要转义的字符串。
connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

说明

本函数将 string 中的特殊字符转义,并考虑到连接的当前字符集,因此可以安全用于 mysql_query()。

提示和注释

提示:可使用本函数来预防数据库攻击。

例子

例子 1

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
// 获得用户名和密码的代码
// 转义用户名和密码,以便在 SQL 中使用
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);
$sql = "SELECT * FROM users WHERE
user='" . $user . "' AND password='" . $pwd . "'"
// 更多代码
mysql_close($con);
?>

例子 2
数据库攻击。本例演示如果我们不对用户名和密码应用 mysql_real_escape_string() 函数会发生什么:

<?php
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }
$sql = "SELECT * FROM users
WHERE user='{$_POST['user']}'
AND password='{$_POST['pwd']}'";
mysql_query($sql);
// 不检查用户名和密码
// 可以是用户输入的任何内容,比如:
$_POST['user'] = 'john';
$_POST['pwd'] = "' OR ''='";
// 一些代码...
mysql_close($con);
?>

那么 SQL 查询会成为这样:

SELECT * FROM users
WHERE user='john' AND password='' OR ''=''这意味着任何用户无需输入合法的密码即可登陆。

例子 3
预防数据库攻击的正确做法:

<?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 相关文章推荐
谈谈PHP语法(2)
Oct 09 PHP
服务器端解压缩zip的脚本
Dec 22 PHP
php Undefined index和Undefined variable的解决方法
Mar 27 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
PHP 登录记住密码实现思路
May 07 PHP
PHP中把stdClass Object转array的几个方法
May 08 PHP
使用 PHPStorm 开发 Laravel
Mar 24 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
关于ThinkPHP中的异常处理详解
May 11 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP异常类及异常处理操作实例详解
Dec 19 PHP
PHP文件上传主要代码讲解
Sep 30 #PHP
php中利用str_pad函数生成数字递增形式的产品编号
Sep 30 #PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
Sep 30 #PHP
PHP设置一边执行一边输出结果的代码
Sep 30 #PHP
PHP file_get_contents设置超时处理方法
Sep 30 #PHP
PHP CURL CURLOPT参数说明(curl_setopt)
Sep 30 #PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 #PHP
You might like
PHP下一个非常全面获取图象信息的函数
2008/11/20 PHP
Thinkphp实现自动验证和自动完成
2015/12/19 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
thinkPHP实现的联动菜单功能详解
2017/05/05 PHP
js下通过getList函数实现分页效果的代码
2010/09/17 Javascript
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
js替代copy(示例代码)
2013/11/27 Javascript
用JavaScript实现类似于ListBox功能示例代码
2014/03/09 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
JS+CSS实现仿触屏手机拨号盘界面及功能模拟完整实例
2015/05/16 Javascript
微信小程序 绘图之饼图实现
2016/10/24 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
Vue.js 实现微信公众号菜单编辑器功能(一)
2018/05/08 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python实现二分查找算法
2017/09/21 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python去除字符串前后空格的几种方法
2019/03/04 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python利用7z批量解压rar的实现
2019/08/07 Python
python 五子棋如何获得鼠标点击坐标
2019/11/04 Python
解决Python二维数组赋值问题
2019/11/28 Python
九年级体育教学反思
2014/01/23 职场文书
家长会学生演讲稿
2014/04/26 职场文书
工程索赔意向书
2014/08/30 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
财务出纳岗位职责
2015/03/31 职场文书
教师节主题班会方案
2015/08/17 职场文书
初中英语教学反思范文
2016/02/15 职场文书
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python
Python使用永中文档转换服务
2022/05/06 Python