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 页面编码声明方法详解(header或meta)
Mar 12 PHP
php flv视频时间获取函数
Jun 29 PHP
深入了解PHP类Class的概念
Jun 14 PHP
页面乱码问题的根源及其分析
Aug 09 PHP
php二维数组转成字符串示例
Feb 17 PHP
体育彩票排列三组选三算法分享
Mar 07 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 PHP
ThinkPHP入口文件设置及相关注意事项分析
Dec 05 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
php使用ffmpeg获取视频信息并截图的实现方法
May 03 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 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
Zerg基本策略
2020/03/14 星际争霸
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
php中定义网站根目录的常用方法
2010/08/08 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
基于thinkPHP框架实现留言板的方法
2016/10/17 PHP
总结PHP内存释放以及垃圾回收
2018/03/29 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
JS 自动安装exe程序
2008/11/30 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
浅析JavaScript中的CSS属性及命名规范
2013/11/28 Javascript
js实现页面跳转重定向的几种方式
2014/05/29 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
前端性能优化及技巧
2016/05/06 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
python如何爬取个性签名
2018/06/19 Python
使用Python更换外网IP的方法
2018/07/09 Python
python 多线程重启方法
2019/02/18 Python
keras 多gpu并行运行案例
2020/06/10 Python
django 装饰器 检测登录状态操作
2020/07/02 Python
行政工作个人的自我评价
2014/02/13 职场文书
中国梦口号
2014/06/13 职场文书
销售竞赛活动方案
2014/08/23 职场文书
社区班子对照检查材料
2014/08/27 职场文书
员工培训协议书
2014/09/15 职场文书
优秀少先队辅导员事迹材料
2014/12/24 职场文书
小学生作文评语集锦
2014/12/25 职场文书
旅游项目合作意向书
2015/05/08 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书