Avatar billede madsens90 Praktikant
29. oktober 2007 - 20:11 Der er 32 kommentarer og
1 løsning

Hvordan laver man et link man skal accepterer sin bruger med?

Hej. Jeg har en hjemmeside som hedder www.shax.dk, og har et problem med at folk spammer siden med brugere, og andre ting.

Så nu vil jeg lave så at de i den velkomst besked de for på deres email med deres nyoprettede brugernavn og password, også skal accepterer at brugeren skal laves med den mail.

For så kan jeg lave sådan at hver bruger skal have en unik email, som gør at de ikke kan oprette så mange brugere. :)

Så vil lave et script som sender et link til brugeren som han skal trykke på for at accepterer at brugeren skal laves.
Avatar billede jakobdo Ekspert
29. oktober 2007 - 20:21 #1
Jeg ved ikke om du søger et færdigt script eller ideer til at lave det selv?
Avatar billede madsens90 Praktikant
29. oktober 2007 - 20:32 #2
ideer til at lave det selv. :)

Har jo allerede scriptet til at sende en mail til folk når de opretter sig, så mangler bare det linket til at accepterer brugeren. :)
Avatar billede jakobdo Ekspert
29. oktober 2007 - 20:40 #3
Altså i bund og grund er det jo et spørgsmål om at sende et link til brugeren pr email:

activate.php?email=bruger@domain.tld&code=y7dsa78h7378d7ah7he7h27hdsad7

Under oprettelse af brugeren, tilføjer du så koden: y7dsa78h7378d7ah7he7h27hdsad7 til databasen og en active = 0.

Når brugeren så åbner linket: activate.php?email=bruger@domain.tld&code=y7dsa78h7378d7ah7he7h27hdsad7

Så tjekker du emailen i databasen og om code = den kode som er i databasen.
Hvis ja, så retter du active = 1, og brugeren er aktiv.
Avatar billede madsens90 Praktikant
29. oktober 2007 - 20:50 #4
Så i min tabel "USERS" i databasen skal jeg lave 2 rækker mere. Én der hedder "active", og en der hedder "???"... "Koden", er det den krypterede kode brugeren har skrevet til sin bruger da han oprettede sig??

Eller er den bare det der til alle brugere? altså: y7dsa78h7378d7ah7he7h27hdsad7? :)
Avatar billede jakobdo Ekspert
29. oktober 2007 - 21:05 #5
Du kunne godt lave det ved at tilføje 2 felter til ja.
F.eks.
active - tinyint (0 = inactive, 1 = active)
code - varchar(32)

Den kode kan du lave udfra flere ting.
$code = md5($email);
Du kan også bruge noget salt.
$salt = 'eksperten.dk';
$code = md5($email . $salt);

Så sætter du code i databasen = $code
og smider samtidig $code med i linket:

link = 'activate.php?email='.$email.'&code='.$code;
Avatar billede madsens90 Praktikant
29. oktober 2007 - 21:08 #6
Hvad gør salten ? :P

Det lyder ret fedt at sige salt. :P

Tror jeg er ved at forstå det. :)

Og så laver jeg sådan bagefter at der kun må være en af hver email i databasen, så folk ikke kan lave flere brugere, og spamme siden. :) Medmindre de altså har flere emails, men det tænker de ikke på, plus at så bliver den også bannet hvis de endelig laver et eller andet. XD
Avatar billede jakobdo Ekspert
29. oktober 2007 - 21:16 #7
Det med salt, er for at tilføje noget som brugeren ikke kender.
Hvis du bruger $code = md5($email);

Så kan en spammer gætte på code = md5(email);
Men med noget salt på, kan de ikke gætte sig til md5 koden.

Dog kan spammere også opsætte bots til at omgå aktivering af emails, så det ville nok også være en ide, samtidig at bruge noget captcha eller lign. tekniker på din registreringsside.
Avatar billede madsens90 Praktikant
29. oktober 2007 - 21:21 #8
Jeg er en smule newb, men en captcha er en boks hvor man skal indtaste de tegn der er tegnet ved siden af ikke?

Okay.. smart med salten. :)
Skal desværre tidligt op, så bliver først i morgen jeg tilføjer det til siden.. :S
Men der er sq rart at spørge om ting herinde, når man for svar så hurtigt. :)
Tak for det hurtige svar. :)

Men nu har du jo givet mig en simpel manual til at lave det, så du kan jo komme med et svar, og få point, så jeg ikke glemmer det. :)
Avatar billede jakobdo Ekspert
29. oktober 2007 - 21:31 #9
Svar!

Og ja, captcha er det med at skrive nogle tegn fra et billede i et input felt.
http://en.wikipedia.org/wiki/Captcha
Avatar billede madsens90 Praktikant
29. oktober 2007 - 23:13 #10
sådan.. :)
Avatar billede jakobdo Ekspert
30. oktober 2007 - 07:56 #11
Takker for point.
Avatar billede madsens90 Praktikant
31. oktober 2007 - 20:02 #12
Hvad er det at  $code = md5($email); gør?

