Uniek id maken voor validatie mail

Overzicht

Sponsored by: Vacatures door Monsterboard

Thomas de vries

thomas de vries

14/02/2011 10:26:48
Anchor link
Goeden morgen.

Ik heb een vraag ik zit met een register script wat goed werkt.
Alleen nu heb ik een vraag,
zodra een user zich heeft geregistreerd dan krijgt deze user een validatie mail
om zijn email adress te laten valideren.
Echter wil ik dat het id dus uniek is voor dat email adress.
Ik gebruik nu dit om te valideren.
gedeelte van mijn code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<form method="post" action="">
//Hier de form velden niet van belang op dit moment.
<input type="hidden" name="valid" value="<?php echo mt_rand(1,10000); ?>">
//Hier de submit.
</form>


Nu wordt de mail verstuurd en daar staat dit in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$email_body
= 'welkom '.$_POST['regracename'].'.
Klik op de link hieronder om je email adress te valideren.

http://www.blaat.net/activeren/'
.$_POST['valid'].'

Wij hopen dat je veel plezier beleeft bij dit spel.

Met vriendelijke groeten Raventh(Eigenaar).'
;
?>


Dus de gebruiker krijgt een link van
http://www.blaat.net/activer/21

Maar nu is die link niet uniek
want als er nu iemand in de db is met een andere email adress en dezelfde id=21 nummer dan valideert ie alle email adressen wat als emailvalid=21 heeft.

Hoe kan ik dat nummer dus uniek krijgen.

Alvast bedankt.

Met vriendelijke groet,

Thomas de vries.
Gewijzigd op 14/02/2011 10:27:23 door Thomas de vries
 
PHP hulp

PHP hulp

21/11/2024 19:19:29
 

14/02/2011 10:51:33
Anchor link
Sowieso niet in de form zetten. Is nergens voor nodig.
Je kunt met tijd werken, een hash maken, uniqueid gebruiken enzovoort.
Verder is je query nu dan ook niet goed.
 
Thomas de vries

thomas de vries

14/02/2011 11:03:16
Anchor link
Dan wordt die uniqueid wel lang van zo te zien als ik het voorbeeld volg van php.net
Maar waarom niet in een veld laten genereren. is dat vanwege veiligheid overwegingen?

En waarom zou mijn query nu dan ook niet goed zijn?

Met vriendelijke groet,

Thomas de vries.
 
Arjan -

Arjan -

14/02/2011 11:15:15
Anchor link
Dat de id in de url dan langer wordt boeit niet, het is immers veiliger aangezien men niet alleen dmv de id van de user zo maar een account kan activeren. En het lijkt mij logischer dat elke user een uniek id toegewezen krijgt, want met meerdere accounts op 1 id ga je problemen krijgen.

Om voor elk record een uniek id te krijgen dien je het veld een unieke sleutel en een auto increment mee te geven. Hierdoor zal de id automatisch worden opgehoogd met 1 wanneer een nieuw record wordt toegevoegd. Hierdoor zal je nooit eenzelfde id in de database krijgen.
Gewijzigd op 14/02/2011 11:19:39 door Arjan -
 
Thomas de vries

thomas de vries

14/02/2011 11:18:29
Anchor link
in de db staan de user wel met een uniek id. dat is geen probleem.
Wil dus dat die validatie mailtjes een uniek id krijgen.
als ik dat met uniqueid doe dan zien gebruikers dit in de url staan.
www.blaat.nl/activeren/15687745689

op zich niet erg maar vindt het niet mooi staan.
 
Arjan -

Arjan -

14/02/2011 11:23:33
Anchor link
Ga eens kijken hoe andere websites dat doen. Daar zie je ook lange strings in de activatie url staan. Allemaal omdat het veiliger is. Dat het niet mooi staat boeit geen zak. Ze klikken 1 keer op de link en zoekmachines zien die links niet. Dus geen zorgen over maken. En je zal als extra beveiliging nog de unieke id van de user mee kunnen zenden in de activatielink. Dan heb je een combinatie waar je op kan controleren.

En gooi over je uniqid een md5 hash zodat de string niet alleen bestaat uit cijfers.
Gewijzigd op 14/02/2011 11:25:29 door Arjan -
 
Thomas de vries

thomas de vries

14/02/2011 11:25:43
Anchor link
ja inderdaad ik zal is kijken wat ik kan doen.
Bedankt voor jullie reacties.
 
Ocirina Ocirina

Ocirina Ocirina

14/02/2011 14:26:24
Anchor link
Mischien is dit iets? Wat zeggen jullie ervan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

    $validcode
= md5(rand(11111,99999));

    $result = mysql_query("SELECT validcode FROM users WHERE validcode='" . $validcode . "' ");

