Foros del Web » Programando para Internet » PHP »

Problema en script php de descarga

Estas en el tema de Problema en script php de descarga en el foro de PHP en Foros del Web. Estimados amigos, después de que en el servidor me hayan restaurado una copia de seguridad de los archivos y las bases de datos por culpa ...
  #1 (permalink)  
Antiguo 18/03/2005, 10:20
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Problema en script php de descarga

Estimados amigos,
después de que en el servidor me hayan restaurado una copia de seguridad de los archivos y las bases de datos por culpa de un hacker de los chungos, tengo problemas (entre otras muchas cosas) con unos contadores de descarga que instalé hace meses y que ahora no consigo hacer funcionar.

Esta es la sección de descarga de partituras legales de mi web:
http://guitarra.artelinkado.com/pagi...tra_musica.php

allí tengo uno script de descarga con contadores que parecen NO funcionar y no entiendo por qué. Sospecho que tiene que ver son los permisos en las carpetas, pero he probado ya a poner los archivos, los contadores, la carpeta de los contodores y el archivo download.php con permisos 666 y 777 sin éxito.

Este es el código del sencillo script de descarga:
Código PHP:
<?
// EXTENSION DE ARCHIVOS 
if (file_exists("$archivo")) { 
header("location: $archivo"); 
$file fopen("contador/$archivo.txt","r"); // contador de downloads 
$count fread($file100); 
$countplus = ($count 1); 
fclose($file); 
$fileb fopen("contador/$archivo.txt","w"); 
fwrite($fileb$countplus100); 
fclose($fileb); 
}

else { echo 
"El archivo <b>$archivo</b> no existe"; }

?>
Este es el código que tengo en el icono para descargar es:
http://guitarra.artelinkado.com/pagi...vo=jolrael.pdf

Y este es el código del contador (uno de ellos):
Código PHP:
<?php include("http://guitarra.artelinkado.com/paginas/nuestra_musica/archivos/contador/jolrael.pdf.txt"); ?>
Los archivos están en el servidor y el documento download.php también ¿por qué no funciona si antes si que lo hacía? Como vosotros mismos podréis comprobar en esa parte de mi web el error que da es siempre:

El archivo no existe

¿tendrá algo que ver con el php instalado en el servidor? Mi vbulletin no funciona del todo bien (no soporta "eñes" ni "tildes") por algo del idioma que todavía no han configurado bien. Me lo solucionarán en breve.

Gracias por leer esto hasta el final. Saludos desde Asturias:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::

Última edición por palosanto; 18/03/2005 a las 14:02
  #2 (permalink)  
Antiguo 18/03/2005, 14:04
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
¿no me puede echar alguien un cablecito?

Saludos:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #3 (permalink)  
Antiguo 19/03/2005, 05:12
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Pues vaya con los maestros del web. ¿Hay que tener mensajes para que te respondan o algo así? ¿o es que es una chorrada tan grande lo que pregunto que nadie se molesta en contestar?

Venga hombre... ya casi sólo me queda eso por solucionar después de los problemones que he tenido en mi web.

Espero vuestras noticias. Gracias por adelantado:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #4 (permalink)  
Antiguo 19/03/2005, 05:29
 
Fecha de Ingreso: julio-2004
Mensajes: 61
Antigüedad: 13 años, 4 meses
Puntos: 0
hola...

nose... soy nuevo con esto de php.... pero proba con esto.... total o perdes nada..=)

....
$file = fopen("contador/".$archivo.txt,"r");
....
$fileb = fopen("contador/".$archivo.txt,"w");
...

mmm... ademas no entendo pq usas un header....

salu2
  #5 (permalink)  
Antiguo 19/03/2005, 05:40
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Perdona el comentario pero,

¿dónde lo pongo? y ¿por qué son dos códigos distintos? uno con "r" y otro con "w"

Saludos:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #6 (permalink)  
Antiguo 19/03/2005, 05:47
 
Fecha de Ingreso: julio-2004
Mensajes: 61
Antigüedad: 13 años, 4 meses
Puntos: 0
las dos lineas esas pertenecen al codigo q pusiste... solo las modifike un poko...

me dio fiaca escribi todo el codigo....

salu2
  #7 (permalink)  
Antiguo 19/03/2005, 06:00
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Ok , ahora te entiendo. Muchas gracias por responder pero...

... lo he probado y sigue sin funcionar.

¿alguna otra idea?

Saludos:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::

Última edición por palosanto; 19/03/2005 a las 06:01
  #8 (permalink)  
Antiguo 19/03/2005, 06:16
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
una IDEA que tengo, nomás... primero, supongo que $archivo sale de algún lado, no? empieza ahí el código? 8-)
La idea del R es READ y la de W es WRITE ;)
Código PHP:
<?
// EXTENSION DE ARCHIVOS
if (file_exists($archivo)) {
header("location:".$archivo);
$file fopen("contador/".$archivo.txt."","r"); // contador de downloads
$count fread($file100);
$countplus = ($count 1);
fclose($file);
$fileb fopen("contador/".$archivo.txt."","w");
fwrite($fileb$countplus100);
fclose($fileb);
} else { 
echo 
"El archivo <b>".$archivo."</b> no existe"
}

