php后台登录显示ok,thinkphp的项目 后台登录问题,怪事

在本地环境与虚拟空间中,一个ThinkPHP项目遇到登录后无法进入后台的问题。虽然代码和数据库相同,但在虚拟空间中登录后并未执行预期的login函数。经过调试发现$_SESSION变量为空,导致页面陷入重定向循环。尝试清空Runtime目录和检查URL配置无果,问题依然存在。进一步的解决策略包括检查服务器的session配置和对比两个环境的输出差异。
摘要由CSDN通过智能技术生成

thinkphp的项目,碰到了一个怪事,

本地环境下点击登录后,顺利进入后台;

虚拟空间的网站,点击登录后,无法进入后台,没有报错,闪了一下仍停留在登录框;

跟踪了一下,同样是执行了以下语句:

$this->display('login');

本地:接着就执行这个函数:

public function login() {

但是在虚拟空间调试,就没有执行以上函数。同样的数据库、代码,为什么会这样呢?请指教!

回复讨论(解决方案)

恐怕不是这个login的事情呢,再上下文看看

你后台那里是不是有判断session的代码啊? 把那个去掉之后看看能不能进去

再一个你点击登录之后 页面跳转代码是什么?

public function index() { if (!empty($_SESSION[C('SESSION_ADMIN_NAME')]) && !empty($_SESSION[C('SESSION_ADMIN_ID')]) && strtolower(ACTION_NAME) != 'logout') { $this->redirect("Index/index"); } $this->display('login'); } /** * 登录判断 */ public function login() {

我跟踪到!empty($_SESSION[C('SESSION_ADMIN_NAME')])是true, !empty($_SESSION[C('SESSION_ADMIN_ID')])也是true,结果本地、虚拟空间都有执行到语句:

$this->display('login');

说错了,应该是!empty($_SESSION[C('SESSION_ADMIN_NAME')])是false, !empty($_SESSION[C('SESSION_ADMIN_ID')])也是false,就是两个SESSION都是空的

去掉!empty($_SESSION[C('SESSION_ADMIN_NAME')]) && !empty($_SESSION[C('SESSION_ADMIN_ID')]) && 语句后,

剩下:if (strtolower(ACTION_NAME) != 'logout') { $this->redirect("Index/index"); }... ...

登录页面刷新后出现:页面无法加载,此网页包含重定向循环

再一个你点击登录之后 页面跳转代码是什么?

谢谢回复,点击登录之后 页面跳转到 http://.../Login/login.htm

然后马上又跳转到http://.../Home/Login/index.htm (登录页面)

更正一下,点击登录之后 页面是先跳转到 http://.../Login/login.htm

然后马上自动跳转到 http://.../Index/index.htm

最后又马上自动跳转到http://.../Home/Login/index.htm (登录页面)

$this->display('main'); } public function main() { $this->display('center'); }

这个 $this->display('center'); ... ...

\manager\Lib\Action\Home\LoginAction.class.phppublic function logout() { session_destroy(); //cjq add $fp = fopen('./qerr1f.txt','w+'); fwrite($fp,"ok"); fclose($fp); $this->redirect('Login/index'); }

跟踪到这段代码了,确实执行到了 $this->redirect('Login/index');

但不知为何本地测试时,也执行到这句代码,却没有跳转到登录页面?

清空 Runtime 目录后再试

如果

public function logout() {

会被执行到,显然是你弄错了 url

logout 是注销!

清空 Runtime 目录后再试

如果

public function logout() {

会被执行到,显然是你弄错了 url

logout 是注销!

多谢!我也不知道为什么logout()会被执行到,三个RUNTIME目录都清空了,还是一样。

我搜索整站代码,只搜到四段调用logout()的代码,都与登录无关。

是哪里的URL搞错了呢?被这个问题搞晕了!

清空 Runtime 目录后再试

如果

public function logout() {

会被执行到,显然是你弄错了 url

logout 是注销!

多谢!我也不知道为什么logout()会被调用到,三个runtime目录都清空了,还是一样。

什么地方的url弄错了呢?我被这个问题搞晕了!

请在虚拟机上开一个测试页面:

不断刷新该测试页面看看有没有输出时间,同时查看时间是不是在变。

如果时间不断变化,你的服务器没有配置好session

请在虚拟机上开一个测试页面:

不断刷新该测试页面看看有没有输出时间,同时查看时间是不是在变。

如果时间不断变化,你的服务器没有配置好session

谢谢回复,刷新后时间一直没变化。

看看两个环境下的输出有什么区别,你这样顺藤摸瓜总能出来的

看看两个环境下的输出有什么区别,你这样顺藤摸瓜总能出来的

两个环境下都输出NULL,真搞不懂为什么就。。。?

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值