inicio mail me! sindicaci;ón

sesiones php y utf-8

Buenas a todos, retomo este blog para poder escribir sobre cosicas mas geeks.

Hoy voy a hablaros de las sesiones en PHP, y los problemas que hay cuando usamos conjuntamente la codificación utf-8 y sesiones en PHP.


Hace años que no tocaba el tema de las sesiones, pero ahora por azares del destino me ha tocado hacerlo de nuevo.

Lo tenía un poco oxidao pero de algo me acordaba, como que había que iniciar la sesion antes de mostrar cualquier output. Así que he puesto en mi página de inicio index.php el inicio de la sesion al principio del todo, antes incluso que el DOCTYPE, tal y como recordaba.

<?php
    session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  <html>
  (...)

He preparado mi sistema de autentificación de usuarios, etc.. todo parecía funcionar de puta madre, perooooooo…. no se guardaban los datos de la sesion…. vaya mierda de sesión….

Me he pegao toda la mañana volviendome loco buscando algún fallo en mi código, sin encontrar ninguno. Así que me he levantado, me he visto una peli y he vuelto al ordenador.

Revisando la documentación en php.net he visto un comentario perdido que decía algo de incompatibilidades entre las sesiones y la codificación utf-8. Que si usabamos esta codificación, hay que iniciar la sesión despues de indicar que la ibamos a usar. Bien mediante:

header('Content-Type: text/html; charset=utf-8');

o usando la etiqueta html correspondiente:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Así que dicho y hecho, ordenando mi código asi:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
 
	<head>
	
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
<?php
	// INICIAMOS LA SESION
	// Hay que iniciar la sesion despues de especificar la codificación utf-8
	// Para que los datos se guarden
	session_start();
	
?>
(...)

Funciona de rechupete…

Espero que no os pase lo mismo que a mi nunca, y si os ocurre la solución es levantarse esperar una hora o dos haciendo otra cosa y volver. Milagrosamente dareís con la solución en 5 minutos.

Salúd

Gravatar

aldo said,

Septiembre 18, 2007 @ 4:59 am

hola queria agradecer por este instructivo, me sirvio de mucho.
salu2 desde argentina provincia de santafe
mucahs gracias

RSS feed for comments on this post · URI para TrackBack.

Leave a Comment

This blog uses Qwilm! theme.