Ver Mensaje Individual
  #10 (permalink)  
Antiguo 06/06/2007, 08:06
Avatar de caricatos
caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 2 meses
Puntos: 1284
Re: Cambiar src en imagen

Hola:

Sin dudas, aunque evites con código la caché, el navegador al ver que la url no cambia... no cambia la imagen.
Un truquillo que uso para evitar la caché, es cambiar la url... simplemente cambiar un parámetro que no se vaya a procesar...

Mi código no necesita ajax, ya que al php de la ventana oculta le indico que se pase la sesión al "parent"... y con ese dato hago el rollover de la imagen... pero para evitar la caché le añado un dato más... document.images.prever.src = "imagen.php?sesion=" + s + "&n=" + n++;

... eso de "casi" es que "de ajax -nada-"... solo la declaración y el enlace a la librería... pero sin usarla...

Lo importante de mi versión es que el iframe tiene una llamada al "parent" para enviarle la session... y con ese dato se recarga la imagen (importantísimo es el parámetro ficticio que evita la caché)

El código del formulario es:

Código:
<? session_start();
$s = session_id();
$onload = "onload='opener.recibir_sesion(\"$s\")'";
if (isset($_FILES["imagen"]))	if($_FILES["imagen"]["error"] == 0)	{
$s = session_id();
$onload = "onload='opener.recibir_sesion(\"$s\")'";
$_SESSION["contenido"] = file_get_contents($_FILES["imagen"]["tmp_name"]);
$_SESSION["tipo"] = $_FILES["imagen"]["type"];
}
else
	$onload = "";
?>
<html>
<body onload="parent.recibir_sesion('<?=$s; ?>')" >
</body>
</htnl>
Fíjate que al parent se le envía la session_id()...

Y el fichero imagen.php:

Código:
<?php
session_start();
if (isset($_GET["sesion"]))	{
	$id = session_id($_GET["sesion"]);
	$url = $_SESSION["contenido"];
	$tip = $_SESSION["tipo"];
}
else	{
	$url = fread(fopen("Lupa.png", "rb"), filesize("Lupa.png"));
	$tip = "image/png";
}
header("Content-type: $tip");
echo $url;
session_destroy();
?>
Estoy seguro que puede mejorarse...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo