Per l'id potresti usare la funzione uniqid().
Attento che non garantisce che il codice generato sia davvero univoco, ma ci sono ottime probabilità che lo sia.
Quando generi il codice, prima di assegnarlo all'utente, esegui una select sulla tabella in cerca di tale codice, se non lo trova lo assegni all'utente, se invece lo trova, vuol dire che lo aveva già generato in passato, quindi ne generi un altro e riprovi finché non ne hai uno ancora non usato.

Lo script activate.php riceve tramite get la variabile regcode, quindi la recupera con $_GET['regcode'] ed usa questo valore in una select.
Se trova una corrispondenza, esegui una nuova query, stavolta update per cambiare il valore di "attivo" da 0 a 1, se non la trova non fai niente, probabilmente qualcuno sta cercando di inserire codici a caso.