Beh... al posto di mandare l'indirizzo email puoi inviare nel link una stringa alfanumerica generata dinamincamente, che salvi nel DB nel record dell'utente che si vuole registrare.
Al click del link mandato per email puoi chiedere (che ne so) l'email o il nome con cui quell'utente si è registrato. Se corrispondono, allora vai avanti con la registrazione, altrimenti blocchi la procedura.
Codice PHP:
// pagina aperta dal link mandato per email
$stringa = $_GET['stringa_passata_dal_click_della_mail'];
$sql = "SELECT nome_utente FROM tabella_utenti WHERE codice_utente = $stringa ";
// esegui la query e tutto il resto
// confronti con un input chiesto all'utente
// dove chiedi di confermaere il nome utente
if ($_POST['input_utente'] == $risultati_query['nome_utente']) {
// procedi con la registrazione
} else {
// fermi la procedura
}
Spero di essere stato chiaro, e scusa se ci sono errori nello script ma l'ho scritto davvero al volo.