Sunday, July 19, 2009

No puedo setear o registrar variables de sesión antes de un header("Location: ...")

Uf!

Cuando hacemos esto:

session_name('mi_sesion');
session_start();
$_SESSION['miVar']="algo";
header("Location: url");

Nos pasa que las variables de sesión que están antes de header no se registran. Y bueno, como no me gusta tener que refactorizar todo el código para este tipo de #@#@ problemas que te quitan horas, preferí indagar (por la mismas horas creo :) pero es buena solución para el presente y el futuro, así reducimos la "deuda técnica" ;)) y la solución (como casi siempre) es muy simple!

Sólo debes agregar session_write_close() antes del header, y el codigo nos queda así:

session_name('mi_sesion');
session_start();
$_SESSION['miVar']="algo";
session_write_close();
header("Location: url");

y magia!!!

que fácil no!?

No comments: