Webform met spambeveiliging

Plaats reactie
Djorre
Plus Member
Plus Member
Berichten: 222
Lid geworden op: 16 feb 2004, 08:06
Locatie: Ronse

Ik zou hier voor mijn site een simpele webform willen maken maar toch wel met enige beveiliging tegen spam. Ik heb bijna geen php en scripting kennis. Ik had ondertussen wel al een voorbeeld gevonden met captcha maar ik versta niet goed hoe ik dit kan achter mijn verzendknop kan steken.

Heeft er iemand een voorbeeldje liggen of weet er iemand een andere werkwijze?

Alvast bedankt

Jo
crapiecorn
Elite Poster
Elite Poster
Berichten: 2149
Lid geworden op: 01 feb 2003, 11:58
Uitgedeelde bedankjes: 44 keer
Bedankt: 12 keer

Simpel eigenlijk, captcha gaat random wat cijfer als letter genereren en via gd een image er van maken. Als je dan op submit drukt moet je controleren als de ingegeven code gelijk is aan de oorspronkelijke cijfers en letter. Als dit zo is (if(bla == bla) laat je je form verdergaan, als dit niet zo is (else) laat je een message zien dat de ingegeven chars niet overeen komen.
Djorre
Plus Member
Plus Member
Berichten: 222
Lid geworden op: 16 feb 2004, 08:06
Locatie: Ronse

crapiecorn schreef:Simpel eigenlijk, captcha gaat random wat cijfer als letter genereren en via gd een image er van maken. Als je dan op submit drukt moet je controleren als de ingegeven code gelijk is aan de oorspronkelijke cijfers en letter. Als dit zo is (if(bla == bla) laat je je form verdergaan, als dit niet zo is (else) laat je een message zien dat de ingegeven chars niet overeen komen.


Ik vermoed dat dit dan wel via een php script zal moeten gaan en niet via een standaard form van frontpage?
crapiecorn
Elite Poster
Elite Poster
Berichten: 2149
Lid geworden op: 01 feb 2003, 11:58
Uitgedeelde bedankjes: 44 keer
Bedankt: 12 keer

Djorre schreef:
crapiecorn schreef:Simpel eigenlijk, captcha gaat random wat cijfer als letter genereren en via gd een image er van maken. Als je dan op submit drukt moet je controleren als de ingegeven code gelijk is aan de oorspronkelijke cijfers en letter. Als dit zo is (if(bla == bla) laat je je form verdergaan, als dit niet zo is (else) laat je een message zien dat de ingegeven chars niet overeen komen.


Ik vermoed dat dit dan wel via een php script zal moeten gaan en niet via een standaard form van frontpage?

Ja, mijn voorkeur gaat naar php. Maar forms behandelen kan je in elke web gebaseerde programmeertaal.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Djorre schreef:Ik vermoed dat dit dan wel via een php script zal moeten gaan en niet via een standaard form van frontpage?


Dergelijke controle moet inderdaad altijd server side gebeuren omdat veel spammers tools gebruiken die je form zelfs niet aanspreken maar rechtstreeks de rommel posten.
Astralon
Elite Poster
Elite Poster
Berichten: 3310
Lid geworden op: 26 jul 2005, 12:17
Locatie: Lochristi
Uitgedeelde bedankjes: 196 keer
Bedankt: 125 keer

Gebruikersavatar
Ofloo
Elite Poster
Elite Poster
Berichten: 5263
Lid geworden op: 04 okt 2004, 07:36
Locatie: BALEN
Uitgedeelde bedankjes: 57 keer
Bedankt: 92 keer

Code: Selecteer alles

  if (!extension_loaded("session")) {
    die("Coudn't locate the required session module.");
  };

  session_start();

  function gen($length) {
    $r = NULL;
    for($i=0; $i<$length; $i++) {
       while($i < $length) {
          $rand = rand(48,122);
        if((($rand >= 48) && ($rand <= 57)) || (($rand >= 65) && ($rand <= 90)) || (($rand >= 97) && ($rand <= 112))) {
             break;
          };
       };
      $r .= sprintf("%c",$rand);
    };
    return($r);
  };

  $_SESSION['secret'] = gen("6");


  header("Content-type: image/png");
  $image = imagecreatefrompng("validate_bg.png");
  $tc = imagecolorallocate($image, 73, 81, 92);
  imagestring($image,5,5,2,$_SESSION['secret'],$tc);
  imagepng($image);
  imagedestroy($image);


dan moet je alleen nog een validate_bg.png om de achtergrond, en $_SESSION['secret'] vergelijken met form input.

Ik weet niet of het de beste manier is, maar het werkt en 'k heb het een lange tijd geleden geschreven.

code wegschrijven in php file en gewoon aanroepen als een image in html.
Gebruikersavatar
Snakehit
Elite Poster
Elite Poster
Berichten: 806
Lid geworden op: 05 mei 2004, 15:37
Locatie: Izegem, Belgie
Contacteer:

Plaats reactie

Terug naar “Development”