Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Problema con url al hacer un conteo de descargas (http://www.forosdelweb.com/f18/problema-con-url-hacer-conteo-descargas-585206/)

KingColt 11/05/2008 10:57

Problema con url al hacer un conteo de descargas
 
Los campos que utilizo son id,nombre,archivo,contador Tengo un contador de descargas, cuando el archivo a descargar esta en mi servidor no hay problema, pero cuando quiero llamar a un link de otra pagina como rapidshare la url queda de esta manera:
http: //localhost/counter/descargas/http://rapidshare.com/files/112851541/miarchivo.zip.html
logimante sale la pagina de error por defecto, pero el campo contador si
agrega una unidad al conteo, aqui les dejo el codigo q utilizo y espero me ayuden
a encontrar un solucion ya que no se como resolverlo.

archivo pagina.php
Código PHP:

<?
while ($registro mysql_fetch_array($tabla)) 
{  
?>
<li>Nombre del programa : <a href="codigo.php?archivo=<?= $registro['archivo'];?>"><?= $registro['nombre'];?></a></li>
<li>Numero de descargas : <?= $registro['contador']."<br>";?></li>
<?
}
mysql_free_result($tabla);
mysql_close($conexion);
?>

archivo codigo.php
Código PHP:

<?php
$archivo 
$_GET['archivo']; 
$conexion mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error()); 
mysql_select_db('db_descargas')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
$sql "SELECT archivo,contador FROM descargas WHERE archivo  = '$archivo'";   
$result mysql_query($sql $conexion) or die ( mysql_error() );   
$row mysql_fetch_array($result); 
$contador $row['contador'];
$contador = ($contador 1);
$sql2 "UPDATE descargas SET contador = '$contador' WHERE archivo  = '$archivo ' ";
$result2 mysql_query($sql2 $conexion) or die ( mysql_error() );   
unset(
$contador);
header("Location: http://localhost/counter/descargas/$archivo");
exit();
?>

Quizas modificando el header

KingColt 11/05/2008 16:03

Re: Problema con url al hacer un conteo de descargas
 
como les va es factible lo que quiero hacer, si no es asi mencionenlo para empezar a buscar otras soluciones

javierav 11/05/2008 16:55

Re: Problema con url al hacer un conteo de descargas
 
Hola.

Tu problema está en que en la base de datos almacenas tanto url de los archivos externos como nombres de archivo de tus archivos locales. Y en el segundo código, en el header, pones siempre la ruta local mas lo que se obtenga de la base de datos.

Si en la base de datos tienes dos registros, a) miarchivo.zip y b)http://sitio.com/archivoexterno.zip, cuando se envíe el header estarás enviando para, a) http://localhost/counter/descargas/miarchivo.zip pero para b) http://localhost/counter/descargas/http://sitio.com/archivoexterno.zip

Una solución podría ser detectar si en el campo devuelto de la base de datos existe 'http://' y enviar una cabecera u otra en función de lo que sea. Pero es bastante chapucera. Podría ser algo asi:

Código PHP:

//Si comienza por http, https o ftp...
if(preg_match("#^(http|https|ftp)://#"$archivo))
{
  
//... se trata de una url externa
  
header("Location: $archivo");
}
else
{
  
//si no, se trata de un archivo local
  
header("Location: http://localhost/counter/descargas/$archivo");


Por cierto, investiga sobre la inyección de código SQL, que tu script falla en eso.

Saludos.

KingColt 12/05/2008 11:02

Re: Problema con url al hacer un conteo de descargas
 
solucione el problema guardando en vez de la url en bd, un archivo.php el cual me redirecciona a la pagina externa donde se hara la descarga


La zona horaria es GMT -6. Ahora son las 09:01.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.