防止访问后续页面不进行当前操作

时间:2013-05-08 23:02:33

标签: php forms codeigniter session access-control

我有一个codeigniter MVC设置,其中一个表单存在于一个页面上。

每次用户点击提交按钮时,同一个控制器都会在同一个网址http://domain.com/form下加载表单的下一部分,并使用相同的视图,但使用不同的数据(本例中的数据是表单元素) )。

目的:

1)确保下一件装的是正确的装备件。 请记住,我在相同的URL下使用相同的控制器,并且我使用相同的视图,每次需要填充新的初始化数据时使用不同的初始化数据。

2)限制用户跳转到不直接进行当前正在进行的表单

实现这一目标的最佳方法是什么?我想使用会话,我不想使用隐藏的输入元素。

1 个答案:

答案 0 :(得分:0)

可能是这样的:

// load first form data here, then: 
$data = '...';

// this is intentionally above the first form
if ($this->session->userdata('step_1') == 'done' AND is post action) {
   if(the second form is validated, then) {
       // unset the session here
       $this->session->unset_userdata('step_1');
   }
}

if ($this->session->userdata('step_1')!=='done' AND is post action ) {
    if(the first form validates here, then) {
       $this->session->set_userdata('step_1', 'done');
       // prepare the second form data here, that will override the one above:
       $data = '...';
    }
}

请注意,我暂时不使用CI,所以我真的不记得那里的所有对象名称,但你应该明白这一点。