while($result > 0)
{

    
    if($result > 0)
    {

        $validcode = $validcode . rand(1,9);
    }

    else
    {
        $email_body = 'welkom '.mysql_real_escape_string($_POST['regracename']).'.
        Klik op de link hieronder om je email adress te valideren.
        http://www.blaat.net/activeren/'
.$_POST['validcode'].'
        Wij hopen dat je veel plezier beleeft bij dit spel.
        Met vriendelijke groeten Raventh(Eigenaar).'
;
    }

}

?>
Gewijzigd op 14/02/2011 14:27:03 door Ocirina Ocirina
 
- SanThe -

- SanThe -

14/02/2011 17:22:32
Anchor link
Dit is natuurlijk zinloos. Waarom iets selecteren wat je al weet?
SELECT validcode FROM users WHERE validcode='....'

En mysql_real_escape_string(..) is voor sql en hoort niet in een email.
Gewijzigd op 14/02/2011 20:09:16 door - SanThe -
 
Ocirina Ocirina

Ocirina Ocirina

14/02/2011 17:59:49
Anchor link
Ja, sorry ik dacht dat het nog in de db. Moes worden gevoegd.
 

14/02/2011 19:47:32
Anchor link
Thomas de vries op 14/02/2011 11:03:16:
Dan wordt die uniqueid wel lang van zo te zien als ik het voorbeeld volg van php.net
Maar waarom niet in een veld laten genereren. is dat vanwege veiligheid overwegingen?

De gebruiker heeft dan nog niks te maken met dat id, dus waarom zou je het naar de browser toe sturen? Nergens voor nodig. Bovendien kan de gebruiker dat dan ook weer gaan aanpassen.

Thomas de vries op 14/02/2011 11:03:16:
En waarom zou mijn query nu dan ook niet goed zijn?

Thomas de vries op 14/02/2011 10:26:48:
(...)Maar nu is die link niet uniek
want als er nu iemand in de db is met een andere email adress en dezelfde id=21 nummer dan valideert ie alle email adressen wat als emailvalid=21 heeft.(...)

Omdat het over een combinatie van id en e-mailadres gaat.

Arjan - op 14/02/2011 11:15:15:
(...)
Om voor elk record een uniek id te krijgen dien je het veld een unieke sleutel en een auto increment mee te geven. Hierdoor zal de id automatisch worden opgehoogd met 1 wanneer een nieuw record wordt toegevoegd. Hierdoor zal je nooit eenzelfde id in de database krijgen.

Fout. Gebruik geen auto increment. Eigenlijk is dat een ontzettend stomme functie. Als je weet dat er gebruik wordt gemaakt van aut increment, dan kan je dus voor allemaal accounts de boel gaan valideren door steeds +1 te doen (of facatures opvragen, etc.).
 
Arjan -

Arjan -

14/02/2011 20:14:17
Anchor link
Karl Karl op 14/02/2011 19:47:32:

Arjan - op 14/02/2011 11:15:15:
(...)
Om voor elk record een uniek id te krijgen dien je het veld een unieke sleutel en een auto increment mee te geven. Hierdoor zal de id automatisch worden opgehoogd met 1 wanneer een nieuw record wordt toegevoegd. Hierdoor zal je nooit eenzelfde id in de database krijgen.

Fout. Gebruik geen auto increment. Eigenlijk is dat een ontzettend stomme functie. Als je weet dat er gebruik wordt gemaakt van aut increment, dan kan je dus voor allemaal accounts de boel gaan valideren door steeds +1 te doen (of facatures opvragen, etc.).


Je interpreteert mijn antwoord verkeerd (al was het volgens mij wel duidelijk wat ik bedoelde). De TS gaf aan dat hij op één id meerdere e-mailadressen heeft staan. Vandaar dat ik aangaf hoe je in mysql alle records een uniek id kan meegeven. Dit had alleen betrekking op de database structuur en niet op de opbouw van de activatielink!
Gewijzigd op 14/02/2011 20:17:36 door Arjan -
 
Thomas de vries

thomas de vries

14/02/2011 20:19:50
Anchor link
@arjan

Ik heb wel een uniek id en dat is userid
deze is uniek en autoincrement. voor de users.
maar emailvalid is niet uniek en daar wou ik dus op gaan controleren.
Maar ik laat het nu dus controleren op
userid en email adress samen.

Maar zit dus nu met het volgende probleem
En heb daar een nieuwe post voor aangemaakt.
zie
http://www.phphulp.nl/php/forum/topic/validatie-mail-blijft-zeggen-email-adress-is-gevalideerd/76340/last/
 
B a s
Beheerder

B a s

14/02/2011 20:28:42
Anchor link
Slotje
 
 

Dit topic is gesloten.



Overzicht

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.