[PHP] Mailadres voor bestelling eerst nagaan *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hallo,

Ik wil graag een bestel formulier maken, dit kan simpel, wanneer je op verzenden drukt krijg ik dan de aanvraag binnen als e-mail.

Maar ik zou graag eerst willen dat diegene zelf zn aanvraag in zn mailbox krijgt, en dan op en soort activatielink moet klikken... dan komt ie op mijn site met het bericht dat de bestelling gedaan is.

Dit om te voorkomen dat elke malloot met willekeurig mailadres bestellingen gaat plaatsen die achteraf nep blijken te zijn.

Wie heeft er een idee/voorbeeld/ of suggestie van hoe ik dit het beste veilig kan doen?

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Dat kan niet met HTML. Hiervoor zul je een server-side scripttaal als ASP moeten gebruiken. Of gewoon zelf een mailtje terugsturen en vragen om bevestiging.

Acties:
  • 0 Henk 'm!

  • Pogostokje
  • Registratie: September 2001
  • Laatst online: 19-09 16:50

Pogostokje

* twiet *

Nou, da's niet zo moeilijk hoor.

Mailadres opnemen in een database met een kenmerkje dat hij niet gevalideerd is. Mail versturen met een een of andere code in de URL waar op geklikt moet worden. Die URL kijkt of de code klopt met wat er verzonden is en als dat goed is dan weet je dat het mailadres ook in ieder geval werkt en kan je het kenmerkje omzetten en/of andere akties uitvoeren.

... ook ik heb soms per ongeluk gelijk.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

*!*!* Over topictitels in P&W - Updated 25 feb 04 *!*!*
Welkom in P&W: FAQ en Beleid *updated: 26-01*
Misschien handige kost om door te lezen, je noemt bijvoorbeeld geen taal waar je het mee wil aanpakken... Het er in ieder geval op neerkomen dat je bij het registreren een hash moet aanmaken van de tijd of iets dergelijks, en deze opslaan in je DB, gekoppeld aan een bepaalde user, en dan mailen naar het ingevulde adres. Als dan de link in de mail gevolgd wordt waar die hash dus in staat kijk je of die in de database voorkomt, en zo ja activeer je de gebruiker die erbij hoort.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

In welke taal? B)
(let ook ff op: *!*!* Over topictitels in P&W - Updated 25 feb 04 *!*!*)

Voor PHP zou je kunnen kijken hoe phpBB het doet. Is volgens mij redelijk standaard :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • E-Vix
  • Registratie: Juni 2000
  • Laatst online: 19-09 14:42

E-Vix

Nu met sneeuw!

Er zijn tientallen scripts op internet verkrijgbaar waar je dit mee kunt doen, en zelf kan je het ook heel eenvoudig maken.
Gooi de hele bestelling in een database, en zorg dat je een extra veld hebt voor geverifieerd, en een extra veld voor een verificatie code.
Mail de verificatiecode naar de gebruiker, en laat hem met een directe link de verificatiecode verifieren, of maak een pagina waar hij die code op in kan voeren.
Zoek aan de hand van de verificatiecode de bestelling, en zet hem op geverifieerd.

Hoe je de verificatiecode opbouwt moet je zelf weten, maar zorg er in ieder geval voor dat het niet makkelijk door de gebruiker zelf te bedenken is. Gebruik bijvoorbeeld de functie MD5 in PHP om een mooie code te genereren (normaalgesproken gebruik je MD5 om wachtwoorden etc. mee te encrypten, maar de output is ook mooi voor een code te gebruiken)

Failed opening '/home/users/7942/signature.inc' for inclusion (include_path='.:') in /home/www/got/userstats.php on line 25


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heej, ja sorry van de titel....

Kan natuurlijk met PHP, maar ik sta open voor andere dingen...

@E-Vix
Dat moet lukken, bedankt... ik ga eens wat proberen.

Acties:
  • 0 Henk 'm!

  • Gods Lonely Man
  • Registratie: April 2002
  • Laatst online: 19-02-2024

Gods Lonely Man

A sidekick's sidekick

als je het gedeelte na het @ teken door de volgende functie laat controleren. Krijg je als er een niet bestaand domein FALSE terug. dan heb je in ieder geval nog een extra check. Het totale email adres controleren kan niet (dacht ik)
PHP:
1
gethostbyname('example.com');

It was that kind of a crazy afternoon, terrifically cold, and no sun out or anything, and you felt like you were disappearing every time you crossed a road.

