cookies – Almacenamiento de información de usuario anónimo en una cookie

Pregunta:

Quiero almacenar el código postal de un usuario, si lo usa para una búsqueda de proximidad en una cookie. Sin embargo, no sé dónde ni cómo empezar a implementar esto.

¿Cómo almaceno información de usuario anónimo en una cookie?

Respuesta:

Desde Drupal 7, hay dos funciones para almacenar datos en una cookie: user_cookie_save () yuser_cookie_delete () . A pesar de los nombres de las funciones, las funciones también funcionan para usuarios anónimos, ya que no obtienen información del objeto $user ni ninguna información relacionada con el ID de usuario.

comment_form_submit () usa user_cookie_save() en las siguientes líneas de código:

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

Si está utilizando una versión de Drupal que no define esas funciones, puede implementar funciones similares en un módulo que utilice.

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

Tenga en cuenta que setrawcookie () solo está disponible en PHP 5. Si está desarrollando un módulo que podría usarse con PHP 4, entonces debe usar setcookie () , y el código de las funciones debe cambiarse en consecuencia: el parámetro necesita debe declararse como $values (no array $values ), y la llamada a rawurlencode () debe eliminarse ya que las cookies ya están codificadas en URL de setcookie() .

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım