webForumDet fria alternativet

Tipsa vän-tävling - scripthjälp

PHP

1 svar · 403 visningar · startad av noll5

Medlem sedan jan. 20069 inlägg
Frågan#1

Hej!

Jag håller på med en ny sajt, och när den snart är klar och ska publiceras vill vi ha en start-tävling på sajten. Tävlingen är väldigt enkel - besökarna ska tipsa sina kompisar genom mailformulär. Det skall vara plats till typ 3-5 emailadresser eller liknande. Hit är det ju inga större problem att lösa. Finns en hel del färdiga scrpts på bl.a. hotscripts och även här på sidan, men jag har fler önskemål.

Jag skulle vilja att tipsarens mailadress sparas i en databas, och att han får poäng eller vad man nu vill kalla det för varje person han tipsar som i sin tur besöker sidan. Alltås - det gäller inte att tipsa personerna bara - det gäller att de man tipsar väl besöker sidan också.

Hur fixar man ett sådant script eller finns det nån som vet om något färdigt? I värsta fall kanske någon kan hjälpa mig att ta fram ett script.

Ytterst tacksam för hjälp.

Medlem sedan dec. 200539 inlägg
#2

... med låg säkerhet ...

I dess mest banala form, skicka ut mail till alla personen tipsar med en länk, typ: https://www.minsajt.com/index.php?referer=2
där referer är ID-numret på tipsaren.

Det här blir väldigt låg säkerhet, så egentligen vill du sätta upp två tabeller, en med tipasare och en med mottagare. För varje mottagare slumpas ett valideringsnummer. Och sedan skicka ut mail till alla mottagarna:

// obs utan nödvändig säkerhet - endast basic exempel

$mail = $_POST['recipent']; // måste antagligen splittas här.
$referer = $_POST['referer']; 

$sql = "INSERT INTO referer SET id = NULL, referer_email = '$referer'";
mysql_query($sql);
$referer_fid = mysql_insert_id();

$rnd = rand(100000000, 99999999);

$sql = "INSERT INTO recipents SET id = NULL, referer_id = '$referer_id', recipent_email = '$mail', recipent_code = '$rnd'";
mysql_query($sql);
$id = mysql_insert_id();

$mailbody = "Hej, du har blivit tipsad av xxx. Klicka på länken: http://minsajt.com/default.php?id=$id&validation=$rnd";

// skicka mail med mail() etc.

När personen klickar på länken, verifiera id mot valideringskoden. Stämmer de, plocka ut referer, och öka hans poäng med 1...

// i default.php -- obs exempel - ej säker för livebruk

$id = $_GET['id'];
$validation = $_GET['validation'];

$sql = "SELECT * FROM recipents WHERE id = '$id' AND recipent_code = '$validation'";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0 ) {
 // yes, han ska ha en poäng...
}

Ytterligare säkerhet, lägg MD5:a koden. Glöm inte att mysql_escape_string:a alla $_POST och $_GET innan de körs mot databasen.

//Hampus

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)