【问题标题】:Logout on Codeigniter在 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

标签: php codeigniter logout


【解决方案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'
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签