2012-03-29 6 views
0

Ich versuche herauszufinden, wie ich mit dieser Situation umgehen soll. Ich habe die folgende Zeile für die Anmeldung eines Benutzers, aber mit dieser Situation die Erinnerung Post-Parameter möglicherweise nicht bei der Formularübermittlung festgelegt, so würde ich immer noch gerne 0 als Wert mit dieser Funktion senden.Erinnere mich an Cookie

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

Hier ist das Formularelement:

<?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'); 
} 
?> 

Obwohl drew010 hatte eine gute Antwort sein nicht die Route, die ich mit diesem so gehen will ich frage, ob jemand irgendwelche Ideen?

+0

Sie müssen ein komplexes Problem erfinden, das es nicht gibt. Zum einen wird '$ this-> input-> post()' keinen Fehler werfen, wenn die Daten nicht da sind. Für zwei ist das, was @ drew010 gesagt hat, perfekt für die Alternative (man überprüft $ _POST manuell). Für drei haben die Checkboxen nur einen SET/UNSET-Wert. Selbst etwas so Einfaches wie "leer" ($ _ POST ['remember']) 'würde gut funktionieren. – Xeoncross

Antwort

0

Ihre Frage ist nicht wirklich klar. Wenn der Parameter 'remember' nicht auf 1 gesetzt ist, wissen Sie, dass Ihr Benutzer nicht erinnert werden möchte, sodass Sie die Lebensdauer seines Cookies nicht verlängern.

In Ihrem Controller können Sie ganz einfach auf einen Standardwert zurücksetzen, indem Sie so etwas wie dies mit:

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

Wenn sie das Kontrollkästchen klicken, wird es 1 als $remember Wert senden wird, wenn sie nicht tun Der Standardwert von 0 wird stattdessen für die Variable verwendet.

+0

Nun, was ist mit der Funktion set_checkbox in den Dokumenten? Ich verstehe nicht ganz, wie ich das in dieser Situation gebrauchen könnte. –

0

Wenn Sie setzen ein hidden Formularelement, bevor das Kontrollkästchen mit dem gleichen Namen wie das Kontrollkästchen (remember) und geben dem verborgene Elemente einen Wert von 0, wenn das Kontrollkästchen nicht aktiviert ist, werden Sie die 0 aus dem verborgenen erhalten Element. Wenn das Kontrollkästchen aktiviert ist, wird das 0 des ausgeblendeten Elements durch das Kontrollkästchen überschrieben.

Beispiel HTML-Ausgabe:

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

Wenn die Checkbox abgegeben wird, wird das versteckte Element überschrieben, wenn dies nicht der Fall, dann wird der Wert des verborgenen Element gesendet wird.

+0

Es ist eine gute Idee, aber nicht wirklich die Route, die ich gehen möchte. –

+0

Es ist eine ziemlich Standardmethode, andernfalls wird ein Standard-Kontrollkästchen keinen Wert senden, es sei denn, es ist aktiviert. Sie könnten stattdessen eine Art von Skript-Checkbox verwenden. – drew010

Verwandte Themen