04. april 2005 - 23:11Der er
21 kommentarer og 1 løsning
bekræfte tilmeldingen pr mail
Hej med jer. Jeg håber i kan hjælpe mig. Jeg er ikke klar over, om det er PHP gruppen jeg skal stille mit spm, men jeg prøver. På min side har jeg lavet en tilmeldingsformular, hvor brugeren bl.a. skal indtaste sin mailadresse. For at kontrollere at denne mailadresse rent faktisk findes, vil jeg gerne, at han automatisk får tilsendt en mail hvor der er et "bekræftigelseslink" - Altså noget som kan give mig vished om, at denne mailadresse rent faktisk findes, og at det er den rigtige brugeren har indtastet. Jeg ved ikke helt hvordan noget sådant fungerer i praksis, men jeg kunne forestille mig, at jeg først fik et praj, når brugeren har klikket på bekræftigelseslinket. Hvordan laves noget sådant, så det kører automatisk?
Når en bruger tilmelder sig registerer du vedkommendes email adresse samt f.eks. en md5 hash som du kan vælge tilfældigt. Linket skal så sende email og hash i urlen, hvor du så kan checke hvorvidt det stemmer med det der er registeret
-- tilmeld.php -- // Antag at vi har $email mail($email,"aktiver",sprintf("Aktiver med dette link %s/activate.php?email=%s&hash=%s",$_SERVER['SERVER_NAME'],$email,md5($email . "hemmelig streng")));
-- activate.php if ($_GET['hash'] == md5($_GET['email'] . "hemmelig streng")) { mysql_query("UPDATE usertable set activ = 'y' WHERE email = '" . $_GET['email'] . "'"); }
1000 tak for de hurtige svar. Jeg må indrømme, at jeg ikke har ret meget forstand på dybere kodning... Jeg er vist egentlig bedst til at copy / paste en stump kode ind på siden. Og databaser... Der står jeg desværre også af. Lyder det som om det er for stor en opgave for sådan een som mig, eller er det i virkeligheden ret simpelt hvis man bruger lidt tid. Og hash.... Det er da noget der ryges :-)
blot ved en formular oprettet i frontpage. Det er sådan set en maillingliste brugeren skal kunne tilmelde sig, og lige pt putter jeg manuelt email adresserne i et excel ark. Det er ved at blive lidt omfattende så jeg kunne godt tænke mig noget automatiseret. Samtidig er der mange der indtaster mailadresser som ikke eksisterer, så dem vil jeg gerne sortere fra med en valideringsmail
Hmmm, så kommer det jo nok til at tage en del tid. Hvis jeg var dig, ville jeg først starte med at få sat dine brugerinfo/mailadresser ind i en MySQL-database. Uden det, så bliver valideringen lidt svær.
Ellers så skal du jo lave den løsning at du manuelt sender dem en mail med et link, der så sender dig en valideringsmail. Så lave et felt i dit excel-ark hvor du skriver om de er validerede eller ej :) Nok lidt tosset løsning, men afhængigt af hvor mange du har osv. osv. så kan det jo lade sig gøre når du allerede har det nu...
Okay, så kan du bruge det her jeg lige har fedtet sammen. Der er 3 variabler i toppen som du kan rette på. Den første er din emailadresse du modtager emails på når folks email er blevet valideret korrekt. Den anden er hvilken fil PHP scriptet kan bruge til at logge data. Hvis denne ikke findes eller PHP ikke har rettigheder vil man få en fejlbesked når man kører scriptet. Den sidste er hvor længe der må gå fra man tilføjer sin email til man skal have klikket på linket. Det er angivet i sekunder så ligenu er det sat til 30 minutter.
For at tilføje en emailadresse sender du folk til "scriptname.php?email=<deresemail>", og så burde resten ske automatisk.
<?
// This mail will recieve the subscription emails then they are validated $admin_email = '';
// A file used to store the emails not validated $validate_file = 'emailvalidate.txt';
// Timeout $timeout = 60*30;
if (!(file_exists($validate_file) && is_readable($validate_file) && is_writeable($validate_file))) { print "Logfilen findes ikke, eller scriptet kan ikke læse eller skrive til den"; exit(); }
// Write the rest to the file again $fp = fopen($validate_file,'w'); $clines = count($write_through); for($i = 0;$i < $clines;$i++) { fwrite($fp,$write_through[$i]); } } }
if (!$sendt) { print "Der gik noget galt. din mail er ikke blevet sendt"; } } elseif($_GET['email']) { $activate_hash = md5('activate ' . md5($_GET['email'])); $link = $_SERVER['SERVER_NAME'] . $_SERVER['PHP_SELF'] . '?activate=' . $_GET['email'] . '&hash=' . $activate_hash;
if (file_exists($validate_file)) { $fp = fopen($validate_file,'a+'); fwrite($fp,sprintf("\n%s:%s",$_GET['email'],time())); }
mail($_GET['email'],'klik på linket for at aktivere det',$link); print "Der er sendt en aktiveringsmail med et link du skal klikke på"; }
Jeg er meget taknemmelig over det du har hjulpet mig med, men jeg har lige et tillægsspørgsmål: Du skriver: For at tilføje en emailadresse sender du folk til "scriptname.php?email=<deresemail>", og så burde resten ske automatisk. Hvordan får jeg deres email fra et tekstfeldt ind i URL´en - sådan rent praktisk?
Hej igen bromer. Jeg har lige et spm mere. Det kører faktisk helt perfekt bortset fra, at der ikke kommer http:// foran linket, hvilket vil sige, at folk ikke blot kan klikke på linket. Det virker kun, hvis det copy/pastes ind i adresselinien. Kan du hjælpe mig med det også?
Hej igen bromer. Det er sandelig hurtig respons. Det kan godt være, at jeg er komplet PHP mongol, men jeg kan ikke se, hvor linket bliver generert, og dermed hvor jeg skal indsætte http:// Kan du udpensle det?
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.