?>
  #9 (permalink)  
Antiguo 19/03/2005, 07:51
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Sigue sin funcionar. Si nadie puede solucionarlo, preferia cambiar el script ¿alguien me dice dónde encontrar un sript php de descargas?

Saludos:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #10 (permalink)  
Antiguo 19/03/2005, 08:54
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
como pregunté antes... ¿Eso es todo el archivo?
  #11 (permalink)  
Antiguo 19/03/2005, 09:14
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Gracias Seppo por tus respuestas,
si te refieres al archivo download.php si, ese es todo el código que encontré dentro.

¿alguna idea? Entonces ¿crees que falta algo?

Saludos y gracias otra vez:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #12 (permalink)  
Antiguo 19/03/2005, 09:42
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 13 años, 7 meses
Puntos: 0
Si se supone que $archivo contiene la cadena $archivo = "procesos.txt" y el archivo existe, entonces, porque en:

$file = fopen("contador/$archivo.txt","r"); // contador de downloads

elimina .txt
__________________
Julio Hernández
  #13 (permalink)  
Antiguo 19/03/2005, 09:50
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Prueba de la siguiente manera:

$file = fopen("contador/".$archivo.".txt","r"); // contador de downloads

$fileb = fopen("contador/".$archivo.".txt","w");

y sino ponle un / antes de contador, es decir

$file = fopen("/contador/".$archivo.".txt","r"); // contador de downloads

el único problema q hay es no es q en sí no exista el archivo, sino también q no lo encuentra, fijate si esta y donde está....
__________________
Dios dira que esto no es justo, pero lo sera...
  #14 (permalink)  
Antiguo 19/03/2005, 09:53
 
