Basicamente o que deves fazer é, a meu ver, depois de validares os campos do registo, criares uma chave aleatória que irás guardar num campo da base de dados.
Supondo que registas utilizadores numa tabela do género:
Create Table Users
(id int(11) not null,
nome nvarchar(50) not null,
email nvarchar(50) not null,
activo tinyint(1) default 0,
chave_gerada nvarchar(64) ) ,
e após teres feito um insert na tabela o ideal deverá ser a produção de uma palavra aleatória, recorrendo ao random e o md5, por exemplo, para preencheres o campo chave. Assim, o utilizador preenche os dados e tu, aquando do comando INSERT incluis também uma chave unica. Procedes ao envio de um link via e-mail do estilo
http://www.omeusite.com/registo.php?ky=<chavecriadaparaconfirmacao>&id=<id_do_utilizador>
Procedes à comparação entre a chave enviada e a chave da bd e, em caso de serem equivalentes, o campo activo na tabela users passa a ter o valor de 1. Desta forma, para um utilizador fazer um login ou para visualizares todos os os utilizadores o campo activo deve ser 1.
Ex. $sql = "SELECT * FROM Users Where activo = 1"
Espero ter ajudado... É uma ideia para fazer isso
1abraço!