Das is ganz einfach:
(ich setze mal MySQL vorraus

)
Du hast eine Tabelle, nennen wir sie Userdaten mit den Spalten user_id, password, status, email, confirmation_code
Wenn sich jemand registriert, dann trägts du ganz normal mit SQL die Daten in die Tabelle ein, setzt den Status auf 0, und generierst einen Bestätigungscode (z.B. zufallszahl, ein kleiner string z.B. user, dazu die IP und microtime() in einen String packen, das ganze mit md5 verschlüsseln).
Dann wird mit mail() eine E-mail verschickt mit einem Bestätigungslink a la
http://www.deine-domain.de/dein-proj...6786hgghhg76gh
Wobei Code natürlich der generierte Code aus der DB ist.
Sobald er diesen Link klickt, ändert dein Skript den Status von 0 auf 1.
Man kann mit Status dann z.B. 0 = registiert, aber nicht bestätigt, 1 = bestätigt, 3 = Mod, 4 = admin usw
oder du machst ein extra feld, in dem du Festhälst, ob der User seinen Account bereits per E-Mail bestätigt hat.
cya max