记住我的cookie

时间:2012-03-29 16:35:56

标签: php codeigniter

我正在试图弄清楚如何处理这种情况。我有以下用于登录用户的行但是在这种情况下,可能不会在表单提交时设置remember post参数,所以我仍然希望它使用此函数发送0作为其值。

if ($this->kowauth->login($this->input->post('username'), $this->input->post('password'),
                            $this->input->post('remember'))) {}

这是表单元素:

<?php
if(isset($_COOKIE['xtrcook']))
{
    echo form_label((form_checkbox('remember', '1', TRUE)) . 'Remember Me!', 'remember');
}
else
{
     echo form_label((form_checkbox('remember', '1', FALSE)) . 'Remember Me!', 'remember');
}
?>

虽然drew010有一个很好的答案,但不是我想要的路线,所以我问其他人是否有任何想法?

2 个答案:

答案 0 :(得分:0)

如果您在复选框之前放置hidden表单元素,并且复选框与复选框(remember)相同,并为隐藏元素指定值0,则在未选中复选框时,将从隐藏元​​素中获取0。选中该复选框后,隐藏元素中的0将被复选框覆盖。

示例HTML输出:

<input type="hidden" name="remember" value="0" />
<input type="checkbox" name="remember" id="remember" value="1" /> <label for="remember">Remember Me!</label>

如果提交了复选框,则隐藏隐藏元素,如果不是,则发送隐藏元素的值。

答案 1 :(得分:0)

你的问题不是很清楚。如果'remember'参数未设置为1,您就知道您的用户不想被记住,因此您不会延长其Cookie的使用寿命。

在您的控制器中,您可以使用以下内容轻松恢复为默认值:

$remember = ($this->input->post('remember') == 1) ? 1 : 0;

如果他们单击该复选框,它将发送1作为$remember值,如果他们没有将默认值0用于该变量。