Możesz zrobić sobie dodatkowe pole w bazie w tabeli użytkownika na np. klucz aktywacyjny oraz dodatkowe pole na maila w formularzu. W miejscu gdzie rejestracja przebiegła pomyślnie, dodaj wysyłanie maila z kluczem aktywacyjnym i jednocześnie dodaj ten klucz do tego dodatkowego pola w bazie. Jeżeli user kliknie na wysłanego mu linka z kluczem i będzie się on zgadzał z jego loginem i zapisanym wcześniej do bazy kluczem aktywacyjnym - możesz go aktywować usuwając dane o kluczu. W innym przypadku (jeżeli user nie potwierdzi maila) dodaj dodatkowy warunek przy logowaniu się if(pole z bazy klucz aktywacyjny nie jest puste) to user nie może być zalogowany.
Może w punktach będzie czytelniej:
1. Dodajesz nowe pole w bazie w tabeli usera, żeby dodawać tam klucz aktywacyjny.
2. Dodajesz nowe pole do uzupełnienia w formularzu rejestracji na adres e-mail
3. Zmieniasz trochę warunki "pomyślności" rejestracji (dodajesz obowiązek wypełnienia pola z mailem)
4. W miejscu "rejestracja przebiegła pomyślnie" generujesz losowy ciąg znaków (np. rand() + nick + czas)
5. Wysyłasz ten wygenerowany ciąg w postaci linka na adres e-mail usera (np. www.strona.pl/index.php?user=marcin&uid=MUASbbyuj#56as2322dsd33c6
5. Jeżeli user kliknie na link - pobierasz o nim dane z bazy i wywołujesz sprawdzanie poprawności,
np. if ($_GET['uid] == $uid_pobrany_z_bazy) dla użytkownika marcin (gdzie uid to klucz)
6. Jeżeli warunek zostaje spełniony, możesz np. nadać polu z kluczem wartość NULL
7. Przy logowaniu, pobierasz z bazy również dane o kluczu aktywacyjnym i dodajesz dodatkowy warunek do formularza logowania:
np. if ($klucz_pobrany_z_bazy == NULL)
8. Jeżeli $klucz_pobrany_z_bazy nie będzie NULL, to user nie aktywował konta
PS. Możesz jeszcze potrzebować dodać pole w bazie, żeby przechowywać adres e-mail, chyba że login = e-mail

.