Przykladowo.
Osoba rejestrujaca sie musi podac login i haslo. Dodajesz to do database
Tabela moze wygladac tak:
username(varchar) | password (text) | passChangeDate (DATE NOW())
Wiec przy rejestracji dodajesz username password do bazy a passChangeDate automatycznie ustawi sie na czas kiedy rekord byl dodany.
Przy systemie logowania sprawdzasz czy dane sie zgadzaja pobierasz zawartosc tabelki passChangeDate robisz if() i sprawdzasz czy owy wynik byl dodany wiecej niz 30 dni temu.
Jesli tak, pokazujesz okno zmiany hasla (oczywiscie musisz zadbac ze na kazdej stronie wtedy otrzymasz owe okno) osoba wpisuje 2 razy nowe haslo, updatujesz password, updatujesz passChangeDate = NOW().
I to wszystko