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语法速查表
Jan 02 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
Jun 24 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
smarty实现多级分类的方法
Dec 05 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
UTF-8正则表达式如何匹配汉字
Aug 03 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
PHP实现json_decode不转义中文的方法
May 20 PHP
php中如何执行linux命令详解
Nov 06 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
PHP使用Redis实现Session共享的实现示例
May 12 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 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 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
用PHP伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
javascript下function声明一些小结
2007/12/28 Javascript
javascript 打印页面代码
2009/03/24 Javascript
jQuery:节点(插入,复制,替换,删除)操作
2013/03/04 Javascript
JavaScript中数据结构与算法(三):链表
2015/06/19 Javascript
JS HTML5拖拽上传图片预览
2016/07/18 Javascript
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
2017/03/28 NodeJs
vue项目中api接口管理总结
2018/04/20 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
python 生成不重复的随机数的代码
2011/05/15 Python
python实现每次处理一个字符的三种方法
2014/10/09 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
django query模块
2019/04/20 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python3多线程知识点总结
2019/09/26 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
匡威荷兰官方网站:Converse荷兰
2018/10/24 全球购物
学校安全教育制度
2014/01/31 职场文书
保险公司晨会主持词
2014/03/22 职场文书
财务部绩效考核方案
2014/05/04 职场文书
总经理岗位职责说明书
2014/07/30 职场文书
学前班语言教学计划
2015/01/20 职场文书
个人自荐书怎么写
2015/03/26 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
mysql主从复制的实现步骤
2021/10/24 MySQL
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL