在 Codeigniter 上注销
Posted
技术标签:
【中文标题】在 Codeigniter 上注销【英文标题】:Logout on Codeigniter 【发布时间】:2018-09-19 13:06:38 【问题描述】:我正在使用 Codeigniter,但问题是无法注销。下面是我的代码。 控制器“登录”具有注销功能。
function logout()
//session destroy
View 是 login_view 有一个带 href 的链接
<a href="logout">Logout</a>
添加如下路线
$route['logout'] = 'Login/logout';
但是,当点击链接时,它会重定向到该链接 http://localhost:8080/po/logout(po是我的目录)
请帮忙,提前谢谢。
【问题讨论】:
如果你使用anchor你不必担心url:。我从不在 codeigniter 中使用 href 【参考方案1】:Controller Function
function logout()
$this->session->sess_destroy();
redirect('user');
Menu Link
<li><a href="<?php echo base_url(); ?>user/logout">Logout</a></li>
【讨论】:
【参考方案2】:请试试这个
<a href="<?= base_url()?>logout">Logout</a>
将此添加到.htaccess
以删除index.php
RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]
【讨论】:
试过了,但还是一样。 我已经添加了完整的链接并且它现在可以工作了。我所做的是我将href添加为“localhost:8080/po/index.php/Login/logout”并且它有效。所以我的新href是 Logout 这是否意味着我的base_url错误? 你的baseurl现在是什么?如果您的应用程序位于 subdir po 中,那么它应该包含在您的 baseurl 中 我认为你的base_url
是错误的,你有一个目录 po
。所以在本地主机中,相对href并不完全正确->改为设置绝对href
RewriteEngine On RewriteCond %REQUEST_FILENAME !-f RewriteCond %REQUEST_FILENAME !-d RewriteRule ^(.*)$ index.php/$1 [L]
将此添加到.htaccess
以删除index.php
【参考方案3】:
把你的base_url改成这样
$config['base_url'] = 'http://localhost/projectName/';
创建一个新文件并粘贴以下代码并将其保存为根目录中的 .htaccess
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
这将删除 url 中的 index.php
改变锚标记如下
<a href="<?= base_url('controller/function') ?>">Logout</a>
【讨论】:
【参考方案4】:配置错误。修复它
$config['base_url']
应该是
$config['base_url'] = 'http://localhost:8080/po/';
链接应该是
<a href="<?php echo site_url('logout');?>">Logout</a>
site_url()
将比base_url()
更好地采用您的配置。 base_url 只能用于资产链接,如 CSS、JS 等。
【讨论】:
实际上,我的 base_url 在添加已删除的评论时具有“http”。我固定了一步。在索引函数中添加了检查的会话数据,它将调用注销函数并销毁会话。 这也不起作用,唯一的选择是在 href 上添加 index.php。 '注销'【参考方案5】:确保在您的 base_url 变量中定义在 config.php 中。 然后试试下面的这段代码。
<a href="<?php echo base_url . 'logout'; ?>">Logout</a>
【讨论】:
我在配置中有这个 $config['base_url'] = 'localhost:8080/po';如前所述,目录是'po'以上是关于在 Codeigniter 上注销的主要内容,如果未能解决你的问题,请参考以下文章
[CI] 使用CodeIgniter框架搭建RESTful API服务