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自动更新新闻DIY
Oct 09 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
Jun 25 PHP
教你如何使用php session
Oct 28 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
微信公众号OAuth2.0网页授权问题浅析
Jan 21 PHP
php中的抽象方法和抽象类
Feb 14 PHP
php实现的pdo公共类定义与用法示例
Jul 19 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
PHP PDOStatement::bindParam讲解
Jan 30 PHP
laravel框架select2多选插件初始化默认选中项操作示例
Feb 18 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
zf框架db类的分页示例分享
2014/03/14 PHP
Yii框架组件和事件行为管理详解
2016/05/20 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
table对象中的insertRow与deleteRow使用示例
2014/01/26 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
js获取数组的最后一个元素
2015/04/14 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
深入浅析JavaScript中的Function类型
2016/07/09 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
vue微信分享插件使用方法详解
2020/02/18 Javascript
Python编程实现的简单Web服务器示例
2017/06/22 Python
python数据封装json格式数据
2018/03/04 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
Sofft鞋官网:世界知名鞋类品牌
2017/03/28 全球购物
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
Feelunique澳大利亚:欧洲的化妆品零售电商
2019/12/18 全球购物
2014端午节活动策划方案
2014/01/27 职场文书
毕业典礼主持词大全
2014/03/26 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
教师自查自纠材料
2014/10/14 职场文书
大学生团员个人总结
2015/02/14 职场文书
正规借条模板
2015/05/26 职场文书
诚信教育主题班会
2015/08/13 职场文书
《秦兵马俑》教学反思
2016/02/24 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
Python装饰器详细介绍
2022/03/25 Python