CodeIgniter中实现先跳转到指定链接再重定向至主站的问题
在CodeIgniter中实现先重定向到指定链接再跳转主站的方案
首先得提一下你当前代码里的一个小问题:redirect($link,'refresh');之后的$data['list']=$_POST;永远不会执行,因为CodeIgniter的redirect()函数会发送HTTP重定向头,然后直接终止脚本运行,所以那行代码完全是无效的,建议删掉它。
回到你的需求:先跳转到generate_prn的链接,之后再跳转主网站。这里有两种最常用的实现方式,看你具体需求选:
方案一:在目标页面完成逻辑后直接重定向(无停留)
这是最直接的方案,既然你已经重定向到generate_prn/cin/xxx这个地址了,那就在这个地址对应的控制器方法里,完成你的PRN生成逻辑后,直接再加一次重定向到主站就行。
假设你的generate_prn对应的控制器是Generate_prn.php,处理cin参数的方法大概是这样:
class Generate_prn extends CI_Controller { public function __construct() { parent::__construct(); // 加载需要的模型、库等 $this->load->model('prn_model'); $this->load->library('session'); } public function cin($cin = null) { // 先处理你的PRN生成逻辑,比如根据传入的cin生成对应的PRN if ($cin) { $generated_prn = $this->prn_model->create_prn($cin); // 可以把生成的PRN存到session里,方便后续使用 $this->session->set_userdata('latest_prn', $generated_prn); } // 逻辑完成后,直接重定向到主网站 // base_url()是CodeIgniter的全局函数,返回你配置的主站根URL redirect(base_url(), 'refresh'); } }
这样用户的浏览器会先跳转到generate_prn/cin/xxx,控制器处理完逻辑后,立刻再跳转到主站,整个过程是自动的。
方案二:让中间页面停留后自动跳转(适合需要展示结果的场景)
如果你希望用户能看到PRN生成的结果,停留几秒后再跳转到主站,那可以在generate_prn的视图里添加HTML自动跳转的代码。
比如在你的cin_view.php视图文件中:
<div class="prn-result"> <h3>PRN生成成功!</h3> <p>你的PRN编号:<?php echo $generated_prn; ?></p> </div> <!-- 设置5秒后自动跳转到主站,数字可以根据需要调整 --> <meta http-equiv="refresh" content="5;url=<?php echo base_url(); ?>"> <p>页面将在5秒后自动返回首页,若未跳转请<a href="<?php echo base_url(); ?>">点击这里</a></p>
对应的控制器方法里,只需要把生成的PRN传递给视图,不用再加redirect:
public function cin($cin = null) { $data['generated_prn'] = ''; if ($cin) { $data['generated_prn'] = $this->prn_model->create_prn($cin); $this->session->set_userdata('latest_prn', $data['generated_prn']); } // 加载视图展示结果,视图里的meta标签会自动处理跳转 $this->load->view('cin_view', $data); }
额外建议
- 尽量用CodeIgniter提供的函数来处理URL,比如
base_url()或者site_url(),不要硬写URL,这样后续修改配置更方便。 - 处理POST数据时,你已经在用
$this->input->post()了,这比直接用$_POST更安全,继续保持~
内容的提问来源于stack exchange,提问作者webdev
相关产品推荐
相关产品推荐

