lunes, 22 de febrero de 2010

Paso de sesiones PHP automáticamente

Como todos sabemos hay que poner el típico “session_start();” al comienzo de cada pagina para pasar la sesión, cosa que al final resulta algo cansino así que o bien hacemos un objeto que maneje las sesiones y hagamos un autocargado del objeto o ponemos “session.auto_start” del fichero php.ini a 1 y con la opción “session.use_trans_sid” también a 1 se pasan incluso cuando las cookies están desactivadas.

Nota: con “session.use_trans_sid” activado auque no tengamos “session.auto_start” activado si iniciamos la sesión manualmente hará el proceso de pasar la sesión automáticamente, al menos en php5.

Para los que tengan php5 “session.use_trans_sid” esta desactivado por defecto, si quieren pasar la sesión tendrá que ser con cookies o activando dicha propiedad.

Para php4 esta permitido por defecto pero no lo hace automático, al menos lo que he visto hasta ahora asi que para eso esta este script

if( !(navigator.cookieEnabled) ){
window.onload = function() {
//array de todos los enlaces de la pagina
var enlaces=document.getElementsByTagName('a');
//los recorro y le modifico el atributo href para que pase la sesion
for(var i=0;i var direccion=enlaces[i].getAttribute('href');
enlaces[i].setAttribute('href',nuevaURL(direccion));
}
var formularios=document.getElementsByTagName('form');
for(var i=0;i var direccion=formularios[i].getAttribute('action');
formularios[i].setAttribute('action',nuevaURL(direccion));
}
}

/*
* detecto cuando un elace es externo para no pasar la sesion y
* cuando es interno y se pasan mas parametros adadapto el codigo
*/
function nuevaURL(url){
//si es un enlace externo
if(url.substr(0, 7)=='http://' || url.substr(0, 8)=='https://' || url.substr(0, 4)=='www.'){
return url;
}else{
//si tiene argumentos
if( url.indexOf('?') >-1){
url+='&';
}else{
url+='?';
}
return url+'';
}
}

Básicamente con hacer es copy&paste o un include del fichero, problema resuelto, pero acuérdate de ponerle extensión php porque lo necesita para ejecutar un par de funciones php.

No hay comentarios: