Ik heb dus een zelf gemaakt leden script.
Nu wil ik er alleen een activatie e-mail bij maken.
Maar ik weet niet hoe dat werkt.
Kan iemand me daarmee helpen?
@ rik

dan maak je een while loop die checked of de hash al in de database bestaat. mocht die bestaan, dan loopt ie nog een x etc
Dit is een stukje uit een script van mezelf:

<?
$uniekehash=false;
//Haal de datum op
$date=date("Y-m-d");
//Zoalang uniekehash niet true is, maak nieuwe hashes aan en check of ie niet al voor komt
while(!$uniekehash){
//Maakt de hash aan
$hash=md5(time());
// voorkom dubbele hashes:
$result=mysql_query("SELECT * FROM TABELHIER WHERE id = '$id' AND hash = '$hash'")
or die(mysql_error());
//Als resultaat 0 is, staat er dus niet 2x eenzelfde hash in de database en mag het script door
if(mysql_num_rows($result)==0){
//Breek uit de while loop door uniekehash op true te zette
$uniekehash=true;
?>

dit is een stukje uit mijn script dus je zal hie ren daar wat moeten veranderen maar werkt verder rpime. suc6
dat kan ja, maar dat is nogal database onvriendelijk
als je een index op ID hebt staan zal dat gewoon een stuk sneller werken en daarom is dat ook aan te raden

en hoezo een while loop?
wat dacht je van dit:
SELECT COUNT(*) FROM tabelnaam WHERE hash = hash
tis opzich maar een kleine query die je uitvoert... bij mij loopt het iig prima (rond 2000 records).
Ik gebruik nu hetvolgende:

$lijst = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
$aantal = count($lijst)-1;
$kkkey='';
for($i=0; $i<25; $i++){
$nr = rand(0,$aantal);
$kkey .= $lijst[$nr];
$keyy = md5($kkey);
$key == md5($wachtwoord);
$actkey = $keyy.$key;
?>

werkt het zo of niet?
Ik doe die actkey ook in een database, zodat dat weer gecontroleert kan worden.
uhm waarom niet gewoon zoiets dan?
<?
$nummer = rand()*1000;
$actkey = md5($wachtwoord.$nummer);
?>
Ik gebruik alleen de hash ...

activeer.php?key=dehash

Is dat nog steeds veilig of is het met het ID veiliger?


er is een zeeeeeeeeeeeeeeer kleine kans dat meerdere mensen dezelfde hash krijgen en dan zou je dus (in theorie) problemen kunnen krijgen

maar met aleen een hash is het ook goed

Wat je ook kunt doen als je de id geheim wilt houden (omdat het makkelijk te achterhalen is of weet ik wat) is een ander veld mee te sturen... Meest logische lijkt mij e-mailadres:
[email protected]&sleutel=md5-hash

Elwin
[1] Omdat mensen niet weten wat jij allemaal in de hash propt is het sowieso wel veilig denk ik toch
[2] Elke hash is toch anders? Dus als ik bv het ID in de hash zou zetten moet ik toch telkens een andere krijgen?
[3] Meer velden (bv email of id) lijken me wat omslachtig zie punt [1] :)
[2] Elke hash is toch anders? Dus als ik bv het ID in de hash zou zetten moet ik toch telkens een andere krijgen?

Uhm.. nee... elke hash in md5 van een andere tekst is anders. Op elke computer is de hash in md5 hetzelfde. Het wordt dus niet random gegenereerd, want dan zou het ook geen goed systeem zijn om wachtwoorden op te slaan...

Elwin
Ok.
Ik zit nu met het volgende.
Ik heb nu dus een activatie code.
Het gaat een beetje als deze link:

activatie.php?key1=4636g43&key2=65ehsdyh533
Nu is key1 dus het wachtwoord in md5, en key2 een random gegenereerd woord.
Ze staan allebij in de database.
Nu wil ik dus kijken of ze
1) Bij elkaar passen
2) Bij welk ID ze horen.
Kan iemand me daarmee helpen?

Reageren