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?
[quote][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...[/quote]
Ik bedoelde dus dat als ID 1 is de hash anders is dan die van 2.
Dus met een ID dat auto_increment is zou je op deze manier nooit een probleem krijgen met dezelfde hash :)
Waarom 2 keys?
Ik weet niet waar je het voor maakt maar zolang het geen overheidsinstantie oid is ( en ookal was het dat ) denk ik dat 1 wel genoeg is ... :)
Waarom 2 keys?
Ik weet niet waar je het voor maakt maar zolang het geen overheidsinstantie oid is ( en ookal was het dat ) denk ik dat 1 wel genoeg is ... :)
Omdat je op die manier de theoretische kans dat je twee keer dezelfde hash in je DB hebt staan elimineert...
En het laat zich raden wat er kan gebeuren als twee gebruikers dezelfde hash hebben en willen activeren (dan wordt dus twee keer de eerste account geactiveerd en de tweede niet).
Het is nu allemaal gelukt :)
Iedereen hardstikke bedankt :)
Alleen als ik actkey een unieke waarde wil geven, krijg ik de volgernde mysql error:
Fout
SQL-query :
ALTER TABLE `leden` ADD UNIQUE (
`actkey`
)
MySQL retourneerde:
#1062 - Duplicate entry '' for key 2
Nu het volgende probleem bij het aanmelden:
Hij kijkt wel of een gebruikersnaam al in gebruik is, maar niet of het email adress al in gebruik is.
Ik gebruik deze code, maar die werkt niet.
Kan iemand me helpen?
code:
<?
$telem = mysql_query("SELECT email FROM leden WHERE gebruikersnaam='".$_POST["gebruikersnaam"]."'") or die($error[1]);
$numem = mysql_num_rows($telem);
if($numem == "1")
{
echo"<center>Dit e-mail adress bestaat al! U moet een ander e-mail adress invullen!</center>";
}
[quote]Waarom 2 keys?
Ik weet niet waar je het voor maakt maar zolang het geen overheidsinstantie oid is ( en ookal was het dat ) denk ik dat 1 wel genoeg is ... :)
Omdat je op die manier de theoretische kans dat je twee keer dezelfde hash in je DB hebt staan elimineert...
En het laat zich raden wat er kan gebeuren als twee gebruikers dezelfde hash hebben en willen activeren (dan wordt dus twee keer de eerste account geactiveerd en de tweede niet).[/quote]
Als je bv zoals ik al eerder zei als hash de ids gebruikt kunnen ze toch nooit hetzelfde worden.
Daarbij komt nog (in mijn geval dan) op het moment van de activatie laat ik de rij met de hash op 0 zetten.
Maar wanneer je 2 verschillende ids hebt kunnen ze toch nooit hetzelfde zijn?
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?
Dat is een leuk verhaal, maar je laat nergens in je hyperlink terug komen bij welke gebruiker het zou horen. Dat betekend dus dat je alle records gaat doorlopen.
Wat ik zou doen:
activatiemail met de hyperlink met daarin twee variabelen te weten email en sleutel.
De variabele email wordt gevuld met het emailadres en de variabele sleutel wordt gevuld met een md5() van een leuk woordt in combinatie met een random getal.
Vervolgens zet je die hash in de database in de record waar emailadres in voor komt.
Als je in de e-mail de hyperlink aanklikt dan kom je op de pagina daar doe je zoiets:
activatie.php:
<?php
if (empty($_GET['email']) || empty($_GET['sleutel']))
{
echo "Deze activering is niet gevonden!";
} else {
// De record opzoeken
$query = mysql_query("SELECT id FROM tabel WHERE email = '$_GET[email]' AND sleutel = '$_GET[sleutel]'");
$num = mysql_num_rows($query);
if (empty($num))
{
echo "Deze activering is niet gevonden!";
} else {
// Fetch het resultaat
$id = mysql_fetch_row($query);
// Update de record... zet activering op Ja of 1 en haal de hash weg uit de record
$update = mysql_query("UPDATE tabel SET sleutel = '', geactiveerd = 'ja' WHERE id = '$id[0]'");
// $id[0] dus uit de eerste query
Als je bv zoals ik al eerder zei als hash de ids gebruikt kunnen ze toch nooit hetzelfde worden.
Daarbij komt nog (in mijn geval dan) op het moment van de activatie laat ik de rij met de hash op 0 zetten.
Maar wanneer je 2 verschillende ids hebt kunnen ze toch nooit hetzelfde zijn?
@ spacefrog, zoiets heb ik nu ook, maar ik werk niet met de email, maar met echte naam.
Maar ik zit nu dus bij het andere probleem, zie daarvoor mijn vorige post
[quote]Als je bv zoals ik al eerder zei als hash de ids gebruikt kunnen ze toch nooit hetzelfde worden.
Daarbij komt nog (in mijn geval dan) op het moment van de activatie laat ik de rij met de hash op 0 zetten.
Maar wanneer je 2 verschillende ids hebt kunnen ze toch nooit hetzelfde zijn?
Nee.. dan kunnen ze niet gelijk zijn... [/quote]nou uhm das niet helemaal waar
met md5 is het zo dat meerdere woorden dezelfde hash hebben
zo zouden kip en ei bijvoorbeeld dezelfde hash kunnen hebben
maar de kans dat je een dubbele vind bij een hash als md5 is te verwaarlozen
het zijn 32 hex karakters dus meer dan genoeg mogelijkheden