Foros del Web » Programando para Internet » PHP »

Una contraseña para cada archivo

Estas en el tema de Una contraseña para cada archivo en el foro de PHP en Foros del Web. Buenos dias, Estoy intentando proteger unos arhivos .txt que hay en una carpeta. Para poneros en situación, esos archivos llevan el nombre de cada persona. ...
  #1 (permalink)  
Antiguo 06/01/2008, 04:32
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Una contraseña para cada archivo

Buenos dias,

Estoy intentando proteger unos arhivos .txt que hay en una carpeta.

Para poneros en situación, esos archivos llevan el nombre de cada persona.
Osea que en la carpeta /Ejemplo encontramos:

pepe.txt
juanito.txt
fulana.txt
...
Entonces yo lo que quisiera esque al entrar en www.web.com/Ejemplo/pepe.txt
le pidiera una contraseña que yo se le asignaria a él y solo el supiera.

Lo mismo que para entrar a www.web.com/Ejemplo/juanito.txt a éste le pidiera otra contraseña distinta.

Lo que quiero decir esque para ver o descargar su archivo .txt cada uno tuviera una contraseña y que solo funcionará para el archivo asignado.

Osea, que con X contraseña solo se podria acceder a pepe.txt, luego con otra contraseña solo se podria acceder a juanito.txt

He encontrado muchos scripts que protegen archivos y/o carpetas. Pero claro, esos scripts con que añadas una contraseña, ya puedes acceder a todos los archivos y eso no quiero.

Un saludo y muchas gracias,

PD: Sería hacerlo sin BD ,si se puede claro.!
  #2 (permalink)  
Antiguo 06/01/2008, 09:28
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Una contraseña para cada archivo

Los archivos txt no permiten eso. Me parece bastante inseguro porque si alguien encuentra esos archivos sería bastante peligroso.

No sería mejor en vez de un txt, ¿un php?

Código PHP:
<?php
if (!empty($_SESSION['password']) && $_SESSION['password'] == true){
      
/**
      * CODIGO QUE VERAN LOS QUE SEPAN LA PASSWORD
    */
} else {
    if (isset(
$_POST['submit'])){
        if (
$_POST['password'] == "contraseña"){
            
session_start();
            
session_cache_limiter('nocache,private');
            
            
$_SESSION['password'] = true;
            echo 
"Bienvenido, por favor accede al contenido: <a href=\"index.php\">Aquí</a>";
        } else {
            echo 
"CONTRASEÑA INCORRECTA!! <br /> <a href=\"index.php\">Volver</a>";
        }
    } else {
?>
<form action="index.php" method="post" enctype="multipart/form-data" name="form">
    <input type="password" name="password" />
    <input type="submit" name="submit" value="Enviar" />
</form>
<?
    
}
}
?>
Si necesitas problemas para entender el código dimelo
  #3 (permalink)  
Antiguo 06/01/2008, 10:33
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Re: Una contraseña para cada archivo

Mmm ese código no me vale. Porque vale, en vez de txt, van a ser zip para descargar.

Entonces que pasa? Que si hago uso de ese código, cualquiera que obtenga la contraseña podra descargar todos los zips. Y eso no.
A mi me gustaria que para cada .zip hubiera una contraseña.
De tal manera que si entro a www.web.com/carpeta/pepe.zip
le pida una contraseña (EJ; pass)
Y luego aquel que acceda a:
www.web.com/carpeta/fulando.zip
Le pida otra contraseña distinta (EJ; yanose)

Eso es lo que quiero. Que cada archivo,zip...lo que sea, tenga una contraseña y que sin contraseña no puedieras descargarlo.

Es que claro, como he dicho antes,utilizando este tipo de código no consigo exactamente eso.

Muchas gracias de todas formas,

Un saludo,
  #4 (permalink)  
Antiguo 06/01/2008, 11:11
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Una contraseña para cada archivo

Pues lo que debes hacer es crear más o menos esto:

Código PHP:
<?php
if (!empty($_SESSION['password']) && $_SESSION['password'] == true){
    
session_start();
    
header("location descargas/".$_SESSION['nombre']);
} else {
    if (isset(
$_POST['submit']) && isset($_GET['id'])){
        switch (
$_GET['id']){
            case 
"fulano":
                
$contraseña "contraseña_fulano";
                
$nombre "pepe.zip";
                break;
            case 
"pepe":
                
$contraseña "contraseña_pepe";
                
$nombre "pepe.rar";
                break;
        }
        if (
$_POST['password'] == $contraseña){
            
session_start();
            
session_cache_limiter('nocache,private');
            
            
$_SESSION['password'] = true;
            
$_SESSION['nombre'] = $nombre;
            echo 
"Bienvenido, por favor accede al contenido: <a href=\"index.php\">Aquí</a>";
        } else {
            echo 
"CONTRASEÑA INCORRECTA!! <br /> <a href=\"index.php\">Volver</a>";
        }
    } else {
?>
<form action="index.php?id=<? echo $_GET['id'?>" method="post" enctype="multipart/form-data" name="form">
    <input type="password" name="password" />
    <input type="submit" name="submit" value="Enviar" />
</form>
<?
    
}
}
?>
  #5 (permalink)  
Antiguo 06/01/2008, 11:24
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Re: Una contraseña para cada archivo

Perfecto, eso es lo que busco.

Pero hay un problema. Y esque al entrar en esa pagina, introduzco la contraseña de fulano, y no me lleva al archivo de fulano,osea al (pepe.zip) , sino que me lleva al index.php

