您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程

ecshop后台登录死循环等常见问题修复

冰兰2024-12-22Ecshop商城教程已有人查阅

导读一个多星期前开始接触ecshop,突然决定要用它来做网站,于是从网上找各种手册与视频,联系官网客服,然后知道官网一共提供三种类型的服务,一种是ecshop授权,不包含任何技术支持,第二种是易开店的标准话服务

一个多星期前开始接触ecshop,突然决定要用它来做网站,于是从网上找各种手册与视频,联系官网客服,然后知道官网一共提供三种类型的服务,一种是ecshop授权,不包含任何技术支持,第二种是易开店的标准话服务,提供最通用的网店服务,以及技术支持,但是不提供,个性化的定制,第三种就是最贵的ecstore,提供个性定制。之后,我们最能接受的就是第一种。
再说ecshop的使用,看看大概的教程,知道如何安装,于是在linux和我indows下都安装了一下,我indow下的安装还算顺利,解决完一些常见问题后,就基本上能够正常使用,但在linux下,却发现后台进不去,一直跳转到登录页,但是通过拼url可以访问除了admin/index.php以外的其他页面。现在来稍稍总结下遇到的问题,如下:
1.Strict Standards: Non-static method cls_image::gd_version() should not be called statically in D:\X\ \ecshop\install\includes\lib_installer.php on line 31
解决:找到install/includes/lib_installer.php中的第31行 return cls_image::gd_version();然后在找到include/cls_image.php中的678行,发现gd_version()方法未声明静态static,所以会出错。这时候只要:
1)将function gd_version()改成static function gd_version()即可。
2)或者将install/includes/lib_installer.php中的第31行return cls_image::gd_version();改成:
$p = new cls_image();
return $p->gd_version();
2.检测环境的时候提示:是否支持 JPEG是不支持的。
解决:查看发现有libjpeg.lib库,GD2库也有,都加载了,也都正常。查看ecshop源代码发现install/includes/lib_installer.php中第100行,JPEG写成了JPG,正确的应该是:
$jpeg_enabled = ($gd_info['JPEG Support'] === true) ? $_LANG['support'] : $_LANG['not_support'];
为何说Ecshop写错了,因为我打印数组$gd_info的时候,里面的键名是:JPEG Support。而$gd_info数组里的值都是直接调用系统环境变量的。3.Strict Standards: Only variables should be passed by reference in E:\Tools\ECShop_V2.7.3_UTF8_release1106\upload\includes\cls_template.php
on line 418
第418行:
$tag_sel = array_shift(explode(' ', $tag));
解决办法
5.3以上版本的问题,应该也和配置有关 只要418行把这一句拆成两句就没有问题了 $tag_sel = array_shift(explode(' ', $tag)); 改成: $tag_arr = explode(' ', $tag); $tag_sel = array_shift($tag_arr);
(实验过,绝对可行) 因为array_shift的参数是引用传递的,5.3以上默认只能传递具体的变量,而不能通过函数返回值 4.请问出现Strict Standards: Redefining already defined constructor错误或者在后台有关于支付设置的页面都会 报一些错误,错误原因:
PHP 类,有两种构造函数,一种是跟类同名的函数,一种是 __c**truct()。从PHP5.4开始,对这两个函数出现的顺序做了严格的定义,必须是 __c**truct() 在前,同名函数在后
解决方法:
调换一下两个函数的前后位置即可。
以 includes/modules/payment/alipay.php 为例:
将下面这两个函数的位置互换一下就OK了,__c**truct()在前,alipay()在后
function alipay() {
}
function __c**truct()
{
$this->alipay();
}
5.Strict Standards: mktime(): You should be using the time() function instead in D:\wamp\ \ecshop\admin\sms_url.php on line 31
解决方法:mktime()改成time();也可以将此行代码前加@符,抑制warning 错误
原因:自从PHP5.1起,调用这个函数不传递参数,会出现一个 notice
6.是我遇到的最头疼的问题,,后台登录后,死循环于登录界面,但是通过url可以访问除了admin/index.php以外的后台管理页面,原因在于admin/init.php页面的判断,如下:
$smarty->assign('token', $_CFG['token']);
if ($_REQUEST['act'] != 'login' && $_REQUEST['act'] != 'signin' &&
$_REQUEST['act'] != 'forget_pwd' && $_REQUEST['act'] != 'reset_pwd' && $_REQUEST['act'] != 'check_order')
{
$admin_path = preg_replace('/:\d+/', '', $ecs->url()) . ADMIN_PATH;//这里的$admin_path开头是https
if (!empty($_SERVER['HTTP_REFERER']) &&
strpos(preg_replace('/:\d+/', '', $_SERVER['HTTP_REFERER']), $admin_path) === false)//而$_SERVER['HTTP_REFERER']的开头是http,所以回找不到,所以执行else ,又跳转到login { if (!empty($_REQUEST['is_ajax'])) { make_json_error($_LANG['priv_error']); } else { ecs_header("Location: privilege.php?act=login\n"); } exit; } }
解决办法:将以上代码
$admin_path = preg_replace('/:\d+/', '', $ecs->url()) . ADMIN_PATH;
改为:
$admin_path1 = preg_replace('/:\d+/', '', $ecs->url()) . ADMIN_PATH;
$amin_path=str_replace("https","http",$admin_path1);
而为什么回出现这样的结果呢???
因为在include/cls_ecshop.php中,有这样的代码:
function http()
{
return (isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS']) != 'off')) ? 'https://' : 'http://';
}
function get_domain()
{
/* 协议 */
$protocol = $this->http();
/* 域名或IP地址 */
if (isset($_SERVER['HTTP_X_FORWARDED_HOST']))
{
$host = $_SERVER['HTTP_X_FORWARDED_HOST'];
}
elseif (isset($_SERVER['HTTP_HOST']))
{
$host = $_SERVER['HTTP_HOST'];
}
else
{
/* 端口 */
if (isset($_SERVER['SERVER_PORT']))
{
$port = ':' . $_SERVER['SERVER_PORT'];
if ((':80' == $port && 'http://' == $protocol) || (':443' == $port && 'https://' == $protocol))
{
$port = '';
}
}
else
{
$port = '';
}
if (isset($_SERVER['SERVER_NAME']))
{
$host = $_SERVER['SERVER_NAME'] . $port;
}
elseif (isset($_SERVER['SERVER_ADDR']))
{
$host = $_SERVER['SERVER_ADDR'] . $port;
}
}
return $protocol . $host;
}
function url()
{
$curr = strpos(PHP_SELF, ADMIN_PATH . '/') !== false ?
preg_replace('/(.*)(' . ADMIN_PATH . ')(\/?)(.)*/i', '\1', dirname(PHP_SELF)) :
dirname(PHP_SELF);
$root = str_replace('\\', '/', $curr);
if (substr($root, -1) != '/')
{
$root .= '/';
}
return $this->get_domain() . $root;
}
而在admin/include/init.d.php中有这样的代码:
$admin_path = preg_replace('/:\d+/', '', $ecs->url()) . ADMIN_PATH;
而问题在于window下没有问题,而linux下有问题,,在windows下打印$_SERVRE不存在$_SERVER['HTTPS']这一项,而在linux下打印,$_SERVER['HTTPS']=“”,,
所以这就这问题的根源在,可是为什么在linux下会出现$_SERVER['HTTPS']这一项呢?

本文标签:

很赞哦! ()

相关源码

  • (PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码
  • (自适应)餐具英文外贸生活用品带下载功能网站模板免费下载为餐具及生活用品外贸企业打造的响应式网站模板,基于PbootCMS内核开发。突出产品展示与多语言支持特性,通过自适应设计确保更好客户在手机、平板、电脑等设备上获得一致浏览体验。查看源码
  • 帝国cms7.5奇闻异事末解之谜模板免费下载带数据本模板基于帝国CMS7.5系统开发,为神秘现象、未解之谜类主题网站设计。包含完整的PC端、移动端及百度MIP站同步生成功能,内置火车头采集规则模块,可快速采集目标站内容资源。整体设计风格神秘大气,符合主题定位。查看源码
  • (自适应)宽屏大气的净水器智能电子设备网站pbootcms源码下载本模板基于PbootCMS内核开发,为净水器设备、智能电子设备企业量身打造,采用响应式设计技术,可快速构建专业级企业官网。通过本模板可高效展示产品技术参数、解决方案及企业服务优势。查看源码
  • (PC+WAP)蓝色智能环保机械设备网站营销型pbootcms模板下载本模板基于PbootCMS系统开发,为环保设备制造企业设计,特别适合展示环保机械、智能装备等产品。采用响应式技术,确保各类设备参数和技术方案在不同终端上都能清晰展示。查看源码
  • 帝国CMS7.5H5小游戏模板游戏攻略下载网整站源码本模板基于帝国CMS系统开发,为H5小游戏和APP应用资讯类网站设计。模板架构针对小游戏行业特点优化,支持游戏发布、资讯分享、应用推荐等功能,满足各类小游戏门户网站的建设需求。查看源码
分享笔记 (共有 篇笔记)
验证码:

本栏推荐