Bevestigen van nieuw e-mailadres

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan R

Jan R

14/02/2020 08:39:59
Quote Anchor link
Hi,

Ik zoek een goed idee voor het bevestigen van een nieuw e-mailadres.

Gebruiker voert een nieuw adres in en er wordt een e-mail gestuurd om te bevestigen. Zo ver is het duidelijk maar hoe werken jullie verder?

Jan
 
PHP hulp

PHP hulp

19/03/2024 09:55:48
 
- Ariën  -
Beheerder

- Ariën -

14/02/2020 09:01:22
Quote Anchor link
Die bevestigingsmail heeft een URL met een unieke gegenereerde code. Zodra die aangeklikt wordt overschrijf je het adres, en verwijder je de unieke code uit de database.

Uit veiligheidsoverwegingen kan je de persoon ook meteen geforceerd uitloggen. Het is dan wel raadzaam om dan aan de gebruiker te melden dat dit gebeurt.

Ook raad ik aan om de bevestigingcode een verlooptijd van maximaal een dag te geven.
Gewijzigd op 14/02/2020 09:11:32 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2020 11:50:33
Quote Anchor link
Het bovenstaande is meer/ook geschikt voor een soort van "wachtwoord vergeten" functionaliteit.

Het wijzigen van een e-mailadres zou je gewoon via iemand zijn/haar profiel kunnen laten verlopen, eventueel met een extra opgave van het account-wachtwoord bij het wijzigen van dit stukje informatie. Dit omdat een e-mailadres mede wordt gebruikt om iemand te identificeren.

Als iemand niet meer de beschikking heeft over zijn/haar oude e-mailadres werkt de bovenstaande aanpak ook niet (er vanuitgaande dat de bevestiging naar het *oude* e-mailadres gaat, anders zou je iemand zijn account kunnen kapen op die manier :p), omdat het uitgaat van de beschikbaarheid van het oude+nieuwe e-mailadres.

En als zowel de situatie aan de orde is dat je zowel je wachtwoord vergeten bent alsook je (oude) e-mailadres is komen te vervallen zou je nog een controlevraag in kunnen bouwen waarmee je dingen opnieuw in kunt stellen ofzo. Maar normaal gesproken sta je het wijzigen van het e-mailadres niet zomaar toe lijkt mij.
 
Jan R

Jan R

14/02/2020 13:56:05
Quote Anchor link
Beiden bedankt voor de info. Ik kijk hoe ik het kan doen.
e-mail adres MOET eenvoudig bij te werken zijn door de gebruiker zelf. Het gaat over een ledenlijst.

De leden kunnen ook inloggen met hun telefoon/gsmnummer.

Alles moet nog werken in het bestaande systeem. Ik moet dus al zeker een paar kolommen nieuwe maken in de bestaande tabel contact.
hash, actief, wijziging wanneer, bevestigd,...


Jan
 
- Ariën  -
Beheerder

- Ariën -

14/02/2020 14:01:18
Quote Anchor link
Ik zou daarvoor een nieuwe tabel aanmaken.
Wat versta jij onder 'contact'?
Gewijzigd op 14/02/2020 14:01:47 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2020 14:31:45
Quote Anchor link
Het makkelijkste lijkt mij dan nog steeds om dit via het account zelf te doen (profielpagina oid), en het e-mailadres dient bevestigd te worden via een ingebouwde timeout, zoals @Ariën voorstelt, voordat deze daadwerkelijk actief is.

En op het moment dat je iets wijzigt in deze profielinformatie dan zou het bijbehorende huidige wachtwoord opgegeven moeten worden ter controle.

Dit lijkt mij de veiligste en simpelste oplossing.

Geldt trouwens het e-mailadres ook als de "gebruikersnaam" van het account (in een van de inlogvarianten, je hebt het hierboven ook over telefoon/GSM)?
 
Michael -

Michael -

14/02/2020 14:38:56
Quote Anchor link
Wat Thomas zegt inderdaad. Gebruikersinstellingen, e-mailadres wijzigen, wachtwoord invoeren, bevestigingsmail naar het nieuwe e-mailadres met een activatie link, en dan zou je zelfs nog een mail naar het oude e-mailadres kunnen sturen ter info.

Quote:
Alles moet nog werken in het bestaande systeem. Ik moet dus al zeker een paar kolommen nieuwe maken in de bestaande tabel contact.
hash, actief, wijziging wanneer, bevestigd,...

Nieuwe tabel, en in principe heb je genoeg aan hash, datum en userid om te koppelen met je 'contact' tabel.
Zodra de link succesvol is verwerkt, kun je deze regel verwijderen, of alleen de hash verwijderen als je dit graag bij wilt houden. e-mailadres in 'contact' updaten, klaar.

Edit: je zegt trouwens 'actief', maar ik zou het account niet gelijk deactiveren nadat iemand het e-mailadres heeft gewijzigd. Mocht de mail niet aankomen (of spam o.i.d.) of je link verlopen naar 24u, heb je een probleem.
Gewijzigd op 14/02/2020 14:41:26 door Michael -
 
Thomas van den Heuvel

Thomas van den Heuvel

14/02/2020 15:35:20
Quote Anchor link
Mwa, nieuwe tabel is misschien een beetje overkill, je zou een "state" kolom kunnen toevoegen voor de "toestand" van de gebruiker. Een kolom voor de timeout, een kolom voor een "fallback e-mailadres" en je bent er? En even uittekenen welke gebeurtenissen leiden tot welke "state", en welke states er allemaal zijn (active, pending_activation, pending_email_change, deleted etc.) zodat je daar ook een overzicht van hebt.

En dan zou je nog een cron moeten hebben die regelmatig de states controleert om timeouts te triggeren indien van toepassing.
 
Michael -

Michael -

14/02/2020 16:24:25
Quote Anchor link
Dat vind ik dan weer overkill. Als je gewoon de datetime of timestamp opslaat wanneer het e-mailadres is gewijzigd, incl. het nieuwe e-mailadres en een hash en de userid, dan ben je er al. Deze datetime kun je gewoon vergelijken wanneer men op de link klikt, daar is geen cron voor nodig. Je zou hooguit een cron kunnen gebruiken om de vervallen wijzigingen op te ruimen, maar zelfs dat is niet nodig.
Als je een aparte tabel neemt, krijg je geen vervuiling in je contact tabel en zou je ook kunnen zien of het misschien ergens mis gegaan is. ID 392 heeft al 8 keer een e-mailadres gewijzigd in een uur tijd.. hmmm.
 



Overzicht Reageren

 
 

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.