Retroceder   Foros del Web > Programación para sitios web > PHP

Respuesta
 
Herramientas Desplegado
Antiguo 11-may-2008, 10:57   #1 (permalink)
KingColt ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2008
Mensajes: 177
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 está desconectado   Responder Citando
Antiguo 11-may-2008, 16:03   #2 (permalink)
KingColt ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2008
Mensajes: 177
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
KingColt está desconectado   Responder Citando
Antiguo 11-may-2008, 16:55   #3 (permalink)
javierav ha deshabilitado el karma
 
Fecha de Ingreso: noviembre-2007
Ubicación: Córdoba
Mensajes: 67
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.
__________________
http://www.javierav.com

Última edición por javierav; 11-may-2008 a las 17:00.
javierav está desconectado   Responder Citando
Antiguo 12-may-2008, 11:02   #4 (permalink)
KingColt ha deshabilitado el karma
 
Fecha de Ingreso: febrero-2008
Mensajes: 177
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

Última edición por KingColt; 23-may-2008 a las 20:17.
KingColt está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 16:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93