Foros del Web » Programando para Internet » PHP »

Link temporal

Estas en el tema de Link temporal en el foro de PHP en Foros del Web. Hola, Envio este post para preguntarles como podeía hacer un link que fuese temporal, o sea que pasado un cierto tiempo dejáse de ser válido. ...
  #1 (permalink)  
Antiguo 09/05/2014, 11:25
Avatar de veniwarez  
Fecha de Ingreso: julio-2010
Mensajes: 110
Antigüedad: 13 años, 9 meses
Puntos: 3
Link temporal

Hola,
Envio este post para preguntarles como podeía hacer un link que fuese temporal, o sea que pasado un cierto tiempo dejáse de ser válido.
Quiero que por ejemplo un usuario de mi web que quiera descargar una imágen, le aparezca un link a ella por ejemplo miweb.com/descargar.php?id=300 ó miweb.com/imagenes/imagen1.png y que al hacer click se descargase esa imágen y que entonces dejáse de ser funcional ese link y la dirección de la imágen para evitar que pudiera compartir la dirección de la imágen.

Si necesitan que aclare alguna cosa no duden en preguntar.

Muchísimas gracias
Atte Veniwarez
  #2 (permalink)  
Antiguo 09/05/2014, 11:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Link temporal

Pues, supongo que tienes un archivo PHP que genera la descarga, si es así, cuando el usuario acceda al enlace, dejas que realice la descarga e inmediatamente eliminas los datos del enlace de la BD, porque intuyo que ahí la guardas previamente. De este modo, ya no podrá ser descargada en el futuro.

Es solo una idea, quizá puedan haber mejores formas de hacerlo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 09/05/2014, 12:16
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Link temporal

En el propio enlace puedes guardar el tiempo de expiracion pero lo que haces es encriptar esa informacion junto con el ID de forma que no se pueda alterar el tiempo de caducidad ;)

En realidad haces esto para ahorrarte una tabla en la base de datos y simplificar desde ese lado el asunto, aunque tambien te ofrece algo de seguridad porque estas al mismo tiempo encriptando tu ID.

Tu enlace puede lucir asi:

Cita:
<a href="www.miweb.us/f84a2g88df14f1">Descargar<a>
Pero como tu dices que son imagenes (cosa que no habia leido en principio)....... lee al final de mi post y pues segun mi idea se veria asi el enlace:

Cita:
<a href="www.miweb.us/imagenes/f84a2g88df14f1" alt="pato feo">patito feo<a>

Código PHP:
<?php
include "codear.php";  

$id 405;
$coded =  encodear_temporal($id); 
?>

<a href="www.descargame.us/<?php echo $coded?>">Descargar<a>
Aca recibes el enlace via GET :

Código PHP:
<?php
/*
    Funciones de codificacion simples
    CodeAR
    
    @author: Pablo Bozzolo *italico76*
*/

# auxiliar
function swapstr($s){    
    
$endpos strlen($s)-1;
    
$last     $s[$endpos];
    
$first  $s[0];
    
$s substr_replace ($s $last ,01); 
    
$s substr_replace ($s $first ,$endpos1); 
    return 
$s;
}

# coding
function ofusca_key($n){
    return 
swapstr(strval(dechex(1000 $n*$n)));
}    
    
#decoding
function desofusca_key($s){
    return 
sqrt(hexdec(swapstr($s)) -1000);
}    

///// * //////

function encodear_temporal($id){
    return 
swapstr(ofusca_key($id).'g'.ofusca_key((time()- 1399000000)*2));
}

/*
 @param : link codificado
 @return : id , timestamp
*/
function decodear_temporal($link){        
    list(
$_id,$_ts) =  explode('g',swapstr($link));    
    
$id desofusca_key($_id);
    
$ts = (desofusca_key($_ts) + 1399000000)/2;
    return array(
$id,$ts);    
}

function 
get_link($link,$margen 3600){
    list(
$id,$time) = decodear_temporal($link);
    
    if (
time() - $margen $time)
        return 
$id;
            
    return 
NULL;    
}
Todo junto para que veas como funciona aqui

Para el caso de imagenes...... me imagino sabras que la imagen es en realidad una imagen.php

Código PHP:
Ver original
  1. <?php
  2. /*
  3.     Imagen
  4. */
  5. header('Content-Type: image/jpeg');
  6. readfile('path/to/myimage.jpg');
  7.  
  8. //...
__________________
Salu2!

Última edición por Italico76; 09/05/2014 a las 14:20

Etiquetas: link, temporal
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 15:30.