02. november 2005 - 21:48Der er
8 kommentarer og 1 løsning
Simpel underskriftindsamling
Jeg ønsker at lave en meget simpel underskriftindsamling med PHP, det skal blot være så brugerne kan indtaste navn, e-mail og postnr og så vises det efter de har godkendt deres e-mail som de har fået en mail om. Er det kompliceret?
Jeg skal bruge det fredag, så hvis I evt. kan pege på en artikel et sted er det også fint, jeg har lidt viden om PHP på forhånd, så kan nok godt lave selve indsamling, det er det med e-mail verifikation der driller.
Hvis du selv har noget viden om PHP, burde du selv kunne lave dette system, det er meget simpelt. Du skal bruge: - En database med en enkelt tabel til dine brugere, husk et felt der viser em de er bekræftede eller ej. - En side der lister alle underskrifter. - En side hvor man kan tilmelde sig, denne side sender din email ud med mail() funktionen, eller PEARS mail klasser. Denne mail indeholder et link til den sidste side du skal bruge. Linket skal indeholde email adressen og en unik værdi til hver bruger, f.eks. md5(emailadresse.'hemmeligt kodeord'). - En side der bekræfter din tilmelding. Hvis den unikke værdi der kommer med er lig med md5(emailadresse.'hemmeligt kodeord') er underskriften ok og processen er færdig
Det skal siges at min viden om PHP er meget begrænset, så hvis en kan demonstrere hvordan det foregår med md5 og osv. så kan jeg nok godt sætte det sammen?
Sådan der. Alle informationerne burde være der nu. Husk at skifte database settings.
<?php /* Opret database med CREATE TABLE signature ( signature integer not null auto_increment primary key, name varchar(255), email varchar(255), created datetime not null, zip varchar(10), accepted datetime ); */
mysql_connect('','',''); mysql_select_db('');
if (isset($_POST['submit'])) { $hash = sha1('test' . $_POST['email']); $content = sprintf("%s/%s?activate=%s&email=%s",$_SERVER['SERVER_NAME'],$_SERVER['PHP_SELF'],$hash,$_POST['email']); mail($_POST['email'],'Aktiver underskrift',$content); mysql_query(sprintf("INSERT INTO signature (name,email,created,zip) VALUES ('%s','%s',NOW(),'%s')",$_POST['name'],$_POST['email'],$_POST['zip'])) OR DIE(mysql_error()); }
if ($_GET['activate']) { $hash = sha1('test' . $_GET['email']); if ($hash == $_GET['activate']) { mysql_query(sprintf("UPDATE signature SET accepted = NOW() WHERE email = '%s'",$_GET['email'])); } }
$signatures = mysql_query("SELECT name,email,zip,accepted FROM signature WHERE accepted IS NOT NULL ORDER BY accepted") OR DIE(mysql_error()) ; while($signature = mysql_fetch_assoc($signatures)) { printf("<tr> <td><a href='mailto:%s'>%s</ah></td> <td>%s</td> <td>%s</td> </tr>",$signature['email'],$signature['name'],$signature['zip'],$signature['accepted']); }
print "</table>"; ?>
Synes godt om
Ny brugerNybegynder
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.