Activatie Bericht
Nu wil ik er alleen een activatie e-mail bij maken.
Maar ik weet niet hoe dat werkt.
Kan iemand me daarmee helpen?
Maar ook als ze email krijgen, ze op een link moeten klikken voor hun account geactiveerd is...
Je maakt een veld "bevestigd" in je SQL tabel, en een scripts bevestig.php?id=%userid% (link die je meestuurd in je mail) die de tabel aanpast, en bevestigd "ja" maakt.
Heel makkelijk..
Had niet gedacht dat het zo makkelijk kon :O
zet er wel iets van een beveiliging op, anders kan je gewoon eventjes alle gebruikersnamen activeren door naar die url tegaan met elke keer een ander nummer
Ik gebruik ook een ledensysteem maar het enige probleem dat ik heb is dat wanneer ik uiteindelijk men nieuwsbrief verstuur en de key (noodzakelijk voor uitschrijving wil meesturen) dan gaan alles gebruikers 1 mail aankrijgen met daarin al de gebruikers hun key . Eerder heb ik het script al eens gepost maar ik krijg er keer op keer geen reactie op. OF de reactie "gebruik dan mijn script" -> ik heb zoveel code niet nodig .
Hoe bedoel je met beveiliging Rick?
Code (php)
1
2
3
4
5
2
3
4
5
<?
$geheimtekstje = 'tekst'; // een tekst die alleen jij kent gewoon voor beveiliging
$wachtwoord = 'wachtwoord1'; // het wachtwoord van de gebruiker
$key = md5($geheimtekstje.$wachtwoord);
?>
$geheimtekstje = 'tekst'; // een tekst die alleen jij kent gewoon voor beveiliging
$wachtwoord = 'wachtwoord1'; // het wachtwoord van de gebruiker
$key = md5($geheimtekstje.$wachtwoord);
?>
en dan als link in het mailtje iets als activate.php?id=5&key=deMD5hash
en die dan laten controleren
activeer.php?key=dehash
Is dat nog steeds veilig of is het met het ID veiliger?
maar met aleen een hash is het ook goed
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$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;
?>
$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
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).
$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.
Quote:
Ik gebruik alleen de hash ...
activeer.php?key=dehash
Is dat nog steeds veilig of is het met het ID veiliger?
activeer.php?key=dehash
Is dat nog steeds veilig of is het met het ID veiliger?
Quote:
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
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
[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] :)
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...
Elwin
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?