"krypterer" den personens email ?? eller hvad er det den gør med email'en?
Avatar billede jakobdo Ekspert
31. oktober 2007 - 20:18 #13
md5() laver en hashsum af noget tekst eller en fil.
Prøv at kig på: http://www.php.net/md5
Avatar billede madsens90 Praktikant
31. oktober 2007 - 20:19 #14
bruger@domain.tld <-- Og hvad er det det betyder. :P
Avatar billede madsens90 Praktikant
31. oktober 2007 - 20:38 #15
jeg kendte godt md5()'s funktion i forvejen, da den laver ca det samme med mine passwords på siden..

Men hvad skal $email være som den laver om??

Skal det være en email jeg laver, eller brugeren der registrer sigs email?
Avatar billede jakobdo Ekspert
31. oktober 2007 - 20:49 #16
Du kunne tage brugerens email, men husk at put lidt SALT på.
Avatar billede jakobdo Ekspert
31. oktober 2007 - 20:49 #17
domain.tld
domain = domænenavn, f.eks. eksperten, codebreaker osv...
tld = top level domain, f.eks. dk, com, net osv...
Avatar billede madsens90 Praktikant
31. oktober 2007 - 20:50 #18
okay.. og hvad var det det der "bruger@domain.tld" i linket betyder?

:P :P
Avatar billede madsens90 Praktikant
31. oktober 2007 - 20:54 #19
jeg kan vel bare skifte "email=bruger@domain.tld" ud med "name=brugernavn" ikke?
Avatar billede jakobdo Ekspert
31. oktober 2007 - 20:58 #20
Du kan smide hvad du vil ind i md5() jo, du skal bare smide det samme ind altid.
Avatar billede madsens90 Praktikant
31. oktober 2007 - 21:03 #21
Så sådan kan mit link se ud i en echo hvis jeg har forstået det rigtigt? :

http://www.shax.dk/include/activate.php?email=".$email."&code=".$code."
Avatar billede madsens90 Praktikant
31. oktober 2007 - 21:06 #22
hvis nu f.eks:

$email = "eksperten.dk";

og

$code =
Avatar billede madsens90 Praktikant
31. oktober 2007 - 21:06 #23
$code = md5($email . $salt); **
Avatar billede jakobdo Ekspert
31. oktober 2007 - 21:08 #24
$email er vel lige med: madsen90@eksperten.dk f.eks.
og du skal også sætte $salt til noget.
Men ellers har du forstået det rigtigt ja.
Avatar billede madsens90 Praktikant
31. oktober 2007 - 21:10 #25
ok. :)

Forsøger ad nu så. :)
Avatar billede madsens90 Praktikant
31. oktober 2007 - 21:38 #26
Hvad skal jeg dog indtaste her? :)

if (??) {

$email = ??;
$code = ??;

mysql_query("UPDATE users SET active = '1' WHERE email = '$email' && code = '$code'");
header("Location:index.php");
}
}else{
header("Location:index.php");
}

(Altså der hvor der er spg. tegn?)
Avatar billede madsens90 Praktikant
31. oktober 2007 - 21:39 #27
if (??) {

$email = ??;
$code = ??;

mysql_query("UPDATE users SET active = '1' WHERE email = '$email' && code = '$code'");
header("Location:index.php");
}else{
header("Location:index.php");
}


(Rettet version.)
Avatar billede jakobdo Ekspert
31. oktober 2007 - 21:48 #28
<?php
//Active email/user

//FORBIND TIL DATABASEN

if(isset($_GET['email']) && isset($_GET['code']) && strlen($_GET['code']) == 32)
{
    //Lille hack som gør det mindre sjovt for en hacker...
    sleep(1);
   
    $email = mysql_real_escape_string($_GET['email']);
    $code = mysql_real_escape_string($_GET['code']);

    mysql_query("UPDATE users SET active = '1' WHERE email = '$email' AND code = '$code' LIMIT 1");
    if(mysql_affected_rows() == 1)
    {
        echo 'Din bruger er nu aktiv';
    }
    else
    {
        echo 'Forkert email og kode';
    }
    //header("Location:index.php");
}
else
{
    echo 'Der mangler nogle info...';
    //header("Location:index.php");
}
?>
Avatar billede madsens90 Praktikant
31. oktober 2007 - 22:18 #29
wow.. :) Linket virker nu hvis jeg selv har indtastet en kode i min db, og så skriver det samme i browseren, under code... :P

Men den vil ikke selv generer en "code" når jeg opretter en bruger..

Burde oprettelsen af en code ikke se sådan ud med SALT på?

      $salt = "beaconshipsale.com";
      $code = md5($email . $salt);

(Salten er min fars firma... :P )
Avatar billede madsens90 Praktikant
31. oktober 2007 - 22:29 #30
sådan.. :) :) Nu tilføjer den det til databasen. :)

Det var en skrivefejl jeg havde lavet. :P

Nu mangler jeg bare at lave så den også indsætter "code" i mailen i linket.. :P
Avatar billede madsens90 Praktikant
31. oktober 2007 - 22:35 #31
Nu virker det hele sørme!! :D :D

Tusinde tusinde tak! :D

Nu kan jeg endelig forhindre alle de åndsvage brugere som bare er til for at spamme min side med brugere. :D
Avatar billede madsens90 Praktikant
31. oktober 2007 - 22:44 #32
Weeeeeeee.. Det er så dejligt at få hjælp på den her side. :P
Avatar billede jakobdo Ekspert
01. november 2007 - 07:44 #33
:o)
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