AndreasB. hat geschrieben:Hallo LinkPop,
und wie könnte ich das Ablegen "on the fly" machen?
Gruß
Andreas
Wenn der User den Zustand der Checkbox verändert, kann man mittels JavaScript (onclick-Auswertung) ein zusätzliches Formular (unabhängig vom Hauptformular) an eine kleine php-Datei schicken, die dann das Cookie setzt bzw. löscht und mit dem HTTP-Status "
204 No Content" antwortet, so das die momentan angezeigte Seite nicht verlassen wird (kein Reload o.ä.). Wenn der User den Haken setzt, passiert optisch also gar nichts.
Alle betreffenden Seiten müssen dann natürlich vor Anzeige der Checkbox prüfen, ob das Cookie vorhanden ist und entsprechend auf "checked" oder eben nicht setzen. (siehe Zeile 1 $sallstatus)
Somit kann der Status der Checkbox auf weitere Seiten übergeben werden, die lediglich über einen normalen Link aufgerufen werden.
Betreffende Seiten mit Checkbox im Hauptformular und zusätzlichem Formular für Cookie-Steuerung:
Code: Alles auswählen
<?
if (isset($_COOKIE["csall"]) && $_COOKIE["csall"] != "") {$sallstatus="checked";}
echo "<form action="..." method="post" name="deinform">\n";
echo "<input type="checkbox" name="sall" value="Inhalt" onclick="if(document['deinform']['sall'].checked==false) {document['sallForm']['sall'].value='';} else {document['sallForm']['sall'].value=document['deinform']['sall'].value;} document['sallForm'].submit(); return true;" $sallstatus>\n";
echo "</form>\n";
echo "<form action="sallcookie.php" method="post" name="sallForm">\n";
echo "<input type="hidden" name="sall" value="">\n";
echo "</form>\n";
?>
Datei sallcookie.php (s.o. Formular 2) setzt/löscht Cookie; antwortet mit 204
Code: Alles auswählen
<?
setcookie("csall", $_POST["sall"]);
header("HTTP/1.1 204 No Content");
?>