Foros del Web » Programando para Internet » PHP »

Como refrescar pagina para mostrar imagen actual

Estas en el tema de Como refrescar pagina para mostrar imagen actual en el foro de PHP en Foros del Web. tengo el siguiente codigo Código PHP: <? session_start (); $cedula =  $_SESSION [ "cedula" ]; //datos del arhivo $nombre_archivo  =  $HTTP_POST_FILES [ 'userfile' ][ 'name' ]; $tipo_archivo  ...
  #1 (permalink)  
Antiguo 11/07/2010, 12:36
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Como refrescar pagina para mostrar imagen actual

tengo el siguiente codigo
Código PHP:
<?
session_start
();

$cedula$_SESSION["cedula"];

//datos del arhivo
$nombre_archivo $HTTP_POST_FILES['userfile']['name'];
$tipo_archivo $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo"jpeg")) && ($tamano_archivo 100000))) {
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
    if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], "fotos/".$nombre_archivo) && rename("fotos/".$nombre_archivo,"fotos/".$cedula.".jpg")){
             
?>
             
         <script type='text/javascript' language='javascript'>
         alert('SU IMAGEN FUE SUBIDA DE FORMA EXITOSA') 
         document.location.href='alumnos/infoalum.php'    
         </script> 
         
             <? 
    
}else{
       echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse.";
    }
}
?>
me sube la imagen de forma correcta, y me envia a la pagina donde quiero mostrarla, pero una vez alli me muestra la imagen que estaba anteriormente, tengo que darle a f5 para que me muestre la nueva, hay alguna forma de hacerlo por codigo para que refresque al subir la nueva imagen
  #2 (permalink)  
Antiguo 11/07/2010, 13:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Como refrescar pagina para mostrar imagen actual

el problema es la caché del explorador, debes de crear un script que expire la caché antes de enviar la imagen:

imagexpire.php:
Código PHP:
//expirado la caché para imágenes
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
header("Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" ); 
header("Cache-Control: no-cache, must-revalidate" ); 
header("Pragma: no-cache" );

$imagen =  $_GET['img'];
if(
file_exists($imagen)){
    
//obteiendo la información de la ruta:
    
$info=pathinfo($imagen);
    
//especificando el tipo de salida:
    
header("Content-type: image/".$info['extension']);
    
readfile($imagen);
}else{
    
header("Content-type: image/png");
    
$im = @imagecreate(10050);
    
$background_color imagecolorallocate($im255255255);
    
$text_color imagecolorallocate($im2331491);
    
imagestring($im155,  "No Existe la Imagen"$text_color);
    
imagepng($im);
    
imagedestroy($im);    

entonces lo usarías así:

Código HTML:
Ver original
  1. <img src="imagexpire.php?img=imagen.ext" />
  #3 (permalink)  
Antiguo 11/07/2010, 13:31
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como refrescar pagina para mostrar imagen actual

no entiendo muy bien lo que me dices, osea nose si lo que quieres que haga es crear un nuevo archivo llamado imagexpire.php y despues lo llame como me dices mas abajo, yo actualmente lo llamo asi
Código PHP:
<? 
if (file_exists("../fotos/".$array['cedula'].".jpg")){
    echo 
"<img src='../fotos/".$array['cedula'].".jpg' border='0' width='120' height='150'>"
}else{
    echo 
"<img src='../fotos/sinfoto.jpg' border='1' width='120' height='150'>"
}  
?>
ya que la imagen la muestra segun el usuario que halla iniciado session, todas las imagenes son jpg sin excepcion
  #4 (permalink)  
Antiguo 11/07/2010, 14:48
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Como refrescar pagina para mostrar imagen actual

puedes usar tu codigo normalmente, lo único que debes de cambiar es el src para que el navegador solicite la imagen a php y éste se encargue de expirar la caché, recuerda que las imágenes se solicitan al servidor después de cagar el DOM:

Código PHP:
<?php 
if (file_exists("../fotos/".$array['cedula'].".jpg")){
    echo 
"<img src='imageexpire.php?img=../fotos/".$array['cedula'].".jpg' border='0' width='120' height='150'>"
}else{
    echo 
"<img src='../fotos/sinfoto.jpg' border='1' width='120' height='150'>"
}  
?>
y como en el mismo script se verifica la existencia de la imágen puedes omitir esa parte en tu plantilla quedando:

imagexpire.php:
Código PHP:
//expirado la caché para imágenes
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
header("Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" ); 
header("Cache-Control: no-cache, must-revalidate" ); 
header("Pragma: no-cache" );

$imagen =  $_GET['img'];
if(
file_exists($imagen)){
    
//obteiendo la información de la ruta:
    
$info=pathinfo($imagen);
    
//especificando el tipo de salida:
    
header("Content-type: image/".$info['extension']);
    
readfile($imagen);
}else{
    
header("Content-type: image/jpg");
    
readfile('../fotos/sinfoto.jpg'); 

y en la plantilla:
Código PHP:
echo "<img src='imageexpire.php?img=../fotos/".$array['cedula'].".jpg' border='0' width='120' height='150'>"
o haces lo contrario y lo dejas como al principio te indique.

PD: usa <?php por motivos de estándar
  #5 (permalink)  
Antiguo 11/07/2010, 15:42
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como refrescar pagina para mostrar imagen actual

copie el codigo tal cual me lo diste y en la plantilla no aparece la imagen
  #6 (permalink)  
Antiguo 11/07/2010, 15:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Como refrescar pagina para mostrar imagen actual

no debería darte ningún error, a menos de que necesites aplicar urlencode para convertir espacios en blanco y demás caracteres que alteren la url:

Código PHP:
if (file_exists("../fotos/".$array['cedula'].".jpg")){
    echo 
"<img src='imageexpire.php?img=".urlencode("../fotos/".$array['cedula'].".jpg")."' border='0' width='120' height='150'>"
}else{
    echo 
"<img src='../fotos/sinfoto.jpg' border='1' width='120' height='150'>"

  #7 (permalink)  
Antiguo 11/07/2010, 16:07
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Como refrescar pagina para mostrar imagen actual

error como tal no me marca, solo que no muestra la imagen y tampoco ../fotos/sinfoto.jpg, he intentado ver porque y no doy con el problema

Etiquetas: refrescar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:41.