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程序之die调试法 快速解决错误
Sep 17 PHP
PHP 巧用数组降低程序的时间复杂度
Jan 01 PHP
php采集时被封ip的解决方法
Aug 29 PHP
curl不使用文件存取cookie php使用curl获取cookie示例
Jan 26 PHP
PHP英文字母大小写转换函数小结
May 03 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 PHP
PHP也能干大事 随机函数
Apr 14 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
提高Laravel应用性能方法详解
Jun 24 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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
DOM XPATH获取img src值的query
2013/09/23 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
php 解决substr()截取中文字符乱码问题
2016/07/18 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
jquery indexOf使用方法
2013/08/19 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
基于javascript实现图片左右切换效果
2016/01/25 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
2016/09/28 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
2017/05/17 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
Python爬虫实现简单的爬取有道翻译功能示例
2018/07/13 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
如何基于python测量代码运行时间
2019/12/25 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
天猫精选:上天猫,就够了
2016/09/21 全球购物
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
C语言基础笔试题
2013/04/27 面试题
潘婷洗发水广告词
2014/03/14 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
室内设计专业毕业生求职信
2014/05/02 职场文书
学校四风对照检查材料
2014/08/28 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
政协委员个人总结
2015/03/03 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
初一数学教学反思
2016/02/17 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书