Tengo entendido que en php existen funciones para generar el hash md5, al menos el compañero dec las utiliza en su proyecto loturak, no se si son propias del lenguaje o usa alguna librería adicional. Pero volviendo al tema de tu pregunta, puedes generar una clave que tenga, por ejemplo, el siguiente formato:
Código:
Fecha+'?'+md5(Fecha+Clave)
Por ejemplo:
Código:
Fecha = 08/12/2006
Clave = 'Clave'
La llave resultante seria = 08/12/2006?e24aa1c25bd93d7e1ec894b79986ae80
Tu programa pediría que se le ingresara esa llave. La fecha sabemos que es todo lo que se encuentre a la izquierda del '?'. Con esa fecha podremos calcular la fecha de caducidad, y calculando su md5 junto con la clave, podemos comprobar que no se manipulo la fecha.
El código en delphi seria algo así:
Código Delphi
[-]
const
Clave = 'Clave';
function TestKey(Key: String): String;
var
i: integer;
begin
Result:= EmptyStr;
i:= Pos('?',Key);
if i > 0 then
if Copy(Key,i+1,MAXINT) = StrCheckSum(Copy(Key,1,i-1)+Clave) then
Result:= Copy(Key,1,i-1);
end;
Solo falta el código para generar la clave en php, aunque no creo que resulte difícil es mejor que te ayude alguien con mas experiencia en este lenguaje. Yo te dejo como seria en Delphi, para que te hagas una idea:
Código Delphi
[-]
function GenKey(Fecha: String): String;
begin
Result:= Fecha + '?' + StrCheckSum(Fecha+Clave);
end;
Key:= GenKey(DateToStr(Date));
En los ejemplos anteriores use la siguiente librería para generar los md5: