Brugernavn:




Kodeord: Husk
Forside Forum Artikler Downloads Søg
 

Spam - Nej tak!

Forord

I denne artikel vil du lære hvordan du gør det sværere for spammere at spamme din gæstebog til, eller noget helt andet! Det laves via. PHP med funktionen rand().

Efter denne artikel skal man gerne være rustet til at sikre sin gæstebog lidt.

Indholdsfortegnelse

1.0   Eksempel på brug af rand
   1.1   Læg to tilfældige tal sammen
2.0   Rand og input felter
3.0   Den endelige kode
4.0   Mere
   4.1   Kan jeg gøre mere for at stoppe disse spammere?
   4.2   Kan jeg læse mere om funktionen rand?

Dette er min første artikel på Rowl og jeg vil gøre det så godt jeg kan. Jeg tror vi alle sammen er godt trætte af at få en omgang spam i sin gæstebog, det vil jeg i denne artikel lære dig at gøre det sværere for spammerne at spamme din hjemmeside.

Vi gør brug af funktionen rand(), rand står for random, og oversat til dansk betyder det tilfældigt. Rand funktionen kan bruges på flere forskellige måder, men vi skal bruge den til at hive nogle tilfældige tal ud.

1.0  Eksempel på brug af rand

  1. <html>
  2. <head>
  3. <title>Spam - Nej tak!</title>
  4. </head>
  5. <body>
  6. <?php
  7. $tal = rand(1, 9); /* Det første tal siger hvad tal det skal starte fra, og det sidste tal er det tal det skal slutte ved, den tager et tal mellem mellem 0 og 10. */

  8. print $tal; // Her udskriver vi det tilfældige tal
  9. ?>
  10. </body>
  11. </html>

Nu har du lært at lave et tilfæligt tal, nu skal vi prøve at lave 2 tilfældige tal, og lægge dem sammen - ja hvis du tænker logisk kan du nok selv regne ud hvordan man gør.

1.1  Læg to tilfældige tal sammen

  1. <html>
  2. <head>
  3. <title>Spam - Nej tak!</title>
  4. </head>
  5. <body>
  6. <?php
  7. $tal1 = rand(1, 9); // Vi laver første tilfældige tal, et tal mellem 0 og 10
  8. $tal2 = rand(1,9); // Vi laver andet tilfældige tal, et tal melllem 0 og 10

  9. print $tal1 + $tal2; // Vi plusser de 2 tilfældige tal
  10. ?>
  11. </body>
  12. </html>

Det var ikke så svært igen, det er simpelt og enkelt, vi tildeler 2 variabler vores rand funktion, som generer et nyt tal hver gang man opdaterer siden, derefter plusser vi dem i en print.

2.0  Rand og input felter

Nu har du lært at bruge rand funktionen til at udskrive noget på selve siden, nu skal du lære at tildele et felt værdien.
  1. <html>
  2. <head>
  3. <title>Spam - Nej tak!</title>
  4. </head>
  5. <body>
  6. <?php
  7. $tal = rand(1, 9); // Laver vores tilfældige tal igen
  8. ?>
  9. <input type="hidden" value="<?php print $tal; ?>" name="tal" />
  10. </body>
  11. </html>

Det vi gør er at vi laver et input-felt der er hidden, det vil sige det er skjult og brugeren ikke kan se det, kun i kildekoden. Vi sætter feltets value, værdi til det tilfældige tal vi har lavet via. rand, vi giver feltet navnet tal.
Hvis du har brug for det tilfældige tal kan du bare "poste" det senere.

3.0  Den endelige kode

