ft2k 发表于 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');   
    }
=================
如何防止后退刷新重新提交登录信息,还有还有,这样设置登录标志对不对?

Hex 发表于 2012-2-8 11:05:53

什么是后退刷新重新提交登陆信息?重新提交了又会怎么样呢?

ft2k 发表于 2012-2-8 14:31:37

本帖最后由 ft2k 于 2012-2-8 14:39 编辑

Hex 发表于 2012-2-8 11:05 http://codeigniter.org.cn/forums/static/image/common/back.gif
什么是后退刷新重新提交登陆信息?重新提交了又会怎么样呢?

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

geomen 发表于 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/');之类的

ft2k 发表于 2012-2-8 16:16:27

本帖最后由 ft2k 于 2012-2-8 16:18 编辑

geomen 发表于 2012-2-8 16:02 http://codeigniter.org.cn/forums/static/image/common/back.gif
//登出
if($this->uri->segment(3)=='login_out')
$this->session->unset_userdata('work_login');


:victory:不行!难道CI自己就不行;
我加了一个随机数SESSION可以了,不知道SESSION能不能被破了。

Hex 发表于 2012-2-8 17:28:04

ft2k 发表于 2012-2-8 14:31 static/image/common/back.gif
就是退出了之后点击后退按钮,然后刷新页面,将弹出对话框:
"要再次显示该网页IE需要重新发送您以前提交 ...

你这个问题很简单。。。就是重复提交表单。
你在登陆成功后用一个 redirect() 就可以了,用户就无法后退了。
这个东西和 CI 没什么关系,你用 PHP 做也会有这个问题。

ft2k 发表于 2012-2-9 08:35:17

本帖最后由 ft2k 于 2012-2-9 08:45 编辑

Hex 发表于 2012-2-8 17:28 http://codeigniter.org.cn/forums/static/image/common/back.gif
你这个问题很简单。。。就是重复提交表单。
你在登陆成功后用一个 redirect() 就可以了,用户就无法后退 ...

在控制器里怎么redirect()到本函数?{:soso_e145:}header、懂了,就是把input刷掉。学习了。

oemwang 发表于 2012-2-9 17:47:23

学习啦!

大道达人 发表于 2012-2-21 23:07:54

redirect-after-post模式,这是一种成熟的控制表单提交的模式

justdoit 发表于 2012-3-1 22:38:45

看看redirect函数。
页: [1] 2
查看完整版本: 登录=》登出=》后退=》刷新|再次被登录