Home > Backend Development > PHP Tutorial > thinkphp的项目 后台登录问题,怪事

thinkphp的项目 后台登录问题,怪事

WBOY
Release: 2016-06-23 13:48:12
Original
1437 people have browsed it

thinkphp的项目,碰到了一个怪事,
本地环境下点击登录后,顺利进入后台;
虚拟空间的网站,点击登录后,无法进入后台,没有报错,闪了一下仍停留在登录框;
跟踪了一下,同样是执行了以下语句:

$this->display('login');
Copy after login

本地:接着就执行这个函数:
    public function login() {
Copy after 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() {				
Copy after login


我跟踪到!empty($_SESSION[C('SESSION_ADMIN_NAME')])是true, !empty($_SESSION[C('SESSION_ADMIN_ID')])也是true,结果本地、虚拟空间都有执行到语句:
 $this->display('login');
Copy after 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");                             }... ...
Copy after login

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

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



谢谢回复,点击登录之后 页面跳转到 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');    }
Copy after login

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

\manager\Lib\Action\Home\LoginAction.class.php

public function logout() {        session_destroy();  //cjq add $fp = fopen('./qerr1f.txt','w+'); fwrite($fp,"ok"); fclose($fp);          $this->redirect('Login/index');    }
Copy after login


跟踪到这段代码了,确实执行到了 $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弄错了呢?我被这个问题搞晕了!

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

<?phpsession_start();if(empty($_SESSION['time'])){ $_SESSION['time'] = time();}echo $_SESSION['time'];?>
Copy after login
Copy after login

不断刷新该测试页面看看有没有输出时间,同时查看时间是不是在变。
如果时间不断变化,你的服务器没有配置好session

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

<?phpsession_start();if(empty($_SESSION['time'])){ $_SESSION['time'] = time();}echo $_SESSION['time'];?>
Copy after login
Copy after login

不断刷新该测试页面看看有没有输出时间,同时查看时间是不是在变。
如果时间不断变化,你的服务器没有配置好session



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

<?phpecho $_SESSION[C('SESSION_ADMIN_NAME') ? $_SESSION[C('SESSION_ADMIN_NAME') : "NULL";?>
Copy after login
Copy after login

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

<?phpecho $_SESSION[C('SESSION_ADMIN_NAME') ? $_SESSION[C('SESSION_ADMIN_NAME') : "NULL";?>
Copy after login
Copy after login

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



两个环境下都输出NULL,真搞不懂为什么就。。。?
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template