在 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框架获取post和get参数 CodeIgniter

在 codeigniter 中注销

[CI] 使用CodeIgniter框架搭建RESTful API服务

是“root web server”和localhost一样吗?安装CodeIgniter

codeigniter 中的注销功能

如何在登录系统中使用会话并在codeigniter中实现注销