Hola,
Bueno. Pues ya está. No del todo, porque al cabo no estamos utilizando la fecha del enlace, pero, la cosa va bastante "rápida" y bien, puesto que hemos procurado utilizar el
Cliente HTTP muy básicamente: únicamente requerimos la cabecera HTTP del recurso (enlace), no nos quedamos con "Cookies", ni con "refererers", etc.
Este es el método que hemos añadido a la clase "ValidarEx" conque contamos en la aplicación:
Código PHP:
function VisitaEnlace($urlEnlace)
{
if(!parse_url($urlEnlace))
return false;
$datosUrl = parse_url($urlEnlace);
$host = '';
if(isset($datosUrl['host']))
$host = $datosUrl['host'];
$path = '/';
if(isset($datosUrl['path']))
$path = $datosUrl['path'];
$puerto = 80;
if(isset($datosUrl['port']))
$puerto = $datosUrl['port'];
$agente = 'Loturak v'.APP_VERSION.' (' .APP_DOMINIO_WEB. ')';
require('httpclient.class.php');
$http = new HttpClient($host, $puerto);
$http->setDebug(false);
$http->setMaxRedirects(5);
$http->setHeadersOnly(true);
$http->setUserAgent($agente);
$http->setPersistCookies(false);
$http->setHandleRedirects(true);
$http->setPersistReferers(false);
$http->get($path);
return ($http->getStatus() == 200);
}
// Es decir, utilizamos la función tal que así:
$urlEnlace = 'http://www.unenlace.es';
if(!ValidarEx::VisitaEnlace($urlEnlace))
{
XHtml::ErrorVisitandoEnlace($urlEnlace);
die;
}
La cosa funciona más o menos así:
http://www.loturak.es/visitar?enlace-id=4386
¿Porqué no hemos utilizado la función "fopen"? Bueno... nos parece que lo que nos ofrece el Cliente HTTP nos interesa: por lo pronto se encargará de redirigir a los usuarios al enlace correcto, en caso de que las cabeceras HTTP de la petición que se lleva a cabo así lo indique.
¿Qué os parece del asunto?
![Smilie](http://www.clubdelphi.com/foros/images/smilies/smile.gif)