用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4804|回复: 10
收起左侧

登录=》登出=》后退=》刷新|再次被登录

[复制链接]
发表于 2012-2-8 08:53:37 | 显示全部楼层 |阅读模式
//登录
  if($this->input->post('login'))
  {
     //设置用户登录标志
     $this->session->set_userdata('work_login',$this->input->post('user'));
  }


  //登出
  if($this->uri->segment(3)=='login_out')$this->session->unset_userdata('work_login');


    if(!$this->session->userdata('work_login'))
   {
    //加载登录界面
    $this->load->view('work_login');
   }
  else
   {
    //加载工作界面
    $this->load->view('work_do');     
    }
=================
如何防止后退刷新重新提交登录信息,还有还有,这样设置登录标志对不对?
发表于 2012-2-8 11:05:53 | 显示全部楼层
什么是后退刷新重新提交登陆信息?重新提交了又会怎么样呢?
 楼主| 发表于 2012-2-8 14:31:37 | 显示全部楼层
本帖最后由 ft2k 于 2012-2-8 14:39 编辑
Hex 发表于 2012-2-8 11:05
什么是后退刷新重新提交登陆信息?重新提交了又会怎么样呢?


就是退出了之后点击后退按钮,然后刷新页面,将弹出对话框:
"要再次显示该网页IE需要重新发送您以前提交的信息;如果您正在交易。。。。。。"
点击是,。就登录上来了,不用输入信息了、

发表于 2012-2-8 16:02:34 | 显示全部楼层
//登出
  if($this->uri->segment(3)=='login_out')
$this->session->unset_userdata('work_login');
后面重新加载页面应该不会这样了,用header('Location: http://www.example.com/');之类的
 楼主| 发表于 2012-2-8 16:16:27 | 显示全部楼层
本帖最后由 ft2k 于 2012-2-8 16:18 编辑
geomen 发表于 2012-2-8 16:02
//登出
  if($this->uri->segment(3)=='login_out')
$this->session->unset_userdata('work_login');


不行!难道CI自己就不行;
我加了一个随机数SESSION可以了,不知道SESSION能不能被破了。
发表于 2012-2-8 17:28:04 | 显示全部楼层
ft2k 发表于 2012-2-8 14:31
就是退出了之后点击后退按钮,然后刷新页面,将弹出对话框:
"要再次显示该网页IE需要重新发送您以前提交 ...

你这个问题很简单。。。就是重复提交表单。
你在登陆成功后用一个 redirect() 就可以了,用户就无法后退了。
这个东西和 CI 没什么关系,你用 PHP 做也会有这个问题。
 楼主| 发表于 2012-2-9 08:35:17 | 显示全部楼层
本帖最后由 ft2k 于 2012-2-9 08:45 编辑
Hex 发表于 2012-2-8 17:28
你这个问题很简单。。。就是重复提交表单。
你在登陆成功后用一个 redirect() 就可以了,用户就无法后退 ...


在控制器里怎么redirect()到本函数?{:soso_e145:}header、懂了,就是把input刷掉。学习了。
发表于 2012-2-9 17:47:23 | 显示全部楼层
学习啦!
发表于 2012-2-21 23:07:54 | 显示全部楼层
redirect-after-post模式,这是一种成熟的控制表单提交的模式
发表于 2012-3-1 22:38:45 | 显示全部楼层
看看redirect函数。

本版积分规则