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 ,0, 1);
$s = substr_replace ($s , $first ,$endpos, 1);
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