Nu er vi endelig kommet til koden, hvor det hele sker.
  1. <html>
  2. <head>
  3. <title>Spam - Nej tak!</title>
  4. </head>
  5. <body>
  6. <?php
  7. if($_GET["action"] == "check") { // Hvis aktionen er lig med check,
  8.     $brugerTotal = $_POST["brugerTotal"]; // Vi henter det brugeren har skrevet regnestykkerne giver
  9.     $postetTal1 = $_POST["tal1"]; // Vi henter vores "camouflerede" felt, der ikke kan ses
  10.     $postetTal2 = $_POST["tal2"]; // Vi henter værdien fra vores andet "camouflerede" felt, der heller ikke kan ses :P
  11.     $rigtigTotal = $postetTal1 + $postetTal2; // Vi plusser de 2 tal
  12.     
  13.     if($brugerTotal == $rigtigTotal) { // Vi tjekker om brugeren har regnet rigtigt
  14.         print "Du regnede rigtigt!"; // Hvis det er rigtigt får han en "tillykke" besked
  15.     } else { // hvis det ikke er rigtigt
  16.         print "Det var forkert, det gav ".$rigtigTotal;
  17.     }
  18. } else { // Hvis action, aktionen ikke er lig med check, skal formen vises
  19.     $tal1 = rand(1, 9); // Generer et tilfældigt tal
  20.     $tal2 = rand(1, 9); // Generer et tilfældigt tal til
  21.     ?>
  22.     <form action="fil.php?action=check" method="POST">

  23.          <input type="hidden" name="tal1" value="<?php print $tal1; ?>" />
  24.          <input type="hidden" name="tal2" value="<?php print $tal2; ?>" />

  25.          <!-- Vi laver de 2 felter, der ikke kan ses, og som indeholder de tilfældige tal !-->

  26.          Hvad giver <?php print $tal1 . " + " . $tal2 . "?"; ?><br />
  27.          Skriv det her - <input type="text" name="brugerTotal" />
  28.          <input type="submit" value="Færdig!" />

  29.          <!-- Brugeren får feltet han/hun kan skrive hvad regnestykket giver i, og derefter kan man trykke på knappen !-->    

  30.     </form>
  31.     <?php
  32. }
  33. ?>
  34. </body>
  35. </html>

Nu burde du være rustet til at kunne sikre din gæstebog bedre, imod disse dumme spammere.

4.0  Mere

4.1  Kan jeg gøre mere for at stoppe disse spammere?


Ja, det kan du godt, du kan indsætte denne lille kode på din hjemmeside.
  •  <a href="http://destroyspam.net" title="Bekæmp spam i dag!">Bekæmp spam i dag!</a>
Jeg kan også henvise til et såkaldt Capatcha script ak har lavet. Det kan findes på hans hjemmeside, www.akmedia.dk

4.2  Kan jeg læse mere om funktionen rand?

Ja sagtens.
På dansk
På engelsk

Held og lykke!

Sidst redigeret 16:21 25/11/2007
Oprettet af:

PHP

Point modtaget: 100

Rate:
19:06 14/10/2007

Kommentarer

Giv din mening tilkende om denne artikel, eller læs andres.
Har du spørgsmål eller brug for hjælp til denne artikel henvises du til forummet.
Synes god du kunne forklare lidt, hvordan Jesper bruger http://destroyspam.net til, at kunne bekæmpe spam.

Syntaksten svinger lidt ;)
Oprettet af:
  Mail
11:04 16/10/2007
Så kan jeg også personeligt bedre lide, at linjeforklaringen er nedenunder ^^
Oprettet af:
  Mail
11:18 16/10/2007
Flot artikel. Men du er stadig et let bytte hvis spammerne virkelig er opsat på at spamme ;) Det bør laves med gdlib som du kan se store sider også benytter.. Men ellers ser det rigtig flot ud ;)
Oprettet af:
  Mail
19:56 16/10/2007
  • $tal = rand(1, 9); /* Det første tal siger hvad tal det skal starte fra, og det sidste tal er det tal det skal slutte ved, den tager et tal mellem mellem 0 og 10. */

fejl den laver tal mellem 1 og 9 ;)
Oprettet af:
  Mail
01:41 17/10/2007
Det er jo ikke en fejl O_o
Oprettet af:
  Mail
11:44 17/10/2007
Nikolaj, det gør den jo ikke, den laver et tal mellem 0 og 10, den kan skrive 1-2-3-4-5-6-7-8-9 ?

Thomas, nej, man er ikke helt sikret mod spam, og det skriver jeg jo også, men kan vel aldrig blive helt fri for det, så skal men ikke have nogen hjemmeside :P
Sidst redigeret 12:03 17/10/2007
Oprettet af:
  Mail
11:57 17/10/2007
Lol ja, dammit tænkte jeg ikke på sry :D

Men ja, lav en med GD Library :)
Sidst redigeret 12:12 17/10/2007
Oprettet af:
  Mail
12:11 17/10/2007
Rimelig god artikel men den function jeg har, der blander den både tal og bugstaver sammen, jeg holder meget af den.
Overvejer videre udvikle den, så det ikke komme ud som tekst, men billede :).
- 3/5 :)
Oprettet af:
  Mail
23:12 17/10/2007
Du kunne jo lave et simpelt Capacha script og smide op :D
Oprettet af:
  Mail
11:47 18/10/2007
Jeg syntes det er en god artikel :)
- 3/5 :)
Oprettet af:
  Mail
19:50 30/10/2007
Du skal være oprettet og logget ind for at kommentere en artikel
Copyright © Rowl.dk v/ Michael Raagaard | 2005-12 | Alle rettigheder forbeholdes