2012-03-29 10 views
0

私はこのような状況をどう扱うかを考えようとしています。私はユーザーにログインするために次の行を持っていますが、この状況では、覚えている投稿のパラメータがフォームの送信時に設定されていない可能性がありますので、この関数で値を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は良い答えを持っていたが、そのない私は他の誰がどんな考えを持っている場合は、このように私は聞いてるのよと一緒に行きたいルート?

+0

存在しない複雑な問題を発明しなければなりません。 1つの場合、 '$ this-> input-> post()'はデータがなければエラーを投げません。 2つの理由で、@ drew010が言ったことは、代わりに($ _POSTを手作業でチェックして)完璧です。 3つの場合、チェックボックスにはSET/UNSET値しかありません。ですから、 'empty($ _ POST ['remember'])'という単純なものでさえ、うまく動作します。 – Xeoncross

答えて

0

あなたの質問は本当に明確ではありません。 'remember'パラメータが1に設定されていない場合、ユーザは記憶されたくないことがわかるので、クッキーの寿命を延ばすことはできません。

あなたは簡単にこのようなものを使用してデフォルト値に戻すことができ、あなたのコントローラで

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

彼らは、チェックボックスをクリックすると、彼らがいない場合、それは、$remember値として1をお送りします代わりにデフォルト値の0が変数に使用されます。

+0

文書のset_checkbox関数についてはどうでしょうか。私はこのような状況でどのように使用できるのかよく分かりません。 –

0

あなたは、チェックボックス(remember)と同じ名前のチェックボックスの前にhiddenフォーム要素を入れて、隠し要素に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> 

場合、それはその後、隠し要素の値が送信され、ない場合には、隠された要素は、上書きされます。

+0

良いアイデアだけど、本当に私が行きたいルートはない。 –

+0

これはかなり標準的な方法です。そうでなければ、標準チェックボックスはチェックされていなければ値を送信しません。代わりに何らかのスクリプトチェックボックスを使用することができます。 – drew010

関連する問題