Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/11/2005, 03:22
kirof
 
Fecha de Ingreso: noviembre-2004
Mensajes: 47
Antigüedad: 19 años, 4 meses
Puntos: 0
Pregunta Problemas IE, Opera, Firefox

Hola, muy buenas. No sé dónde colocar exactamente este post así q dejo tb aquí una referencia.
Tengo un sitio web usando php-mysql-apache. Utilizo sesiones propagadas por URL. La web funciona perfectamente con IE pero ahora, cuando fui a probar la aplicación con Opera y Mozilla Firefox, no respeta las sesiones.Aparentemente parece un problema a de propagación de las mismas.

Procedo a explicarlo más detalladamente:
Hay clientes registrados y visitantes. La única diferencia es q un usuario registrado verá su nombre arriba cuando esté navegando, podrá cambiar sus datos, cerrar sesión y unas cuantas opciones más.
Una vez logueado un cliente, paso a una pág. php q contiene en la parte superior una tabla donde muestro el nombre de usuario y, al lado, el botón de cerrar sesión. El resto de la página es un flash interactivo para navegar entre las distintas opciones. Este flash contiene un menú desplegable en el que, al pinchar en cada botón, te lleva a otra página .php . Cada página php contiene el siguiente código al principio de todo para controlar las sesiones:
Código PHP:
<?

session_start
();
if(!(
$_SESSION["S_login"]) || !($_SESSION["S_dni"])|| !($_SESSION["S_tipo"]))
    {
        
$_SESSION = array();
        
session_destroy();
        
header ('Location: nosesion.php');
    }
?>
El caso es que en IE funciona todo perfectamente. En Opera y Firefox ocurre el mismo problema:
Cuando el cliente se loguea, se le muestra su página personal, con su nombre arriba y la posibilidad de cerrar sesión. Si va al menú flash y pincha en una opción, le lleva a una nueva página php en la q sigue apareciendo su nombre de usuario arriba con la opción de desconectarse. Pero si vuelve a pinchar en una opción del menú, la siguiente página ya no muestra su nombre ni la opción de desconectar. De la misma manera, tb incluyo un botón abajo para volver al principio y que, al pulsarlo, tampoco se guarda la sesión.

¿Cómo podría solucionar esto? Insisto que en IE funciona todo perfectamente.

Espero no haberme liado mucho.
Un saludo y muchas gracias de antemano.
PD:Os dejo el código de un par de páginas q se llaman entre sí.
Nota:Todo el barullo de código q aparece después de la etiqueta </style> es código generado por flash.

Página principal de un cliente registrado:
Código:
<?
session_start();
if(!($_SESSION["S_login"]) || !($_SESSION["S_dni"])|| !($_SESSION["S_tipo"]))
	{
		$_SESSION = array();
		session_destroy();
		header ('Location: nosesion.php');
	}
?>

<HTML>
<HEAD>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<TITLE>index_cliente_registrado</TITLE>

<style type="text/css">
  html, body 
    {
      height: 100%;
      margin: 0;
      padding: 0;
    }
</style>

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>
</HEAD>
<BODY bgcolor="#FFFFFF" link="#7D0000" vlink="#7D0000" alink="#7D0000" onLoad="MM_preloadImages('iconos/salir.gif','iconos/salir2.gif')">
<table width="100%"  border="0">
  <tr> 
    <td width="85%" height="33"> 
      <div align="right"><font color="#FF0000"><b><font size="1">.::</font></b></font><font size="1"> 
        Usuario: <font color="#666666"><? echo $S_login; ?>&nbsp; <a href="javascript:;" onClick="MM_goToURL('parent','cerrar_sesion.php');return document.MM_returnValue"><img src="iconos/salir.gif" name="Image1" width="12" height="12" border="0" align="absbottom" id="Image1" onMouseDown="MM_swapImage('Image1','','iconos/salir.gif',1)" onMouseOver="MM_swapImage('Image1','','iconos/salir2.gif',1)" onMouseOut="MM_swapImgRestore()"></a></font></font><br>
        <font size="1">[<font color="#7D0000"> </font></font> <font color="#7D0000" size="1"> 
        <a href="modificar_datos_cliente1.php">modificar Perfil</a></font><font size="1"> 
        ]<font color="#666666">&nbsp; </font></font></div></td>
  </tr>
</table>
<!-- URL's used in the movie-->
<A HREF=./noticias.php></A> <A HREF=./index_cliente_registrado.php></A> 
<A HREF=cliente_peticion.php></A> 
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 WIDTH="100%" HEIGHT="100%" id="index_cliente_registrado" ALIGN="">
 <PARAM NAME=movie VALUE="index_cliente_registrado.swf"> <PARAM NAME=loop VALUE=false> <PARAM NAME=quality VALUE=high> <PARAM NAME=scale VALUE=exactfit> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="index_cliente_registrado.swf" loop=false quality=high scale=exactfit bgcolor=#FFFFFF  WIDTH="100%" HEIGHT="100%" NAME="index_cliente_registrado" ALIGN=""
 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>
</BODY>
</HTML>

Página llamada desde el menú flash(noticias.php):
Código:
<?

session_start();
if(!($_SESSION["S_login"]) || !($_SESSION["S_dni"])|| !($_SESSION["S_tipo"]))
	{
		$_SESSION = array();
		session_destroy();
		header ('Location: nosesion.php');
	}
?>

<HTML>
<HEAD>
<meta http-equiv=Content-Type content="text/html;  charset=ISO-8859-1">
<TITLE>noticias</TITLE>

<style type="text/css">
  html, body 
    {
      height: 100%;
      margin: 0;
      padding: 0;
    }
</style>

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_goToURL() { //v3.0
  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;
  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>
</HEAD>
<BODY bgcolor="#FFFFFF" onLoad="MM_preloadImages('iconos/salir.gif','iconos/salir2.gif')">
<table width="100%"  border="0">
  <tr> 
    <td height="14"> <div align="right"><font color="#FF0000"><b><font size="1">.::</font></b></font><font size="1"> 
        Usuario: <font color="#666666"><? echo $S_login; ?>&nbsp; <a href="javascript:;" onClick="MM_goToURL('parent','cerrar_sesion.php');return document.MM_returnValue"><img src="iconos/salir.gif" name="Image1" width="12" height="12" border="0" align="absbottom" id="Image1" onMouseDown="MM_swapImage('Image1','','iconos/salir.gif',1)" onMouseOver="MM_swapImage('Image1','','iconos/salir2.gif',1)" onMouseOut="MM_swapImgRestore()"></a></font></font> 
        <font size="1"><font color="#666666">&nbsp;&nbsp; </font></font></div></td>
  </tr>
</table>
<!-- URL's used in the movie-->
<A HREF=./index_cliente_registrado.php> </A> 

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
 codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
 WIDTH="100%" HEIGHT="100%" id="noticias" ALIGN="">
 <PARAM NAME=movie VALUE="noticias_cliente_registrado.swf"> <PARAM NAME=loop VALUE=false> <PARAM NAME=quality VALUE=high> <PARAM NAME=scale VALUE=exactfit> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="noticias.swf" loop=false quality=high scale=exactfit bgcolor=#FFFFFF  WIDTH="100%" HEIGHT="100%" NAME="noticias" ALIGN=""
 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>
</OBJECT>
</BODY>
</HTML>
El resto de páginas llamadas desde el menú es similar a ésta última puesto q tan sólo cambia la información q muestra cada una. Todas mantienen el mismo menú y resto de opciones.