Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/02/2009, 20:47
dunga007
 
Fecha de Ingreso: febrero-2009
Mensajes: 151
Antigüedad: 15 años, 2 meses
Puntos: 1
Sistema de descargas php

Hola! me decidi a escribir ya que estoy teniendo un problema que no puedo resolver y me parece que este sitio es el mas apropiado ya que siempre que busco info en google aparezco aqui :D
Mi problema es que estoy tratando de crear un area de descarga a la que se puede acceder con un usuario y contraseña que se comprueba desde una base de datos mysql y que segun el usuario y contraseña que se coloque es el archivo que se puede descargar. tengo 2 archivos php y una base de datos, el archivo del formulario tiene el siguiente codigo:

Código HTML:
<form id="form1" name="form1" method="post" action="descarga.php">
  <table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
    
    <tr>
      <td colspan="3">
        <table width="350" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td>Nombre de usuario:</td>
          <td><label>
            <input type="text" name="usuario" id="usuario" />
          </label></td>
        </tr>
        <tr>
          <td>Contraseña:</td>
          <td><label>
            <input type="password" name="clave" id="clave" />
          </label></td>
        </tr>
      </table>
        <p>
          <label>
          <div align="center">
            <input type="submit" name="button" id="button" value="Enviar" />
          </div>
          </label>
        </p>
        </td>
    </tr>
  </table>
      </form> 
y el archivo descarga.php que llama el formulario tiene el siguiente codigo:

Código HTML:
<?
session_start();  


if ($usuario && $clave)
{
  $db_conn = mysql_connect("loclhost", "root", "root");
  mysql_select_db("mybasededatos", $db_conn);
  $query = "select * from usuario "
           ."where usuario='$usuario' "
           ." and clave='$clave'";
  $result = mysql_query($query, $db_conn);
  
  if (mysql_num_rows($result) >0 )
  {
    // si están en la base de datos registra la id de usuario
    $valid_user = $userid;
    session_register("valid_user");
  }
}

  
	
	if (session_is_registered("valid_user"))
  {

$db_conn = mysql_connect("loclhost", "root", "root");
  mysql_select_db("mybasededatos", $db_conn);
  $query = "SELECT usuario.nombre,
                        usuario.link
			FROM usuario
			WHERE usuario = '$usuario'";
  $result = mysql_query($query, $db_conn);
  $row=mysql_fetch_array($result);
  $nombre=$row["nombre"];
  $link=$row["link"];


$files=array($link);
$filenames=array($nombre);
$url="aqui se coloca la url";  


$referer=ereg_replace("\?.","",$HTTP_REFERER);
$thisfile="$HTTP_HOST$PHP_SELF";

if ($referer!=$thisfile)
for ($i=0;$i<count($files);$i++)
echo "<P><A HREF=\"$PHP_SELF?$i\">",$filenames[$i],"</A>\n";

else {
$i=$QUERY_STRING;
$total=$url . $files[$i];
Header ("Content-Type: application/octet-stream");

Header ("Content-Length: ".filesize($total));
Header("Content-Disposition: attachment; filename=$filenames[$i]");

readfile($total);
}
}

else
  {
    if (isset($userid))
    {
      // si han intentado hacer login y ha fallado
      echo "No has podido hacer login";
    }
    else
    {
      // si no han intentado hacer login  y no han hecho logged out
      echo "Usuario y contraseña incorrectos<br>";
    }
  }
  
?> 
El problema es que cuando en la segunda consulta coloco la variable $usuario el script no funciona correctamente, no llama al archivo a descargar pero si remplazo $usuario por cualquier usuario que tenga en la base de datos entonces ahi funciona perfectamente, el problema es que como dije el archivo a descargar va variar dependiendo del usuario y contraseña que se coloque al comienzo. Saludos amigos y espero puedan darme alguna ayuda