Ver Mensaje Individual
  #11 (permalink)  
Antiguo 06/10/2006, 07:21
Avatar de .php
.php
 
Fecha de Ingreso: julio-2006
Mensajes: 481
Antigüedad: 17 años, 9 meses
Puntos: 5
yo hice algo muy parecido.
que me liste el contenido de un directorio que no este dentra de la carpeta del servidor, es decir, los archivos no estaban a la vista para ser descargados.
Primero cree una pagina que valida un usuario y crea un inicio de sesion
codigo del index.php
Código HTML:
<?php
    session_start(); // retoma una session que exista y si no la crea...
	session_unset(); // Elimina las cookies y valores de variables que puedan existir
	session_destroy(); // destruye la session que pueda existir
?>
<html>
<body>
<form action="valida.php" method="post" name="form1">
            <table width="18%"  border="0">
              <tr>
                <td width="14%" align="right">Usuario</td>
                <td width="2%">&nbsp;</td>
                <td width="84%"><input name="user" type="text" size="15"></td>
              </tr>
              <tr>
                <td height="19" align="right">Contrase&ntilde;a</td>
                <td height="19">&nbsp;</td>
                <td><input name="password" type="password" size="15"></td>
              </tr>
              <tr>
                <td height="19" align="right">&nbsp;</td>
                <td height="19">&nbsp;</td>
                <td><input name="BtnAceptar" type="submit" value="Ingresar"></td>
              </tr>
              <tr>
                <td height="19" align="right">&nbsp;</td>
                <td height="19">&nbsp;</td>
                <td>&nbsp;</td>
              </tr>
            </table>
</form>
</body>
</html>
<?php 
echo "<script language='JavaScript' type='text/JavaScript'>";
echo "document.form1.user.focus()";
echo "</script>";
?> 
en la pagina valida.php tengo usuarios y claves que son fijas, pero ustedes la pueden conectar a una BD y validar al usuario , es facil ;D

valida.php
Código PHP:
<?
session_start
();
$user    =    $_POST["user"];
$pass    =    $_POST["pass"];
if(
$user==".php" and $pass=="123456" or $user=="x2" and $pass=="123"){
    
$_SESSION["user"] = $user;
    
$_SESSION["path"] = "/home/Descargas/";
    echo 
"<script language='javascript'>window.top.location='./listar.php'</script>";
}elseif(
$user=="x1" and $pass=="123456" ){
    
$_SESSION["user"] = $user;
    
$_SESSION["path"] = "/home/x1/";
    echo 
"<script language='javascript'>window.top.location='./listar.php'</script>";
}else{
    echo 
"<script language='javascript'>window.top.location='./index.php'</script>";
}
?>
y en listar lo que hago muestro el contenido y genero la descarga obligatoria de la misma pagina.

listar.php
Código PHP:
<?
session_start
();
if (isset(
$_SESSION["user"])){
    
$name    =    base64_decode($_GET["id"]);
    
$name    =    base64_decode($name);    
    
$aTmp    =    explode("-",$name);

    if (
$aTmp[0]=="descargas"){
        
$enlace $_SESSION["path"]."$aTmp[1]";
        
header ("Content-Disposition: attachment; filename=".$aTmp[1]."\n\n"); 
        
header ("Content-Type: application/octet-stream"); 
        
header ("Content-Length: ".filesize($enlace)); 
        
readfile($enlace); 
        exit;
    }
?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" >
    <link href="./style.css" rel="stylesheet" type="text/css">
    <body>
    <ul id="botones">
      <?
        
while ($archivo $directorio->read())     { 
            
$aux    =    base64_encode("descargas-".$archivo);
            for(
$i=0;$i<=9;$i++){
                
$id=base64_encode($aux);    
            }        
            print(
"<li>\n
            <div align=\"center\"><a href=\"?id=$id\"><span class=\"TexFil\">$archivo</span></a></div>\n
            </li>\n"
);
        } 
        
$directorio->close(); 
    }else{
        echo 
"<script language='javascript'>window.top.location='../index.php'</script>";
    }
    
?> 
</ul>
</p>
</body>
</html>

si tienen, este metodo para realizar descargas es buenisimo, asi no te roban la url por que aunque la tengan no van a poder descargar si no iniciaron sesion