请选择 进入手机版 | 继续访问电脑版
繁体中文

巅峰霸主

 找回密码
 立即注册

QQ登录

只需一步,快速开始

[技术讨论] ecshop this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,RE...

[复制链接]
烈火大地 发表于 2018-2-6 13:01:35 | 显示全部楼层 |阅读模式

游客只能显示部分内容,请登录后查看帖子完整内容!!!注册完全免费。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
ecshop后台执行SQL查询语句时提示错误this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,REPLACE,的解决方法,这个是ecshop2.7.3升级后的一个补丁,禁止后台使用SQL查询,增强安全性。

打开 admin/sql.php  找到下面这段代码,大约44~57行:

  1.     if(!empty($_POST['sql']))
  2.     {
  3.         preg_match_all("/(SELECT)/i", $_POST['sql'],$matches);
  4.         if(isset($matches[1]) && count($matches[1])>1)
  5.         {
  6.              sys_msg("this sql more than one SELECT ");
  7.         }

  8.         if(preg_match("/(UPDATE|DELETE|TRUNCATE|ALTER|DROP|FLUSH|INSERT|REPLACE|SET|CREATE|CONCAT)/i", $_POST['sql']))
  9.         {
  10.             sys_msg("this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,REPLACE,SET,CREATE,CONCAT ");
  11.         }
  12.     }
复制代码


将这段代码注释掉,不要删除!替换为这样的:
  1. /*    if(!empty($_POST['sql']))
  2.     {
  3.         preg_match_all("/(SELECT)/i", $_POST['sql'],$matches);
  4.         if(isset($matches[1]) && count($matches[1])>1)
  5.         {
  6.              sys_msg("this sql more than one SELECT ");
  7.         }

  8.         if(preg_match("/(UPDATE|DELETE|TRUNCATE|ALTER|DROP|FLUSH|INSERT|REPLACE|SET|CREATE|CONCAT)/i", $_POST['sql']))
  9.         {
  10.             sys_msg("this sql May contain UPDATE,DELETE,TRUNCATE,ALTER,DROP,FLUSH,INSERT,REPLACE,SET,CREATE,CONCAT ");
  11.         }
  12.     }*/
复制代码


当在后台执行完SQL语句以后,我们还要把上面的代码回复为原来的样子,也就是把注释去掉,毕竟为了网站的安全,在需要的时候改回即可。
回复

使用道具 举报

QQ|小黑屋|手机版|Archiver|巅峰霸主 ( 京ICP备12023415号-2 )

声明:本站的任何信息和内容仅代表作者的立场和观点,与巅峰霸主网无关。

禁止在巅峰霸主网发布任何与《中华人民共和国法律》相抵触的言论!

GMT+8, 2018-12-15 04:10 , Processed in 1.203125 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表