Captcha til kontaktform

Tags:    php captcha

Hej
Jeg læste denne guide, for at lære hvordan jeg kan bygge en captcha til kontaktform eller lignende. Dog er jeg stødt på et lille problem.
Jeg har lavet det helt ligesom det gøres i guiden og har tilføjet captcha til min form, men jeg får intet billede frem, kun det standardikon der betyder at billedet ikke blev fundet.
captcha.php:
Fold kodeboks ind/udPHP kode 

Min form ser således ud:
Fold kodeboks ind/udHTML kode 


Jeg har ingen idé om hvorfor den ikke virker, men det kan være at der er nogen der kan kaste lys over sagen og finde problemet.



Indlæg senest redigeret d. 31.10.2012 18:33 af Bruger #17072
10 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Har du GD installeret til PHP ?



Grunden til at du får et billede som ikke kan vises er fordi den billede fil du genererer er korrupt.

lav en phpinfo() side, og se om enten Imagick eller GD lib er installeret, som scootergrisen foreslår.

Hvis det er noget du ikke laver for at lære, så vil jeg anbefale dig at bruge google's captcha løsning. http://www.google.com/recaptcha - det er meget bedre i praksis, end noget du kan hacke sammen selv i PHP ;-)



Du kan også køre denne kode der kun viser hvad extensions du har installeret.
Fold kodeboks ind/udPHP kode 

Hvis der ikke står gd i listen så kan du installer det ved at køre PHP installationen igen og tilvælge gd :
http://scootergrisen.dk/htmlgrisen/billeder/billed0369.png



Indlæg senest redigeret d. 31.10.2012 20:22 af Bruger #13010
Har tjekket phinfo() og her har jeg følgende under gd (se billede i link)
http://gupl.dk/686692/

Jeg benytter ikke php på en windows baseret server, da jeg anvender MAMP til localhost og har meebox som udbyder af webhotel, så jeg kan ikke rigtig tiivælge/fjerne komponenter.

Hvordan med googles captcha løsning? Vil den kunne integreres med min kontaktformular, eller skal jeg bruge en speciel formular for at det virker?



Mit gæt ville være at du godt ville kunne bruge googles recaptcha løsning. Denne har jeg fundet rimelig simpel at integrere med mine egne kontakt formulare. :)

bare i tilfælde af at du ikke har linket: http://www.google.com/recaptcha/whyrecaptcha



Prøv og slå fejlbeskeder til øverst i din PHP kode.
Fold kodeboks ind/udPHP kode 


Også brug header('Content-type: text/html'); i stedet for din header med imgage/png.

Også besøg filen direkte : captcha.php

Så tror jeg du kan se tekst.



Indlæg senest redigeret d. 31.10.2012 21:08 af Bruger #13010
Ingen tekst at se. Jeg er gået igang med kigge nærmere på recaptcha i stedet.

UPDATE: reCAPTCHA er implementeret fuldstændig smertefrit.



Indlæg senest redigeret d. 01.11.2012 17:11 af Bruger #17072

Prøv og slå fejlbeskeder til øverst i din PHP kode.
Fold kodeboks ind/udKode 

Også brug header('Content-type: text/html'); i stedet for din header med imgage/png.
Også besøg filen direkte : captcha.php

ja det giver nogle hint.
* husk at kopierer font filen med op (verdana.ttf).
* captcha is not define
Fold kodeboks ind/udKode 

når det er rettet kommer det til at virke

man kunne også kigge på phpclasses.org
http://www.phpclasses.org/search.html?words=captcha&restrict[0]=C&forums=F&go_search=1&advanced=1

kigger også selv lidt på recaptcha

man bør ikke udvikle uden at slå fejl visning til, bare man husker at slå det fra når det ligges i produktion.
endvidre bør man kende udviklings værktøjerne i den browser man anvender




Captcha er unødvendig og kun til at irritere brugeren, og nogen vælger helt at forlade din side.
I stedet for kan du selv sætte nogen kriterier.

99% af robotterne indsætter '<a href="http......."' i dit besked feldt, så hvis du laver check på din $_POST[???..], og tilføjer et input feldt mere hvor brugeren kan tilføje en URL adresse, så har du stoppede det meste spam.

eksempel:

$message = $_POST["message"];
$forbudt = strpos($message, "http");
if($forbudt === false)
{}
else
{
header ("Location: $DinFormSide");
exit;
}

Du kan også lave andre kriterier som: speciale ord eller en tids faktor.

MinFormNederst




Jeg bruger den løsning med et ekstra input felt, skjuler det med CSS visibility og hvis input feltet så er udfyldt så kunne det tyde på spam.

Det virker ret godt.
Se her : http://scootergrisen.dk/htmlgrisen/kode_email.php#undga_spam

Og du kan jo sende emails hvad enten det er spam eller ej sådan at du ikke går glip af nogen emails også bare tilføje "MULIGVIS SPAM!" hvis du mistænker det er spam også finde du med tiden ud af om det er effektivt.

Også viser jeg desuden min email adresse under kontaktforularen med javascript sådan at folk kan skrive direkte og uden at det er let at finde email adressen for spam emailadresse samlere.



t