Spam protection problemer

Tags:    php

Hej.

Jeg er ved at udvikle en blog, og til den blog skal jeg så lave et simpelt spam protektion system.

Jeg har lavet en variable med navnet $spam_protection. Den indeholder så et tilfældigt tal, den variable bliver gemt i en session.

Men når jeg så skal validere om brugeren har indtastet den korrekte spam kode, så bliver sessionen jo sat igen, jeg ved godt jeg bare skal rykke min variable ned under validationen, men så kan jeg ikke bruge min variable.

I kan se min blog her:
http://9designs.dk/blogentry/89/

Noget kode:
Fold kodeboks ind/udKode 


Så hvordan skal dette gøres?

Jeg ønsker egentligt også råd om hvordan jeg ellers kan gøre, og hvordan min kode kan gøres pænere. Da jeg synes den er uoverskuelig lige nu.

På forhånd tak for jeres hjælp :)

Ps. der er undladt noget unødvendig kode i min kode.



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Først din spam ting...

Umiddelbart vil jeg anbefale at du implementere en captcha function. Søg på google eller phpclasses.org, der finder du masser af den slags.

For at fikse din egen captcha ting
Fold kodeboks ind/udKode 


For at skrive overskuelig kode, er der nogle generelle retningslinier:
1. Adskil PHP fra HTML. Undgå flere sæt <?php ?> tags.
2. Arbejd med templates. Der findes et par gode template systemer. Smarty har jeg hørt en del godt om. Selv bruger jeg en ældrer udgave af template parseren fra PhpBB2.
3. Følg en navnekonvention. eks. CamelCaps på funktioner og variabler, mm.

Se mere om navnekonventioner:
http://www.cubik.org/mirrors/taligent/Docs/books/WM/WM_63.html
http://docs.huihoo.com/php/zend/ZendFramework-0.1.5/documentation/end-user/zh/coding-standard.naming-conventions.html (A.3.4 - A.3.6)

Der er selvfølgelig flere. :)

Det vigtigeste er at du holder dig til det du bestemmer dig for og ikke ændrer det midt i din kode.



Panda, Panda, Panda :P

<?
function gb($error) {
$_SESSION["calc1"] = rand(1,9); $_SESSION["calc2"] = rand(1,9); echo "Hvad er ". $_SESSION["calc1"] ."+". $_SESSION["calc2"] ."?"; $_SESSION["calcr"] = $_SESSION["calc1"]+$_SESSION["calc2"];
} ?>

<?
if ($_POST["Submit"]) {
$calc = $_POST["calc"];
if ($calc != $_SESSION["calcr"]) { $error["calc"] = "Regn dog rigtigt?"; }
if (count($error) > 0) { gb($error); }
else { do post! }
} else {
gb(0)
} ?>

håber det giver lidt idé om det :D ellers skriv på MSN og får du lige hele scriptede =D



Indlæg senest redigeret d. 23.04.2007 17:44 af Bruger #11553
Jeg kigger lige på det ;)



Hvordan ser din count function ud?

og hvor er $error defineret?

Jeg har næsten fået det til at virke :p

Edit: Så virker skidtet :P

Hvordan kan denne kode laves "smukkere"? :D

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 24.04.2007 15:22 af Bruger #11386
t