1G全能免费空间 | 2GB免费全能空间 | 1G免费全能空间 | 免费试用云服务器 | 国内1G免费空间 | 免费空间 | 免费空间申请
您的位置:首页 > 免费教程

关于智能建站套餐模板程序SQL语句报错解决方法

作者:免费空间 发布时间:2016-10-22 [手机版]

最近有客户反应网站访问不了了,经检查发现是网站程序报SQL语句错误,错误代码如下:

Database error: Invalid SQL: select * from ew_cp_con_cn where userid=\\\\\'1\\\\\' and menuid=\\\\\'\\\\\' order by limit 0,10MySQL Error: 0 (db68441)Session halted.

因为这个是老产品上家已经停止售后,所以无法联系到上家进行处理,只能我们自己研究。SQL语句报错,第一时间想到的就是检查程序代码,但由于程序核心部分全部加密所以这条路是走不通的,只能另想其他的办法。经过一帆研究后发现此错误为PHP环境配置导致的,需要将php.ini中的全局变量打开,也就是将“register_globals = Off”修改为“register_globals = On”。这个是因为智能建站模板程序是基于PHP4环境下开发的,在变量参数接收时与现在的PHP5有一些不一样,这也是PHP版本的一个兼容性问题,以下引用网上资料说明:

当register_globals=Off的时候,下一个程序接收的时候应该用$_GET['user_name']和$_GET['user_pass']来接受传递过来的值。(注:当<form>;的method属性为post的时候应该用$_POST['user_name']和$_POST['user_pass'])

当register_globals=On的时候,下一个程序可以直接使用$user_name和$user_pass来接受值。

但如果在生产环境中将“register_globals = Off”修改为“register_globals = On”的话又会对服务器产生安全隐患,所以我们需要想其他办法来解决这个问题。最后找到一种方法,通过程序来模拟全局变量的控制。首先我们需要找到一个全局的配置文件,如智能建站模板程序中的db.php,然后在里面加入如下代码:

<?phpif ( !ini_get(\\\\\'register_globals\\\\\') ){    extract($_POST);    extract($_GET);    extract($_SERVER);    extract($_FILES);    extract($_ENV);    extract($_COOKIE);    if ( isset($_SESSION) ){        extract($_SESSION);    }}?>;


这种方法经过测试几乎完全可用,但不排除会出现其他并发问题。


补充:

经过测试,目前发现用此方法会获取不到session或者cookie的值。会影响使用智能建站套餐多语言模板程序用户,问题表现:当网站默认语言为中文(英文)时,在访问网站过程中切换成英文(中文),再访问其他栏目又会回到以默认语言显示。为解决此问题,所以现在依然将成都网通90服务器上的php.ini全局变量配置修改为register_globals = On


文章来源于免费空间申请

相关推荐
免费空间声明:
(一) 由于各方面情况的调整与变化,本网所提供的考试信息仅供参考,敬请以权威部门公布的正式信息为准。
(二) 本网注明来源为其他媒体的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如有内容、版权等问题请在30日内与本网联系。联系方式:邮件 jiansou123@126.com
最近更新
-->
网站地图 | XML地图 | 手机版
版权所有 © 2005-2022 www.128sj.com 免费空间 All Rights Reserved
本网站所有信息全是来源于互联网,如有侵权请来电咨询! 粤ICP备16040413号-1