EDIT: scusa avevo capito male
Praticamente dove l'utente si logga o dove fai il controllo della sessione ti spari la funzione che aggiorna i dati dell'utente.
Ovviamente e' solo un'idea che aprte dal presupposto che la data end sia in formato sql e cio' implica che puoi fare anche un controllo del genere che php vede come controllo lessicografico che e' possibile fare su tale tipo di date.Codice PHP:
function controllaVip( $utente )
{
if( $utente[end]>date("Y-m-d H:i:s" , time() ) )
return false;
return true;
}
Senno basta che usi le timestamps e da data sql com mktime( ... ) ti genera la timestamp a partire da ora, minuti , secondi , mese , giorno , anno se nn ricordo male.
poi dove chiami la funzione fai il relativo update sulla tabella
if( $utente[vip]="true" && controllaVip( $utente ) )
//tutto ok
else
//fai l'update e downgrada l'utente.
p.s.
non mi ricordo come e' segnato il campo vip .... modificatelo in modo che il controllo sia corretto per i tuoi dati.