Problemas con usuario Anónimo y $_SESSION en Drupal.

Hace algún tiempo que tuve este problema y quizás a más de uno le haya ocurrido, por ello comparto la que fue mi solución.

Al estar en una web como usuario anónimo, Drupal no permitía almacenar nada en sesión  ($_SESSION). En mi caso, necesitaba poder agregar artículos al carro de la compra, aún siendo usuario anónimo.

Después de darle muchas vueltas buscando el error, comprobando que todo estaba correcto ene el código y que en cada refresco de pantalla la sesión desaparecía, decidí tirar mano de la inmensa comunidad que hay detrás de drupal, así pues me puse a indagar.

Encontré las siguientes fuentes de información:

http://drupal.org/node/21120#comment-48394

http://drupal.org/node/192165#comment-630167

http://drupal.org/node/353428

http://drupal.org/node/315830

Leyendo unos y otros posts llegué a la siguiente explicación:

El problema viene de haber migrado el Drupal. Al realizar la migración, no se regenera en la tabla usuarios, el usuario 0  (el anonymous). Por lo que Drupal, al intentar cruzar la tabla usuarios, con la tabla “sessions”, no encuentra el uid 0 y da error.

 

La solución es simple, generar de nuevo el usuario 0:

INSERT INTO users (uid, name, mail) VALUES (’0′, ”, ”);
INSERT INTO users_roles (uid, rid) VALUES (0, 1);

Espero que os haya servido de ayuda (Esta tontería me hizo perder un buen rato).

¡Saludos!

Alberto García