Fecha de Ingreso: mayo-2004
Ubicación: Managua, Nicaragua
Mensajes: 281
Antigüedad: 13 años, 7 meses
Puntos: 0
Pero la condición la tiene así: if (file_exists("$archivo")) {

Se supone que $archivo, contiene una cadena con la extensión
__________________
Julio Hernández
  #15 (permalink)  
Antiguo 19/03/2005, 10:24
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Según lo q el pone:
<?php include("http://guitarra.artelinkado.com/paginas/nuestra_musica/archivos/contador/jolrael.pdf.txt"); ?>
Yo tomo q $archivo debe tener jolrael.pdf, a lo q le agrega la extensión .txt para la suma del contador, porq la descarga debe ser de un .pdf
__________________
Dios dira que esto no es justo, pero lo sera...
  #16 (permalink)  
Antiguo 19/03/2005, 10:36
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Estimados amigos,
gracias por vuestras aportaciones y sugerencias. Ahora mismo este es el código que tengo en el dowload.php y que sigue sin funcionar.

Código PHP:
<?
// EXTENSION DE ARCHIVOS
if (file_exists($archivo)) {
header("location:".$archivo);
$file fopen("/contador/".$archivo.".txt","r"); // contador de downloads
$count fread($file100);
$countplus = ($count 1);
fclose($file);
$fileb fopen("/contador/".$archivo.".txt","w");
fwrite($fileb$countplus100);
fclose($fileb);
} else {
echo 
"El archivo <b>".$archivo."</b> no existe";
}

?>
Por cierto sebtev, sobre lo que comentas, tienes mucha razón. El caso es que con la ayuda de alguien modifiqué el script para que fuese posible descargar archivos de diversas extensiones. En mi caso .zip y .pdf pero NO SE COMO HACER PARA QUE AHORA FUNCIONE

Adjunto además una captura del servidor en el que se ven los archivos de los que hablo (que si están) y los permisos. Os recuerdo que el lugar donde quiero habilitarlo aquí (funcionó pero después de un backup de estos pasados días ya no) el script funcionaba.



Espero nuevas ideas, a ver si lo sacamos adelante entre todos. Gracias otra vez.

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::

Última edición por palosanto; 19/03/2005 a las 10:38
  #17 (permalink)  
Antiguo 19/03/2005, 16:17
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 12 años, 8 meses
Puntos: 0
El path ha de ser completo. Ej.: "/www/webroot/contador/"

Un saludo.
http://insidephp.sytes.net

Última edición por Inside PHP; 19/03/2005 a las 16:19
  #18 (permalink)  
Antiguo 19/03/2005, 17:26
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Hola, te refieres a esto:

"/http://guitarra.artelinkado.com/paginas/nuestra_musica/archivos/contador/"

o a esto:

"/var/www/html/web23/web/paginas/nuestra_musica/archivos/contador/"

Entonces, ¿cómo quedaría el código total del download.php?

Gracias por adelantado:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::

Última edición por palosanto; 19/03/2005 a las 18:07
  #19 (permalink)  
Antiguo 19/03/2005, 18:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 12 años, 8 meses
Puntos: 0
Crea un script llamado "donde.php" con este contenido:

Código PHP:
<?
echo  $_SERVER["SCRIPT_FILENAME"];
?>
Ahora, lanza ese script en el interior de la carpeta "contador"... A lo que obtengas le quitas el "donde.php" y ese es el path.
  #20 (permalink)  
Antiguo 19/03/2005, 18:36
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Puedes sacar el path con $_SERVER['DOCUMENT_ROOT'], estas poniendo
<?php include("contador/cancion.txt"); ?> en la página donde quieres mostrar las descargas?
__________________
Dios dira que esto no es justo, pero lo sera...
  #21 (permalink)  
Antiguo 19/03/2005, 18:46
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
además debes crear un .txt para cada archivo q va a estar disponible para la descarga en la carpeta contador
__________________
Dios dira que esto no es justo, pero lo sera...
  #22 (permalink)  
Antiguo 19/03/2005, 18:52
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Moskis, al final ha funcionado con esto:

Código PHP:
<?
// EXTENSION DE ARCHIVOS
if (file_exists($archivo)) {
header("location:".$archivo);
$file fopen("/var/www/html/web23/web/paginas/nuestra_musica/archivos/contador/".$archivo.".txt","r"); // contador de downloads
$count fread($file100);
$countplus = ($count 1);
fclose($file);
$fileb fopen("/var/www/html/web23/web/paginas/nuestra_musica/archivos/contador/".$archivo.".txt","w");
fwrite($fileb$countplus100);
fclose($fileb);
} else {
echo 
"El archivo <b>".$archivo."</b> no existe";
}

?>
Gracias por vuestros comentarios Inside PHP, sebtev y los demás. Podéis ver como ha quedado funcionado aquí:
http://guitarra.artelinkado.com/pagi...tra_musica.php

y si veís algo raro me lo decís ¿ok?

Saludos desde Asturias:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #23 (permalink)  
Antiguo 19/03/2005, 18:55
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 12 años, 8 meses
Puntos: 0
Cita:
Puedes sacar el path con $_SERVER['DOCUMENT_ROOT']
Con eso saca el "raiz", no el path completo.
Cita:
además debes crear un .txt para cada archivo q va a estar disponible para la descarga en la carpeta contador
En absoluto. El .txt se crea automáticamente si no existe.
  #24 (permalink)  
Antiguo 19/03/2005, 19:17
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Tienes razón INSIDE PHP q el archivo txt se crea automáticamente, pero yo te recomiendo palosanto usar $_SERVER['DOCUMENT_ROOT'], porq el rtado q te dará esta variable será
/var/www/html/web23/web/paginas/nuestra_musica/archivos/contador/
con el "." le sumas el nombre del archivo, q es lo has hecho, pero si algún día quieres mover las carpetas de lugar o cambiar de server, el path cambiaría (no sería "/var/www/html/web23/web/paginas/nuestra_musica/archivos/contador/") y tendrías q modificar nuevamente el código
yo lo haría así
$path = $_SERVER['DOCUMENT_ROOT'];
$file = fopen($path."/".$archivo.".txt","r");
así no importaría si te mudas, decides cambiar todo, el script seguiría funcionando y funcionando...
saludos cuidate y de nada, entre todos hacemos todo
__________________
Dios dira que esto no es justo, pero lo sera...
  #25 (permalink)  
Antiguo 19/03/2005, 20:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 76
Antigüedad: 12 años, 8 meses
Puntos: 0
No, estás en un error.

$_SERVER['DOCUMENT_ROOT'] le devolvería: "/var/www/html/web23/web/paginas/nuestra_musica"
$_SERVER["SCRIPT_FILENAME"] le devolvería: "/var/www/html/web23/web/paginas/nuestra_musica/archivos/contador/donde.php"

Por lo tanto, si usas SCRIPT_FILENAME no importaría si te mudas o decides cambiar todo, el script seguiría funcionando y funcionando...
  #26 (permalink)  
Antiguo 20/03/2005, 04:11
Avatar de palosanto  
Fecha de Ingreso: septiembre-2004
Ubicación: Madrid
Mensajes: 21
Antigüedad: 13 años, 3 meses
Puntos: 0
Estimados amigos,
gracias por vuestros consejos. Tomo buena nota de ellos.

Saludos desde Asturias:

Palosanto
__________________
::::::::::: comparte lo que sabes, aprende lo que no :::::::::::
  #27 (permalink)  
Antiguo 20/03/2005, 12:04
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 13 años, 11 meses
Puntos: 2
Tienes razón INSIDE PHP, el problema no es la ignorancia, sino no reconocerla
saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
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:28.