Codeigniter电商项目注册提交后如何将URL改为站点根地址
解决CodeIgniter注册提交后地址栏不变的方案
你当前的实现是在signup方法处理完注册逻辑后,直接调用$this->home()加载首页视图,这属于同一次HTTP请求的内部处理,浏览器地址栏不会发生变化,同时还存在刷新页面重复提交表单的风险。按照以下步骤修改即可实现需求:
步骤1:配置基础地址与加载URL助手
首先打开application/config/config.php,配置你的站点根地址:
$config['base_url'] = 'http://localhost:8080/codignitor_projects/shophere/';
然后打开application/config/autoload.php,自动加载URL助手(也可以在控制器方法内手动加载,自动加载更便捷):
$autoload['helper'] = array('url');
步骤2:修改注册成功后的处理逻辑
将signup方法中注册成功后调用$this->home()的逻辑,替换为重定向到站点根地址。redirect方法会返回302重定向响应,浏览器会主动向目标地址发起新的GET请求,此时地址栏就会更新为站点根地址,同时也能避免用户刷新页面重复提交注册表单的问题:
if($this->register_model->register_user($username,$password,$email)){ // 替换原来的 $this->home(); redirect(base_url()); }else{ $this->index(); }
可选优化:添加注册成功提示
如果需要在首页展示注册成功的提示,可以配合会话闪存数据实现:
// 重定向前设置闪存数据,闪存数据只会在下次请求中生效,之后自动清除 $this->session->set_flashdata('success_msg', '注册成功,欢迎光临!'); redirect(base_url());
在首页视图对应位置读取闪存数据展示即可:
<?php if($this->session->flashdata('success_msg')): ?> <div class="alert alert-success"><?= $this->session->flashdata('success_msg') ?></div> <?php endif; ?>
内容的提问来源于stack exchange,提问作者Daniyal Saghir
相关产品推荐
相关产品推荐

