2011-03-20 70 views
1

您好我一直在使用坦克认证的CI,我认为这是真棒,我只是想知道是否有一种方法来改变它,所以当用户刷新登录页面登录错误后),“确认表单重新提交”弹出窗口不显示。我一直在阅读后重定向get方法,但我不想搞乱坦克认证。 ps - im pretty noobish如何删除'确认表单重新提交'坦克认证

回答

0

此'确认表单重新提交'来自您的网络浏览器,而不是来自Tank Auth。 前段时间有人编码的网络浏览器意识到重新发布是一个大问题,所以他们发出警告,停止双重发布等。

我可以想出2种方法来避免它。

1)将登录'post'设为'get'。 这是一个坏主意。因为您的密码在查询字符串中

2)在auth控制器中,在登录失败时重定向到登录表单的错误显示版本,而不是再次加载登录表单视图。

基本上你会找到一种方法来通过查询字符串或会话将错误消息传递给登录表单。重定向到该页面。坦克验证使用语言键来处理错误很容易。

我只是试过它作为查询字符串..似乎工作正常,但我的坦克auth是相当大的修改。

我在那里说://fail

redirect('auth/login/'.$errors['login']); 

这需要通过罐权威性产生登录错​​误的关键,并将其传递回http://yoursite/auth/login作为查询参数的部分之后添加到了controllers/auth.php

然后在登录功能的顶部,我把这个:

function login($error = ''){ 
    if ($error != '') { 
     $data['errors']['login'] = $this->lang->line($error); 
     $this->load->view('auth/login_form', $data); 
    } 

这个代码抓起参数如果有..然后获取语言文件的相应行,然后加载登录表单。

注意这只会处理'登录'错误。你将需要传递更多的查询参数来处理验证错误等事情。

//编辑 我想我会尝试会议的方式..和它更整洁。

这正好在现场//fail

$this->session->set_flashdata('login_error', $this->lang->line($errors['login'])); 
redirect('/auth/login'); 

,并像这样进去的意见/ auth /中login_form.php代替form_errors在哪里。

<? if ($this->session->flashdata('login_error') != '') { 
    echo '<p style="color:#f00;">'.$this->session->flashdata('login_error').'</p>'; 
} ?>