Codeigniter实现处理用户登录验证后的URL跳转


Posted in PHP onJune 12, 2014

Codeigniter处理用户登录验证后URL跳转,主要涉及到了My_Controller.php页面以及登录验证模块User.php页面,具体代码如下:

My_Controller.php页面:

class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        /*判断是否登录,判断当前URL是否是auth/login*/
        if ( ! $this->tank_auth->is_logged_in()
                && ( $this->router->fetch_class() != 'auth' && $this->router->fetch_method() != 'login'))
        {
            $redirect = $this->uri->uri_string();            if ( $_SERVER['QUERY_STRING'])
            {
                $redirect .= '?' . $_SERVER['QUERY_STRING'];
            }
            /*跳转到用户登陆页面,指定Login后跳转的URL*/
            redirect('auth/login?redirect='.$redirect);
        }    
    }
}

User.php页面:

class User extends MY_Controller 
{
    function login()
    {
        if ($this->tank_auth->is_logged_in()) {                                    // logged in
            redirect('/');
        } else {
            //other codes here......
            /*判断是否有redirect信息*/
            $data['redirect'] = isset($_GET['redirect']) ? $_GET['redirect'] : '/';
            if ($this->form_validation->run()) {                                // validation ok
                if ($this->tank_auth->login(
                        $this->form_validation->set_value('login'),
                        $this->form_validation->set_value('password'),
                        $this->form_validation->set_value('remember'),
                        $data['login_by_username'],
                        $data['login_by_email'])) {                                // success
                    redirect($data['redirect']);
                } else {
                    //error handling
                }
            }
            $this->load->view("login_form")
        }
    }
/*
Note: 在login_form中需要注意,提交表单的form地址:
<?php echo form_open(site_url("/auth/login?redirect=".$redirect)); ?>
*/
}

在login_form中需要注意,提交表单的form地址为:

<?php echo form_open(site_url("/auth/login?redirect=".$redirect)); ?>
PHP 相关文章推荐
关于初学PHP时的知识积累总结
Jun 07 PHP
PHP实现的博客欢迎提示功能(很特别哦)
Jun 05 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
PHP多线程编程之管道通信实例分析
Mar 07 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
PHP实现链式操作的原理详解
Sep 16 PHP
Yii框架弹出框功能示例
Jan 07 PHP
Windows 下安装 swoole 图文教程(php)
Jun 05 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
Sep 30 PHP
PHP+JS实现的实时搜索提示功能
Mar 13 PHP
apache集成php7.3.5的详细步骤
Jun 20 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 #PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 #PHP
Codeigniter整合Tank Auth权限类库详解
Jun 12 #PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
Jun 12 #PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 #PHP
codeigniter集成ucenter1.6双向通信的解决办法
Jun 12 #PHP
使用CodeIgniter的类库做图片上传
Jun 12 #PHP
You might like
php 字符串函数收集
2010/03/29 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
2019/09/03 PHP
利用jQuery操作对象数组的实现代码
2011/04/27 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
javascript实现json页面分页实例代码
2014/02/20 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
手机端转换rem适应
2017/04/01 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
vue实现评价星星功能
2020/06/30 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
[02:44]DOTA2英雄基础教程 魅惑魔女
2014/01/07 DOTA
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
python基于Tkinter库实现简单文本编辑器实例
2015/05/05 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
Python实现excel转sqlite的方法
2017/07/17 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
使用Python自动化破解自定义字体混淆信息的方法实例
2019/02/13 Python
值得收藏的10道python 面试题
2019/04/15 Python
opencv3/C++实现视频读取、视频写入
2019/12/11 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
django queryset 去重 .distinct()说明
2020/05/19 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
芬兰汽车配件商店:Autonvaraosat24
2017/01/30 全球购物
Net Remoting把服务器端激活两种模式
2014/01/22 面试题
2014年会策划方案
2014/05/11 职场文书
求职信范文大全
2014/05/26 职场文书
2015毕业生实习工作总结
2014/12/12 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL