Rumah > pembangunan bahagian belakang > tutorial php > thinkphp的项目 后台登录问题,怪事

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-23 13:48:12
asal
1478 orang telah melayarinya

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

$this->display('login');
Salin selepas log masuk

本地:接着就执行这个函数:
    public function login() {
Salin selepas log masuk

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


回复讨论(解决方案)

恐怕不是这个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() {				
Salin selepas log masuk


我跟踪到!empty($_SESSION[C('SESSION_ADMIN_NAME')])是true, !empty($_SESSION[C('SESSION_ADMIN_ID')])也是true,结果本地、虚拟空间都有执行到语句:
 $this->display('login');
Salin selepas log masuk

说错了,应该是!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");                             }... ...
Salin selepas log masuk

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

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



谢谢回复,点击登录之后 页面跳转到 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');    }
Salin selepas log masuk

这个 $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');    }
Salin selepas log masuk


跟踪到这段代码了,确实执行到了 $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'];?>
Salin selepas log masuk
Salin selepas log masuk

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

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

<?phpsession_start();if(empty($_SESSION['time'])){ $_SESSION['time'] = time();}echo $_SESSION['time'];?>
Salin selepas log masuk
Salin selepas log masuk

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



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

<?phpecho $_SESSION[C('SESSION_ADMIN_NAME') ? $_SESSION[C('SESSION_ADMIN_NAME') : "NULL";?>
Salin selepas log masuk
Salin selepas log masuk

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

<?phpecho $_SESSION[C('SESSION_ADMIN_NAME') ? $_SESSION[C('SESSION_ADMIN_NAME') : "NULL";?>
Salin selepas log masuk
Salin selepas log masuk

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



两个环境下都输出NULL,真搞不懂为什么就。。。?
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan