Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/05/2014, 12:16
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
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