2012-04-02 19 views
1

Nach einer Formularübergabe möchte ich mehrere angegebene Formularwerte in einem PHP-Cookie speichern. Ich brauche die Daten, um fortzufahren, nachdem der Browser geschlossen ist, also möchte ich keine Sitzungen verwenden. Mein aktueller Aufruf sieht wie folgt aus:Die beste Methode zum Speichern von Formularwerten in PHP Cookie?

if ($_GET) { 
    $params = $_GET; 
} 

Gibt es eine Möglichkeit mehrere params von $ _GET zu $ ​​_COOKIE einzustellen, so kann ich sie später verwenden, wenn der Benutzer zurückkehrt?

+2

RTFM (http://uk3.php.net/manual/en/function.setcookie.php) – Ing

+1

sorry ... haben sollte getan, dass zuerst denke ich. – Paul

Antwort

0

können Sie verwenden serialize() oder eine foreach() ausführt Schleife aller _GET Werte $, und (für jeden anderen Wert als Cookie) die in den Cookies

1

Sie können immer noch Sitzungen für Sie Problem verwenden. Ändern Sie einfach die Cookie-Parameter mit session_set_cookie_params() (siehe here) zu einer Zeit> 0 (0 bedeutet, dass sie gelöscht werden soll, wenn der Browser geschlossen wird) und erhöhen die Sitzung Cache Lebensdauer mit session_cache_expire() (siehe here).

Dies hat den Vorteil, dass auch Daten, die der Client nicht ändern können soll, nicht durch einfaches Ändern des Cookies auf seinem Rechner geändert werden können.

Cookies nur

Der andere Ansatz eine Serialisierung (zB verwenden serialize() und deserialize() oder wie einfach für Dinge von geringer Komplexität etwas auf eigene Faust tut einigen Argumente mit einem Begrenzer Beitritt) umfassen könnte Ihren Parameter direkt gespeichert in einen Cookie mit der setcookie() Funktion. Erfahren Sie mehr darüber here. Damit können Sie die Cookie-Werte direkt aus dem Superglobal $_COOKIE auslesen.

+0

Das ist etwas, das ich nie neu mache ... Ich werde das untersuchen, da es ein anderes Problem lösen könnte :) Danke! – Paul

+0

@Paul nichts wirklich neues mit einem Werkzeug in einer perversen Art und Weise. Jemand hat vor einiger Zeit ein Siegel benutzt, um Nüsse zu knacken. Die Sitzung ist so lange aktiv, bis der Browser geschlossen wird. Du hast Recht, während dieser Typ falsch liegt. –

+1

@YourCommonSense das ist einfach nicht wahr. In der allgemeinen Sprache beschreibt ein Session-Cookie einen, der nach der aktuellen Sitzung gelöscht wird (sobald der Browser geschlossen ist). Aber in PHP ist es möglich, denselben Mechanismus von Sitzungen zu verwenden, um Daten über längere Zeit zu speichern, indem die Cookie-Parameter und die Caching-Zeit geändert werden. Ein gültiger Punkt dagegen wäre, dass die Daten in einer ineffizienten und unkontrollierbaren Weise gespeichert werden, während eine Datenbank zuverlässiger wäre. Es hat jedoch den großen Vorteil, dass es im Gegensatz zu einem direkten Cookie-Ansatz Datensicherheit und Benutzerfreundlichkeit bietet. – s1lence

0

können Sie foreach verwenden GET-Array zu durchqueren und die Cookies mit ihren Indexnamen gesetzt. versuchen, diese -

$expire=time()+60*60*24*30; 
foreach($_GET as $k=>$v){ 
    setcookie($k,$v,$expire); 
} 

Dies wird Cookie Name gleichen wie GET Array-Indizes gesetzt und wird nach einem Monat abgelaufen sein.

Verwandte Themen