You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter视图文件内无法跳转路由问题求助

解决CodeIgniter中重定向过多的跳转问题

问题代码

<?php
$checkNotNull = checkNotNull($user_detail->user_id);
$logged_data = $this->session->userdata('logged');

if(!$checkNotNull && $logged_data['status'] == 1){
 header("location:".base_url()."accounts/kyc");
}

if (!$this->session->userdata('lang')) {
    $this->lang->load(DEFAULT_LANG, LANG_FOLDER);
} else {
    $lang_data = $this->session->userdata('lang');
    $this->lang->load($lang_data['language'] . '_lang', $lang_data['language']);
}
?>

问题分析

重定向过多的核心原因是循环跳转:当前页面的校验逻辑触发跳转到accounts/kyc,但accounts/kyc页面也执行了相同的校验逻辑,导致反复跳转,形成无限循环。

解决方案

1. 给跳转逻辑增加排除判断

在跳转前先检查当前是否已经处于accounts/kyc页面,避免循环触发:

<?php
$checkNotNull = checkNotNull($user_detail->user_id);
$logged_data = $this->session->userdata('logged');

// 获取当前控制器和方法
$current_controller = $this->router->fetch_class();
$current_method = $this->router->fetch_method();

// 仅当不在kyc页面时执行跳转
if(!$checkNotNull && $logged_data['status'] == 1 && $current_controller != 'accounts' && $current_method != 'kyc'){
    // 使用CodeIgniter内置的redirect函数,更适配框架机制
    redirect('accounts/kyc');
    exit; // 强制终止脚本,避免后续代码执行干扰跳转
}

if (!$this->session->userdata('lang')) {
    $this->lang->load(DEFAULT_LANG, LANG_FOLDER);
} else {
    $lang_data = $this->session->userdata('lang');
    $this->lang->load($lang_data['language'] . '_lang', $lang_data['language']);
}
?>

2. 清理accounts/kyc页面的重复校验

打开Accounts控制器的kyc方法,移除相同的跳转逻辑——用户已经进入KYC完善页面,无需再触发跳转到该页面的校验。

3. 验证核心逻辑准确性

  • 确认checkNotNull($user_detail->user_id)的返回逻辑:用户未完善KYC时返回false,已完善时返回true,避免逻辑写反导致错误跳转。
  • 检查$logged_data['status']的取值规则,确保1确实代表用户已登录状态,没有其他状态值混淆的情况。

4. 规范使用框架跳转函数

用CodeIgniter的redirect()替代原生header():

  • 该函数会自动处理HTTP头信息,默认会终止脚本执行(手动加exit;可进一步确保严谨性)。
  • 确保调用redirect()前没有任何输出(包括PHP标签外的空格、换行),否则会导致Header发送失败,引发异常。

额外检查

确认config/config.php中$config['base_url']已正确配置,避免因跳转路径错误引发异常。

内容的提问来源于stack exchange,提问作者DevRocks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:01:20