Menú Principal

Ayuda con PHP

Iniciado por UNFORMAT, 7 Febrero 2010, 15:54 PM

0 Miembros y 1 Visitante están viendo este tema.

UNFORMAT

Hola muy buenas, antes que nada agradecer a todo el mundo (que conteste o no) pero que gracias a ell@s me he salvado mas de una vez :-)

A lo que voy....
tengo un script de descargas en php y me gustaría añadirle cuando la descarga se llevará con exito un "El archivo ha sido descargado correctamente (o algo así)" el problema es que lo he intentado con echo y print pero con ninguno e podido hacerlo ya que el script da un error.

Código (php) [Seleccionar]
<?php



$directorio_descarga './directorio/files'// dir descarga
$directorio_contador './directorio/cont'// dir contador



$ruta $directorio_descarga.'/'.$HTTP_GET_VARS['id'];



if(
file_exists($ruta))

{


$fichero fopen($directorio_contador.'/'.$HTTP_GET_VARS['id'].'.txt','r+');
$contador fread($fichero,100);
fclose($fichero);
$contador++;
$fichero fopen($directorio_contador.'/'.$HTTP_GET_VARS['id'].'.txt','w');
fwrite($fichero$contador);
fclose($fichero);

$tamano filesize($ruta);

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.$HTTP_GET_VARS['id']);

header('Content-Length: '.$tamano);



readfile($ruta);

}else{

echo "<font face=$textfont size=2>";
echo "<center><br><br>El archivo no está disponible en estos momentos<br>";
echo "<b>Intentelo más tarde<b>";
}


?>



Lo único que e conseguido es que cuando la url no sea correcta muestre un mensaje, pero me gustaría que lo mostrase cuando a sido satisfactoria. ¿como puedo hacerlo?


Nuevamente muchas gracias y un saludo!
Todos somos ignorantes, lo que pasa es que no todos ignoramos las mismas cosas...

dark_sargon

#1
Hola. Un  error que veo por encima:

Línea 6, falta poner comilla al final:
Código (php) [Seleccionar]
$directorio_contador = './directorio/cont'; // dir contador


Saludos.
http://www.actimediaonline.com
Diseño Web, animación y más.

http://www.ciudadoscura.com
Diseño Web, electrónica, programación, móviles y más.

UNFORMAT

Hola dark_sargon, muchas gracias el script original estaba bien pero copie y pegué, cambie los nombres de las rutas  :¬¬ y me comi la comilla jejje

gracias!
¿sabrias como insertar un texto con echo o print si la descarga fue satisfactoria?


Saludos!
Todos somos ignorantes, lo que pasa es que no todos ignoramos las mismas cosas...

Castg!

creo qe en php no se puede ya que interactua con el server, y lo que necesitamos en que nos avise el cliente. igualmente no creo que sea posible, habria que interactuar con el navegador, locual no he visto nunca que interactue de esta forma. otra cosa mas que te corrigo, es el filtrado de caracteres en la variable. pensa que si yo pongo ../../../../../../../../etc/passwd me descargaria el fichero depasswords :S, asi que agregate:
Código (php) [Seleccionar]
function proteger($flota){
if(explode("../",$flota)){
return str_replace("../","",$flota);
}
}
$id=proteger($_GET['id']);


otra cosita, porq no usas $_GET?

suerte ;)!

jdc

Te equivocas castg (por alguna razón me gusta decir eso, espero que no te enojes xD )

Fíjate que los archivos estarían en ./directorio/files y agrega un / antes del archivo a descargar, por lo tanto no afecta un rfi, quedaría asi...

./directorio/files/../../

:s xD

Castg!

vamos no tengas miedo que no te voy a pegar! xD! todos nos equivocamos :P..

UNFORMAT

Cita de: Castg! en  8 Febrero 2010, 18:21 PM
creo qe en php no se puede ya que interactua con el server, y lo que necesitamos en que nos avise el cliente. igualmente no creo que sea posible, habria que interactuar con el navegador, locual no he visto nunca que interactue de esta forma.
Gracias por tu respuesta! ya me queda todo más claro porque mira que le di vueltas y nada .....  :rolleyes:

Citarotra cosa mas que te corrigo, es el filtrado de caracteres en la variable. pensa que si yo pongo ../../../../../../../../etc/passwd me descargaria el fichero depasswords :S, asi que agregate:
Código (php) [Seleccionar]
function proteger($flota){
if(explode("../",$flota)){
return str_replace("../","",$flota);
}
}
$id=proteger($_GET['id']);


al principio lo tenia sin el ./ y vi que se podía armar una buena cierto lo que dice "janito24"
Citarotra cosita, porq no usas $_GET?
pues si voy a cambiar ya que es un parametro menos global y consumiria menos recursos en el server no?

bueno pues gracias a amb@s!
Todos somos ignorantes, lo que pasa es que no todos ignoramos las mismas cosas...

Castg!

yo por mi parte soy bien macho, ahora janito no lo se  :silbar: jejej denada amigo y suerte con tu proyecto ;)