ecshop nginx php-fpm,nginx配置下Ecshop后台登录异常的问题

环境 debian5 +

nginx 1.1.18 + php5.4 + php-fpm

http方式请求

Ecshop版本:2.7.3

UTF8

出现的问题:

安装完成后,前台显示正常,后台输入正确的用户名密码点击登录后当前页面自动刷新,并未登入后台管理系统。

解决方案:

经追踪发现

1、文件

admin/includes/init.php第329行左右

$_SERVER['HTTP_REFERER'] 以

‘http’开头, 而$admin_path 则以 ‘https’开头。

if

(!empty($_SERVER['HTTP_REFERER'])

&&strpos(preg_replace(‘/:d+/’, ”,

$_SERVER['HTTP_REFERER']),$admin_path) === false)永真,

导致登录成功后,页面仍然跳转到后台登录页也就是private.php?act=login。

而程序调用次序:$admin_path

->$ecs->url()->new cls_ecshop.php种的ECS->url()->get_domain()->http()。

所以

vim

includes/cls_ecshop.php 153行左右

修改return

(isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])

!= ‘off’)) ? ‘https://’ : ‘http://’;

为 return

(isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])

== ‘on’)) ? ‘https://’ :

‘http://’;

即可

为什么呢?

在nginx默认配置下$_SERVER['HTTPS']

= ”

所以return

(isset($_SERVER['HTTPS']) && (strtolower($_SERVER['HTTPS'])

!= ‘off’)) ? ‘https://’ : ‘http://’;为真,返回值‘https’。

从而导致在admin/includes/init.php第329行左右

if

(!empty($_SERVER['HTTP_REFERER'])

&&strpos(preg_replace(‘/:d+/’, ”,

$_SERVER['HTTP_REFERER']), $admin_path) ===

false)永真,执行ecs_header(“Location:

privilege.php?act=loginn”);

导致这种情况的原因很多,网上有很多,但是都不能解决我的问题,so,大家试试看,欢迎拍砖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值