Un saludo y muchas gracias,
  #6 (permalink)  
Antiguo 06/01/2008, 11:36
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Una contraseña para cada archivo

Fallo de novato!! Si no he inicializado la sesión ¿Cómo va a no estar vacío $_SESSION?

Madre mia, jeje. Toma, corregido:
Código PHP:
<?php
session_start
();
if (!empty(
$_SESSION['password']) && $_SESSION['password'] == true){
    
header("location: descargas/".$_SESSION['nombre']);
} else {
    if (isset(
$_POST['submit']) && !empty($_GET['id'])){
        switch (
$_GET['id']){
            case 
"fulano":
                
$contraseña "contraseña_fulano";
                
$nombre "pepe.zip";
                break;
            case 
"pepe":
                
$contraseña "contraseña_pepe";
                
$nombre "pepe.rar";
                break;
        }
        if (
$_POST['password'] == $contraseña){

            
session_cache_limiter('nocache,private');
            
            
$_SESSION['password'] = true;
            
$_SESSION['nombre'] = $nombre;
            echo 
"Bienvenido, por favor accede al contenido: <a href=\"index.php\">Aquí</a>";
        } else {
            
session_destroy();
            echo 
"CONTRASEÑA INCORRECTA!! <br /> <a href=\"index.php\">Volver</a>";
        }
    } else {
?>
<form action="index.php?id=<? echo $_GET['id'?>" method="post" enctype="multipart/form-data" name="form">
    <input type="password" name="password" />
    <input type="submit" name="submit" value="Enviar" />
</form>
<?
    
}
}
?>

Última edición por jpeeri; 06/01/2008 a las 11:41
  #7 (permalink)  
Antiguo 06/01/2008, 12:21
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Re: Una contraseña para cada archivo

Buenas noches de nuevo,

Que va, sigue sin funcionar. Me pasa exactamente el mismo problema de antes, aparte de que esta vez arriba de la pagina, me sale el siguiente error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/webos/public_html/pag.php:1) in /home/webos/public_html/pag.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/webos/public_html/pag.php:1) in /home/webos/public_html/pag.php on line 2

Un saludo y de nuevo mil gracias y a ver si se consige solucionar!

Gracias,
  #8 (permalink)  
Antiguo 06/01/2008, 12:27
jpeeri
Invitado
 
Mensajes: n/a
Puntos:
Re: Una contraseña para cada archivo

Reinicia el navegador porque a mí sí que me funciona. Tal vez sea porque al probar este código y otro se haya creado un conflicto.
  #9 (permalink)  
Antiguo 06/01/2008, 12:34
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 9 meses
Puntos: 1
Re: Una contraseña para cada archivo

el problema es que... si yo ahora cojo un programa de estos que descargan webs enteras, me descarga todos los archivos de tu web ^^ sin necesidad de contraseñas...

Por que no haces .rar con su propia contraseña y pones un robots.txt en el directorio?
  #10 (permalink)  
Antiguo 06/01/2008, 12:45
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Re: Una contraseña para cada archivo

Pues no lo entiendo, sigue sin funcionar. He reininciado el navegador y tal y nada.
Eso si, esta vez los errores que salian arriba en la pagina no me salen, pero al introducir la contraseña, me sigue llevando al index

Esto es lo que tengo...
Código PHP:
<?php
session_start
();
if (!empty(
$_SESSION['password']) && $_SESSION['password'] == true){
    
header("location: descargas_de_prueba/".$_SESSION['nombre']);
} else {
    if (isset(
$_POST['submit']) && !empty($_GET['id'])){
        switch (
$_GET['id']){
            case 
"fulano":
                
$contrasena "contraseña_fulano";
                
$nombre "fulano.zip";
                break;
            case 
"pepe":
                
$contrasena "contraseña_pepe";
                
$nombre "pepe.zip";
                break;
        }
        if (
$_POST['password'] == $contrasena){

            
session_cache_limiter('nocache,private');

            
$_SESSION['password'] = true;
            
$_SESSION['nombre'] = $nombre;
            echo 
"Bienvenido, por favor accede al contenido: <a href=\"index.php\">Aquí</a>";
        } else {
            
session_destroy();
            echo 
"CONTRASEÑA INCORRECTA!! <br /> <a href=\"index.php\">Volver</a>";
        }
    } else {
?>
<form action="index.php?id=<? echo $_GET['id'?>" method="post" enctype="multipart/form-data" name="form">
    <input type="password" name="password" />
    <input type="submit" name="submit" value="Enviar" />
</form>
<?
    
}
}
?>
lestatminiyo, tienes razón en lo que dices, pero no hago eso porque no se me habia ocurrido, aparte que no tengo ni idea de como se hace.

Muchas gracias de nuevo,
  #11 (permalink)  
Antiguo 06/01/2008, 12:51
 
Fecha de Ingreso: junio-2006
Mensajes: 84
Antigüedad: 17 años, 9 meses
Puntos: 1
Re: Una contraseña para cada archivo

Tutorial: como poner contraseñas a zips y rars
  #12 (permalink)  
Antiguo 07/01/2008, 09:08
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 6 meses
Puntos: 74
Re: Una contraseña para cada archivo

Buenas tardes,

Al final lo he hecho de la manera que ha dicho aqui lestatiminiyo, aunque me hubiera gustado más hacerlo con el código que puso jpeeri, que aún hoy me sigue sin funcionar...

Bueno, muchas gracias por todo,
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 12:08.