Gå til innhold

Antibot i gjestebok


Anbefalte innlegg

Jeg har i det siste slitt med reklame for penisforlenging, viagra og nissan, og vurderer antibot.

Har dessverre fremdeles dårlige kunnskaper innenfor PHP, så lurer på om noen har noe script liggende som dere eventuelt kan forklare litt om, slik at jeg kan komme litt på gli med kunnskapene mine i samme slengen?

 

Som en tilleggsopplysning bruker jeg mortz sitt gjestebokscript inntil videre.

 

På forhånd tuuusen takk!

Endret av Kimmeham
Lenke til kommentar
Videoannonse
Annonse

hadde samme problemet, plutselig en dag var gjesteboka mi full av reklame... og jeg fant en genial side, men jeg husker ikke hva den het, og jeg klarer ikke å finne den igjen =/ men her er det jeg bruker, som er fra den siden. Eneste jeg har fiksa på er stort sett størrelsen på bildet, et par variabelnavn og fargene.

 

audit_image.php

<?php

$width = 200;
$height = 30;

$image = imagecreate($width, $height);

$white    = imagecolorallocate($image, 0xff, 0xff, 0xff);
$gray    = imagecolorallocate($image, 0xdd, 0xdd, 0xdd);
$darkgray = imagecolorallocate($image, 0x88, 0x88, 0x88);

srand((double)microtime()*1000000);

for ($i = 0; $i < 25; $i++) {
$x1 = rand(0,$width);
$y1 = rand(0,$height);
$x2 = rand(0,$width);
$y2 = rand(0,$height);
imageline($image, $x1, $y1, $x2, $y2 , $gray);  
}

for ($i = 0; $i < 5; $i++) {
$cnum[$i] = rand(0,9);
}


for ($i = 0; $i < 5; $i++) {
$fnt = rand(3,5);
$x = $x + rand($width/6-8 , $width/6);
$y = rand($height/5 , $height/5*2); 
imagestring($image, $fnt, $x, $y, $cnum[$i] , $darkgray); 
}

$digit = "$cnum[0]$cnum[1]$cnum[2]$cnum[3]$cnum[4]";

session_start();
$_SESSION['digit'] = $digit;

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);
 
?>

 

audit.php

<?php
function audit() {
 session_start();
 $digit = $_SESSION['digit'];
 $userdigit = $_POST['userdigit']; 
 unset($_SESSION['digit']);   
 
 if (($digit == $userdigit) && ($digit > 1)) {
   return true;
 } else {
   return false;
 }

}
?>

 

formen du skal beskytte

<p><img src="audit_image.php" alt="Number" width="200" height="30" />
     <input maxlength="5" size="5" name="userdigit" type="text" value="" />
   </p>

 

i scriptet som behandler formen

include "audit.php";
if(!audit()) {
// go back or something...	
}

Lenke til kommentar

Tusen takk, Tussi_qwerty!

Tror dette kommer til å funke fjell, men det er en ting som er litt uklart for meg:

Den siste kodesnutten din, sier du skal ligge i scriptet som behandler formen, mener du den siden som viser gjesteboken? Mortz sitt gjesteboksscript består kun av 2 script, selve gjesteboksscriptet og en include.

Lenke til kommentar

ja, altså, der hvor du skriver inn gjestebokinnlegget, det er en form, med en action="et eller annet". den et eller annet er fila som behandler formen.

 

men altså, greia er bare at i tillegg til å sjekke om brukeren har skrevet inn noe, email addressen gyldig osv osv osv før du legger til det som er skrevet, så sjekker du også audit().

 

med andre ord er det bare nok et krav for at den skal legge til det som ble skrevet

 

(sinnsykt dårlig forklart.. hoho.. si fra hvis det ikke ga mening)

Lenke til kommentar

ok.. kan jo ta en gjestebok som eksempel: audit.php og audit_image.php går uansett som egne filer. de bare putter du med andre ord et eller annet sted.

 

så, i <form>'en hvor brukeren skal skrive inn info, så legger du til

<p><img src="audit_image.php" alt="Number" width="200" height="30" />
    <input maxlength="5" size="5" name="userdigit" type="text" value="" />
  </p>

for eksempel sånn som i gjesteboka mi. (for de som tilfeldigvis leser denne posten og går å ser hvordan det ser ut: vennligst ikke fyll den opp med test meldinger :p jeg har sjekket og det funker som det skal ;) )

 

så, den fila som behandler <form>'inputen, altså i whatever fil som er

action="her"

starter du med å

include "audit.php";

har ikke noe å si hvor du gjør det, bare du gjør det før du bruker audit()-funksjonen.

 

og så, en eller annen gang du kjører mail eller sql query for å legge til noe eller skrive til fil eller hva du nå enn skal, altså der hvor du sjekker om brukerens data er gyldige, sjekker du om audit() er true. hvis audit er true så har brukeren skrevet inn riktig tall, og alt er ok. hvis ikke så må du for eksempel gi beskjed om det til brukeren og be han eller hun prøve på nytt. altså:

 

if(!audit()) {
 // gå tilbake og få brukeren til å prøve igjen eller lignende
}

eventuelt:

if(audit()) {
 // gå videre med det som skal gjøres

Endret av Tussi_qwerty
Lenke til kommentar

Ok, nå begynner det å klarne litt for meg her!

Men det er litt som ikke er 100% riktig enda; Selve bildet med tallene til antiboten kommer ikke opp, og når man skal skrive en melding i gjesteboken så får man en feilmelding når man trykker OK.

Jeg har satt det med <p><img src="audit_image.php" inni formet, så det er ikke problemet.

Et lite utklipp fra koden:

action="$URLToThisPage&action=dosign"

elseif ($action == "dosign") {
include "audit.php";
if(!audit()) {
}

Du sa noe om å få brukeren tilbake i denne if greien, men fikk ikke helt til å plassere inn noe vettugt der.

 

Hvis det skulle være til noe interresse, så kan dere se på gjesteboken!

Lenke til kommentar

Endre

<img src="audit_image.php" alt="Antibot tall" width="200" height="30" />

til

<img src="include/audit_image.php" alt="Antibot tall" width="200" height="30" />

Så bør det funke bedre ;)

 

EDIT: Det fikser bare det at bildet ikke vises, da... :)

 

Når det gjelder det andre... Fjern den include setningen som ligger etter elseif, slik:

elseif ($action == "dosign") {
if(!audit()) {
}

Sånn cirka, tenker jeg. Inni blokken til if(!audit()), så må du ha den koden som skal kjøres dersom de skriver inn feil tall i tall boksen. Foreksempel:

if(!audit()) {
   die("Tallet du skrev stemmer ikke overens med det som stod på bildet. Vennligst prøv på nytt... <a href='link til skriv i gjesteboka'>tilbake til skriv i gjesteboka</a>");
}

Endret av kakkle
Lenke til kommentar
To cut the story short, I wrote a plugin to MT that will verify if it is a human before it allows comments to be posted. The idea is pretty simple: Display an image with a Security Code and demand the user to enter a Security Code manually before allowing posting to go through.

 

um... jeg leser gjerne om en altarnativ løsning, men kunne du gjøre den litt mer tydeligere? for jeg finner ikke noe på den siden der..? (mulig jeg bare er utrolig trøtt da.. but still, cant find it!)

Lenke til kommentar
  • 1 måned senere...

Hei!! Jeg har lagt inn antibot som vist på denne siden, og alt ser greit ut, tilsynelatende. Problemet er at selv om jeg skriver feil tall ved innlogging, kommer innlegget frem i gjesteboken. Hva er galt?

Endret av gigg
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...