Zuätzlich zu einem normalen 
Login mit PHP benötigst du noch eine Tabelle 
Voucher mit den Feldern 
ID, 
Gültigkeitsdauer und 
Einlösedatum, ggf. noch 
Benutzer, wenn ein Voucher nur für einen Benutzer gültig sein soll.
Wird ein Voucher erstellt, werden nur die Felder 
ID und 
Gültigkeitsdauer (und ggf. 
Benutzer) gefüllt. Will sich ein Nutzer dann anmelden, muss er zusätlich zu seinen Credentials eine Voucher-ID eingeben. Beim Login kann dann überprüft werden, ob der Voucher schon mal verwendet wurde (Einlösedatum ist 
NULL), ober der Voucher gültig ist (Einlösedatum + Gültigkeitsdauer </= aktuelles Datum) oder ob der Voucher abgelaufen ist (Einlösedatum + Gültigkeitsdauer > aktuelles Datum). Wie du die unterschiedlichen Ergebnisse dann behandeln willst, ist dir selbst überlassen...
Und um einen Voucher zu tracken musst du einfach nur jedem Inhalt eine eindeutige ID verpassen, den Voucher nach dem Login in eine Session speichern und bei jedem Aufruf eines Inhalts die entsprechende ID und den Voucher in eine DB verschieben.
Edit: Das ganze funzt natürlich auch ohne das PHP-Login... Dann wird nur überprüft ob der Voucher bekannt/gültig/abgelaufen ist...