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