Foros del Web » Programando para Internet » PHP »

iniciar una descarga php

Estas en el tema de iniciar una descarga php en el foro de PHP en Foros del Web. Bueno, os comento, es una utilidad web para que usuarios registrados puedan subir archivos y mantenerlos activos (sus archivos subidos), pues bien, en un lugar ...
  #1 (permalink)  
Antiguo 18/05/2010, 05:18
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 2 meses
Puntos: 1
iniciar una descarga php

Bueno, os comento, es una utilidad web para que usuarios registrados puedan subir archivos y mantenerlos activos (sus archivos subidos), pues bien, en un lugar de la web, peuden ahcer click, y pueden poner en un formulario una dir de correo electronico, al que puedan enviar un correo, dentro de este viene una url, una vez hacen click en esta se les abre una pagina de descarga donde un nuevo formulario aparecerá y les pedirá la contraseña (cada archivo tiene contraseña para poder ser descargado) hecho esto comenzará la descarga, el problema lo tengo ahí, ela rchivo se llama download.php, los archivos pueden estar activos o inactivos (cuando el usuario sube algo pone el tiempo ke estará activo el numero de descargas maximas y la contraseña, una vez se abre download.php, si el archivo esta activo (es decir si no a alcanzado el numero maximod e descargas) se ve el formulario con el campo pass si la mete correctamente ke comience la descarga. Bien, el problema es ke no hay ni descarga ni nada, me tira este mensaje:

Código:
select * from archivos where alias=32d58df24eProblemas en el select:Unknown column '32d58df24e' in 'where clause'

el archivo completo es este:

Código PHP:
<?php 
    $alias
=$_REQUEST['file'];    
        include(
"libreria.php");
        
$conexion=conecta();    
        
$sqw="select * from archivos where alias=$alias";
        print 
$sqw;
        
$registw=mysql_query($sqw,$conexion) or
          die(
"Problemas en el select:".mysql_error());
        
$regw=mysql_fetch_array($registw);
        
mysql_close($conexion);
        
$stadow=$regw['estado'];
        
$max $regw['max_descargas'];
        
$num $regw['num_descargas'];
        
$clave_val $regw['pass'];

?><html>
<head>
<title>Descarga de archivos
</title>
<?php
if ($stadow==-1){

?>

<script type="text/javascript">
function enviar_formulario(form_name){ 
document.getElementById(form_name).submit();

</script>
<?php
if (isset($_POST['accion']) && $_POST['accion'] == 'descargar') {
    
$errores false;
    
$pass $_REQUEST['pass'];
    
    if (
$pass != $clave_val) {
        
$error[1]='    La clave no es correcta';
        
$errores=true;}
}

if (isset(
$_POST['accion']) && $_POST['accion'] == 'descargar' and $errores==false){

    if (!isset(
$_GET['file']) || empty($_GET['file'])) {
        exit();
    }
    
$root "files/";
    
$file basename($_GET['file']);
    
$path $root.$file;
    
$type '';
     
    if (
is_file($path)) {
        
$size filesize($path);
        if (
function_exists('mime_content_type')) {
            
$type mime_content_type($path);
        } else if (
function_exists('finfo_file')) {
            
$info finfo_open(FILEINFO_MIME);
            
$type finfo_file($info$path);
            
finfo_close($info); 
        }
        if (
$type == '') {
            
$type "application/force-download";
        }
        
// Set Headers
        
header("Content-Type: $type");
        
header("Content-Disposition: attachment; filename=$file");
        
header("Content-Transfer-Encoding: binary");
        
header("Content-Length: " $size);
        
// Download File
        
readfile($path);
    } else {
        die(
"File not exist !!");
    }
    
    
$conexion=conecta();
    if (
$num == $max){
            
$sq2="update archivos set estado = 0  where alias = '$alias'";
        
//print $sq2;
        
$registros2=mysql_query($sq2,$conexion) or
        die(
"Problemas en el update".mysql_error());
    }
    
$sq2="update archivos set num_descargas = num_descargas + 1  where alias = '$alias'";
    
//print $sq2;
    
$registros2=mysql_query($sq2,$conexion) or
    die(
"Problemas en el update".mysql_error());
    
mysql_close($conexion);

else {
?>
</head>
<body bgcolor="#0033FF">
<?php
        $conexion
=conecta();
        
$sql="select * from archivos where alias=$alias";
        
$registros=mysql_query($sql,$conexion) or
          die(
"Problemas en el select:".mysql_error());
        
mysql_close($conexion);


           print 
"<table border='2' cellspacing='0' class='table'>";
           print 
"<tr><td class='td2'>Contraseña</td></tr>";

        while (
$reg1=mysql_fetch_array($registros))
        {    
              print 
'<form action="admindescarga.php" method="post" name='.$reg1['cod_archivo'].'>';
            
            print 
'<input size=5 type="hidden" name="cod" value="'.$reg1['cod_archivo'].'">';
            print 
'<input type="hidden" name="accion" value="descargar"/>';
            
            print 
'<td  class=td1><input size=5 type="text" name="pass" value="">';
        print (
"<font color=red>$error[1]</font><BR>");"</td>";
            
            print 
"<td><a href=javascript:enviar_formulario(".$reg1['alias'].")>Enviar formulario</a></td>";
            
            print 
"</form>";
        } 
    }
}
else  {
    print 
"El archivo está inactivo";
}

?>
</body>
</html>
La parte ke hay justo antes del update es lo que descarga el archivo desde

if (isset($_POST['accion']) && $_POST['accion'] == 'descargar' and $errores==false){

hasta

die("File not exist !!");
}
  #2 (permalink)  
Antiguo 18/05/2010, 07:13
Avatar de quike88  
Fecha de Ingreso: agosto-2008
Mensajes: 471
Antigüedad: 15 años, 7 meses
Puntos: 87
Respuesta: iniciar una descarga php

Tienes que poner $alias entre ' ' porque es una cadena, el error que te sale se debe a eso.

$sql="select * from archivos where alias = '$alias' ";
  #3 (permalink)  
Antiguo 18/05/2010, 10:15
Avatar de dengaku  
Fecha de Ingreso: enero-2010
Mensajes: 69
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: iniciar una descarga php

Cita:
Iniciado por quike88 Ver Mensaje
Tienes que poner $alias entre ' ' porque es una cadena, el error que te sale se debe a eso.

$sql="select * from archivos where alias = '$alias' ";

Gracias por molestarte :D en mirarlo ^^, quiero decir, si ese error se quita, pero el mayor, es que una vez va eso, en pantalla me aparece el formulario pero me da error cuando pulso el enlace, y ahi estoy ahora mismo atascado

Etiquetas: iniciar, descargas
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 09:10.