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调用MySQL的存储过程的实现代码
Aug 12 PHP
PHP 函数执行效率的小比较
Oct 17 PHP
PHP读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
PHP 自定义错误处理函数trigger_error()
Mar 26 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
Aug 01 PHP
PHP URL路由类实例
Nov 12 PHP
php基本函数汇总
Jul 09 PHP
带你了解PHP7 性能翻倍的关键
Nov 19 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
Jan 15 PHP
Memcached介绍及php-memcache扩展安装
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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
通俗易懂的php防注入代码
2010/04/07 PHP
php Hex RGB颜色值互换的使用
2013/05/10 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
常用的javascript function代码
2008/05/23 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
JS实现隔行换色的表格排序
2017/03/27 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
angular中不同的组件间传值与通信的方法
2017/11/04 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
Vue filter介绍及详细使用
2018/04/04 Javascript
webpack4 处理SCSS的方法示例
2018/09/03 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
Python中matplotlib中文乱码解决办法
2017/05/12 Python
利用Python读取txt文档的方法讲解
2018/06/23 Python
django-rest-framework解析请求参数过程详解
2019/07/18 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
解决Keras TensorFlow 混编中 trainable=False设置无效问题
2020/06/28 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
违反学校规定检讨书
2014/01/18 职场文书
庆元旦活动总结
2014/07/09 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
2015元旦标语横幅
2014/12/09 职场文书
财务工作个人总结
2015/02/27 职场文书
家长反馈意见及建议
2015/06/03 职场文书
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers