人人商城(分销版)1.11.7微擎原版,提示“抱歉,您无权进行该操作,请先登录!”只因为一个字母,我苦找了9个多小时。

人人商城(分销版)1.11.7微擎原版,提示“抱歉,您无权进行该操作,请先登录!”

话说,当时这个项目迁移服务器,我把项目迁移到一台windows 服务器后,用IIS部署。

前负责人只给了一个提示“需要SSL”证书,用https访问;

我安装证书后,打开页面,测试https正常,就没有再管;

后期,客服和客户一直反应“程序无法正常使用,总是提示错误信息”(如上图);

询问前负责人,他也不知道啥情况(咱不往消极方面脑补);

通过测试发现,只要打开时用HTTPS 访问,是没有问题的,但是部分链接,程序给的全路径地址,用户直接点击,就会提示错误信息;

接着就放年假了;

年假期间,客户和客服还是一直反应这个问题,我就暗下决心,开工的第一件事,就是把这个问题给处理掉。

上午,处理了一些可以迅速解决的问题,

下午,14:00开始处理这个系统的提示错误信息的问题,一直到晚上22:35才处理掉,历时9个小时左右。

他的这个程序的路径是这样的:

/web/index.php?c=site&a=entry&eid=8

/web/index.php   这个是根目录的文件

c=site      这个应该是control的简写c,也就是控制器

a=entry   这个应该是action的简写a,也就是控制器下面的动作

eid=8     这个就是参数了

if($_W['os'] == 'mobile' && (!empty($_GPC['i']) || !empty($_SERVER['QUERY_STRING']))) {
	header('Location: ./app/index.php?' . $_SERVER['QUERY_STRING']);
} else {
	header('Location: ./web/index.php?' . $_SERVER['QUERY_STRING']);

根据根目录的 index.php提供的代码,我在 \web\web\source\site 这个文件夹下面找到了“entry.ctrl.php”文件。

php断点语句,调试的几种方法

https://blog.csdn.net/cplvfx/article/details/83826917

通过测试发现,程序的逻辑判断就在这个“entry.ctrl.php”文件里;

if(!is_error($site)) {
	//echo("if[is_error(site)]<br>");
	$sysmodule = system_modules();
	if(in_array($m, $sysmodule)) { 
		$site_urls = $site->getTabUrls();
	}
	$method = 'doWeb' . ucfirst($entry['do']);
	//var_dump($method);
	exit($site->$method());
}

问题的关键就在这段代码里,变量$site和$method;这2个变量存在这程序的跳转

接着就找到了“web\addons\ewei_shop\site.php”文件里的这行代码

//订单管理  
    public function doWebOrder(){ $this->_exec(__FUNCTION__,'list'); }

到这里,我就把路给走死了,不知道接下来程序去哪里了;

我就在这里目录和这个页面代码里继续找突破口,我在“\web\addons\ewei_shop\template\web\_menu.html”这个模板文件里找到了a链接的地址是这样的

<li><a href="{php echo $this->createWebUrl('order', array('op' => 'display'))}">全部订单</a></li>

重点是“createWebUrl()“这个方法,

在”web\addons\ewei_shop\site.php“这个文件里代码找了这一句

require_once IA_ROOT. '/addons/ewei_shop/version.php';
require_once IA_ROOT. '/addons/ewei_shop/defines.php';
require_once EWEI_SHOP_INC.'functions.php'; 
require_once EWEI_SHOP_INC.'core.php';
require_once EWEI_SHOP_INC.'plugin/plugin.php';
require_once EWEI_SHOP_INC.'plugin/plugin_model.php';
class Ewei_shopModuleSite extends Core { 

然后根据对 ”IA_ROOT“和”EWEI_SHOP_INC“的猜测找到了这个类继承的 Core类

”\web\addons\ewei_shop\core\inc\core.php“

在这个页面搜索“createWebUrl()“这个方法,

	public function createWebUrl($do, $query = array())
	{
		global $_W;
		 
		$do = explode('/', $do);
		if (count($do) > 1 && isset($do[1])) {
			$query = array_merge(array('p' => $do[1]), $query);
		}
		return $_W['siteroot'] . 'web/' . substr(parent::createWebUrl($do[0], $query, true), 2);
	}

重点是这个”$_W['siteroot']“和”global $_W“,我知道global是全局变量;

那么,重新,打回,从头开始找,从根目录的”index.php“看起;

require './framework/bootstrap.inc.php';

这一行代码引起了我的注意,开始找这个文件

在”\web\framework\bootstrap.inc.php“找到这个文件,

为什么要找这个文件呢?因为我猜测 用global声明的$_W变量,一定是在程序初始化的时候给赋值的。

其实,在此之前,我一直以为是在某个配置文件里;

直到我看到这个代码

$_W['siteroot'] = htmlspecialchars('http://' . $_SERVER['HTTP_HOST'] . $sitepath);

果断把”http“改成”https“后进行测试,

$_W['siteroot'] = htmlspecialchars('https://' . $_SERVER['HTTP_HOST'] . $sitepath);

卖卖批,成功了! 折腾死我了!

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值