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 相关文章推荐
深入了解php4(1)--回到未来
Oct 09 PHP
PHP之数组学习
May 29 PHP
linux实现php定时执行cron任务详解
Dec 24 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
thinkPHP框架实现图像裁剪、缩放、加水印的方法
Mar 14 PHP
php对xml文件的增删改查操作实现方法分析
May 19 PHP
php实现的双色球算法示例
Jun 20 PHP
关于PHP中协程和阻塞的一些理解与思考
Aug 11 PHP
thinkPHP5框架导出Excel文件简单操作示例
Aug 03 PHP
PHP getName()函数讲解
Feb 03 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 PHP
PHP命令行与定时任务
Apr 01 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模拟HTTP认证
2006/10/09 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
页面右下角弹出提示框示例代码js版
2013/08/02 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
理顺8个版本vue的区别(小结)
2018/09/17 Javascript
小程序实现多选框功能
2018/10/30 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
vuex存储token示例
2019/11/11 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
python保存字符串到文件的方法
2015/07/01 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
python3中celery异步框架简单使用+守护进程方式启动
2021/01/20 Python
毕业生求职自荐信怎么写
2014/01/08 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
贷款委托书范本
2014/04/08 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
个人查摆剖析材料
2014/10/04 职场文书
群众路线剖析材料(四风)
2014/11/05 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2019年浪漫婚礼证婚词
2019/06/27 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python