If it weren't for Carbon-14, I wouldn't date at all.


Acties:
  • 0 Henk 'm!

  • Anders
  • Registratie: December 2000
  • Laatst online: 13-09 18:52
Een tipje vooraf: stuur nooit een identifier mee per e-mail op basis van een auto increment key van een database, bv doordat ze een link als volgt moeten aanklikken:

code:
1
http://www.website.nl/confirm.php?id=17


Er komen keer op keer bedrijven in het nieuws die het presteren om met zulke knulligheden de fout in gaan: Slimme Henkie hoeft dan immers alleen maar het nummertje te veranderen om bestellingen van anderen te bevestigen. Werk dus met hashes, bv als volgt:

code:
1
http://www.website.nl/confirm.php?id=f96428870d92ae35a582e3017a5e1d82


/Achteraf: oftewel, wat E-vix zegt dus.

[ Voor 3% gewijzigd door Anders op 10-03-2004 14:19 ]

Ik spoor veilig of ik spoor niet.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PsychoBoy schreef op 10 maart 2004 @ 11:53:
als je het gedeelte na het @ teken door de volgende functie laat controleren. Krijg je als er een niet bestaand domein FALSE terug. dan heb je in ieder geval nog een extra check. Het totale email adres controleren kan niet (dacht ik)
PHP:
1
gethostbyname('example.com');
Ja, een mailadres kan ik controleren... cijfers/letters-@-cijfers/letters-.-cijfers/letters

Maar het ging er dus om dat de gebruiker wel zijn eigen adres op geeft... ivm zijn bestelling.

Wat ik tot nu toe heb werkt aardig. De gebruiker kan bestellen, hij krijgt zijn mail met bestelling en een md5code van zijn mailadres.
Deze kan ik vast wel als link verwerken in de naar hem toegestuurde e-mail die dan naar de website verwijst. Bij het aanklikken kan mijn site de tijdelijke bestelling vergelijken uit de database en opgeslagen md5code. Is de code gelijk aan de code die bij de bestelling hoort, dan kan deze verstuurd worden naar de eigenaar van de site.

Volgens mij werkt dit zo goed en veilig.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Waarom gebruik je een md5 van het mail adres? Het lijkt me veel beter en veiliger waneer deze verificatie code niet afgeleid, maar compleet random is. Nu is het, zodra iemand je algo weet, gewoon mogenlijk om een fake adres op te geven en ook de verificatie link goed te gokken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op 10 maart 2004 @ 14:26:
Waarom gebruik je een md5 van het mail adres? Het lijkt me veel beter en veiliger waneer deze verificatie code niet afgeleid, maar compleet random is. Nu is het, zodra iemand je algo weet, gewoon mogenlijk om een fake adres op te geven en ook de verificatie link goed te gokken.
Mmmm, dat is zo ja, goeie opmerking, ik dacht er meer aan dat het uniek moest zijn, maar een random code is natuurlijk nog beter.

Thuis eff aanpassen...

Acties:
  • 0 Henk 'm!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 14:27

Freee!!

Trotse papa van Toon en Len!

Verwijderd schreef op 10 maart 2004 @ 14:36:
[...]
Mmmm, dat is zo ja, goeie opmerking, ik dacht er meer aan dat het uniek moest zijn, maar een random code is natuurlijk nog beter.

Thuis eff aanpassen...
E-mail adres is een goede basis, maar ik zou datum en tijd er ook in verwerken (precieze tijd is toch niet te gokken en 0,1 seconde verschil geeft al een totaal andere hash-waarde), eventueel aangevuld met nog een random-nummer.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Mr. Liu schreef op 10 maart 2004 @ 14:42:
[...]

E-mail adres is een goede basis, maar ik zou datum en tijd er ook in verwerken (precieze tijd is toch niet te gokken en 0,1 seconde verschil geeft al een totaal andere hash-waarde), eventueel aangevuld met nog een random-nummer.
Het heeft natuurlijk weinig nut om verschillende semi random dingen te combineren tot een random getal. Je krijgt er namelijk echt niet een unieker of meer random hash door.

Ik zou zelf gewoon gaan voor een link met daarin 2 parameters. 1 parameter met een getal die de bestelling uniek identificeerd (wat gewoon autonummering kan zijn. ID van de bestelling dus) en nog een parameter die als verificatie code geldt. De uniekheid wordt door de eerste parameter bepaald, en de random/veiligheid door de tweede.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1