it-swarm-eu.dev

Ukládání anonymních uživatelských informací do souboru cookie

Chci uložit poštovní směrovací číslo uživatele, pokud jej používá pro vyhledávání v blízkosti v cookie. Nevím však, kde a jak začít implementovat toto.

Jak uložím anonymní uživatelské informace do souboru cookie?

5
Adam S

Protože Drupal 7), existují dvě funkce pro ukládání dat do cookie: ser_cookie_save () a ser_cookie_delete () . Navzdory funkci jména, funkce fungují také pro anonymní uživatele, protože nezískají informace z objektu $user ani žádné informace, které se vztahují k ID uživatele.

comment_form_submit () používá user_cookie_save() v následujících řádcích kódu:

if (user_is_anonymous()) {
  user_cookie_save(array_intersect_key($form_state['values'], array_flip(array('name', 'mail', 'homepage'))));
}

Pokud používáte verzi Drupal, která nedefinuje tyto funkce), můžete implementovat podobné funkce do modulu, který používáte.

function mymodule_cookie_save(array $values) {
  foreach ($values as $field => $value) {
    // Set cookie for 365 days.
    setrawcookie('Drupal.visitor.' . $field, rawurlencode($value), REQUEST_TIME + 31536000, '/');
  }
}

function mymodule_cookie_delete($cookie_name) {
  setrawcookie('Drupal.visitor.' . $cookie_name, '', REQUEST_TIME - 3600, '/');
}

Mějte na paměti, že setrawcookie () je k dispozici pouze v PHP 5. Pokud vyvíjíte modul, který lze použít s PHP) = 4, měli byste použít setcookie () a kód funkcí by měl být odpovídajícím způsobem změněn: parametr musí být deklarován jako $values (Nikoli array $values) ) a volání rawurlencode () musí být odstraněno, protože soubory cookie jsou již kódovány URL z setcookie().

10
kiamlaluno

Nastavení cookies na Drupal se neliší od toho, jak byste to udělali s jakýmkoli jiným PHP web:

setcookie je funkce, která PHP poskytuje toto. Existuje také $_COOKIE super globální proměnná k použití.

Příklad kódu:

$cookieval = 'my cookie value';
if ($_COOKIE['my_cookie_key'] != $cookie_val) {
 setcookie('my_cookie_key', $cookie_val);
}
3
googletorp

Pokud máte v podsložce nainstalované Drupal), takže kořenová adresa URL vašeho webu má tvar www.mydomain.com/mysite, měli byste při nastavování cookie pravděpodobně použít místo base_path () místo '/'.

Funkce v odpovědi na kiamlaluno by pak byly:

function mymodule_cookie_save(array $values) {
  foreach ($values as $field => $value) {
  // Set cookie for 365 days.
  setrawcookie('Drupal.visitor.' . $field, rawurlencode($value), REQUEST_TIME + 31536000, base_path());
  }
}

function mymodule_cookie_delete($cookie_name) {
  setrawcookie('Drupal.visitor.' . $cookie_name, '', REQUEST_TIME - 3600, base_path());
}
0
jiv-e