Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:09 Der er 14 kommentarer og
1 løsning

Bekræft tilmelding til nyhedsbrev

I mit nyhedsbrev skal brugeren selv kunne oprette sig. De skal kunne udfylde flere felter såsom email, fornavn, efternavn, adresse, etc.

Når brugeren trykker på tilmeld sendes der en bekræftelsesmail til den indtastede mail. Det link de får i mailen vil så indeholde de variabler de har indtastet i formularen. Og når de klikker på det er de oprettet i min DB.

Problemet er så, at når de indtaster fx. adressen, lad os sige "Gaden 7" vil linket indeholde et mellemrum og derved ikke virke, da linket bliver brudt.

Hvordan undgår man det?

Her er den PHP jeg har brugt til at lave linket der skal sendes til emailen: http://www.domæne.dk/subscribe.php?email=$email&subscribe=yes&forname=$forname&lastname=$lastname&phone=$phone&street=$street&&zip=$zip&city=$city&birth=$birth

Denne bekræftelsesmail sendes i PLAIN TEXT.

Jeg forsøgte at lave en HTML tag, men det dur jo ikke i PLAIN TEXT mails.
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:10 #1
Skulle måske lige sige at i DB er "street" det som jeg kalder "adresse". Dvs. at hele "Gaden 7" står i "street".
Avatar billede Slettet bruger
19. januar 2004 - 09:20 #2
Hver eneste af dine variable skal lige køres en gang igennem urlencode()

Men har du overvejet at have en ekstra tabel til folk, der endnu ikke har bekræftet?

I den tabel skal du bare have alle felterne + et unikt id og og en bekræftelseskode.

Bekræftelseskoden kan du for eksempel lave med md5(uniqid())

Så skal du bare sende en url i stil med:
$kode=md5(uniqid());

http://www.domæne.dk/subscribe.php?id=$id&kode=$kode
Avatar billede Slettet bruger
19. januar 2004 - 09:21 #3
Man kan naturligvis også lave det, så det kun er nødvendigt med koden.
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:27 #4
Det med den ekstra tabel:
Vil du så midlertidigt lægge alle oplysninger i den midlertidige tabel og når der så bekræftes flyttes det over i den "rigtige" tabel?
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:28 #5
Undskyld. Det skriver du jo i princippet.
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:31 #6
Hvad mener du med at: "Hver eneste af dine variable skal lige køres en gang igennem urlencode()"
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:37 #7
OK. Har lige læst lidt om URLENCODE. Det må da umiddelbart være den letteste løsning. Prøver det lige.

Er der en fordel ved at lægge det i en midlertidig tabel først? Andet end udseendet af bekræftelsesmailen.
Avatar billede Slettet bruger
19. januar 2004 - 09:38 #8
Der er en del tegn, der ikke er tilladt i en adresse. Før du laver linket skal du gøre således:


$email=urlencode($email);
$forname=urlencode($forname);

osv.


Men ja.

Man kan også lave et lille felt i sin almindelige brugertabel, der hedder mailconfirm og bare indeholder 0 eller 1. Så sætter man brugeren ind i den almindelige brugertabel med det samme og sætter mailconfirm til 0. Samtidig opretter man en post i en anden tabel, hvor der bare skal stå brugerid og koden.

På subscribe.php-siden kontrollerer man bare, om der i bekræftelsestabellen er en entry med de aktuelle værdier, og hvis der er sættes mailconfirm i brugertabellen til 1. Så sletter man brugeren fra bekræftelsestabellen igen.
Avatar billede Slettet bruger
19. januar 2004 - 09:41 #9
Hvis folk får alle data i en url kan de jo rette dem der. Så skal du til at kontrollere gyldigheden to gange - både når du laver dit link, og når de klikker på det.
Avatar billede Slettet bruger
19. januar 2004 - 09:43 #10
Ulempen ved den anden metode med et mailconfirm-felt i den almindelige brugertabel er, at så skal man kontrollere dette felt i alle forespørgsler.
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 09:53 #11
Så det du i bund og grund siger er at jeg bør lave en "midlertidig-tabel". Så får de en bekræftelsesmail med $kode=md5(uniqid());.

Det bliver dagens projekt. Takker og vender tilbage når jeg får set lidt mere på det. Har du noget som jeg lige SKAL huske som er en normal ting at glemme?
Avatar billede Slettet bruger
19. januar 2004 - 09:58 #12
Hvis de KUN får den køde, og ikke samtidig et id, skal du lige sikre dig at koden er unik.
Avatar billede Slettet bruger
19. januar 2004 - 09:59 #13
Og der skulle naturligvis stå kode - ikke køde. ;-)
Avatar billede tvbrandt Nybegynder
19. januar 2004 - 10:24 #14
Tak
Avatar billede tvbrandt Nybegynder
10. juni 2004 - 21:04 #15
x
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester