Sida 3 av 4

Postat: 11 april 2007, 19:17:49
av JimmyAndersson
v-g:
"Kan nämna att medan jag kodade om för denna kontroll han c:a 10st inlägg komma från basshunters kompisar, men sen var det tvärnit"

Det var likadant med mina gästböcker. Första tiden kom det många inlägg, även från jag inte känner, sedan var det stopp. Samma sak med sambons gästbok. Det kan iofs bero på att man varit slarvig med att uppdatera sidan.... :eh:

Att lägga till ett tecken i början av inlägget låter som det absolut enklaste. Perl är väldigt smidigt när det gäller att plocka ut tecken ur en text.

Får se om jag kommer ihåg nu.. :)

if ($text !~ /\@/)
{
inlägget är spam...
}

Men det kollar ju bara om det finns ett snabel-a, hur var det nu man bara kollade första tecknet i strängen?
Ska fråga farbror Google, men om ni vet så får ni gärna berätta. :)

Postat: 11 april 2007, 19:31:28
av v-g
I asp left(strängen,1) ger första tecknet iaf :)

Postat: 11 april 2007, 20:06:00
av JimmyAndersson
Det är samma som i basic alltså. :D

Postat: 14 april 2007, 01:46:11
av JimmyAndersson
Jag blir snurrig på detta.

Jag testade med substr för att plocka ut första tecknet. Såhär:

if (substr($field{'comment'}, 0, 1) !~ /V/) { &post_prb ("Du skrev inget V"); }

Det märkliga är att om man skriver ett V så skriver den ut

"Don't spam my guestbook!" Vilket den *enbart* ska göra om det skrivs något i ett dolt inmatningsfält, allt enligt den här raden:

if ($field{'s_p_a_m'} !~ "") { &logga_ip &post_prb ("Don't spam my guestbook!"); }


Så hur hänger detta ihop? Varför blir det som om jag hade fyllt i något i s_p_a_m-fältet?

Prova själva här.
(Länk till min testgästbok.)



För övrigt så har jag kommit på att den här tråden borde vara i mjukvarudelen av forumet. :oops:

Postat: 14 april 2007, 01:58:40
av 007sweden
kanske pga den lilla missen att du själv fyllt i den redan.

Kod: Markera allt

<input type="hidden" name="fct" value="post">
value="post" då kommer ju value vara just post och inte tom...

Postat: 14 april 2007, 01:59:56
av JimmyAndersson
*host* :oops:

:jimmyhacker:


:lol:


edit: Nähepp, så var det inte. Trodde du kopierat koden från min sida. :D

Jag hade skrivit såhär:

<input type="hidden" name="s_p_a_m" size="1">

Size="1" behövs egentligen inte, men den har bara blivit kvar där.


edit 2:
Kan tillägga att den dolda inmatningsrutan och tillhörande perl-kod fungerar i mina riktiga gästböcker. Så det är inget sånt som är fel. Den felaktiga spam-varningen kommer bara när jag har koden för V-kollen och man skriver ett V.

Postat: 14 april 2007, 02:15:42
av 007sweden
:oops:
Men den kommer från din sida också...
Kanske fel hidden då. :roll:
äsh, då blev ju det hela mer mystiskt, prova sätt en value="" istället då.

Edit: postade innan din senaste edit...
Edit2: vad tjänar V kollen för syfte?

Postat: 14 april 2007, 02:20:40
av JimmyAndersson
"Men den kommer från din sida också... "

Hm? på vilken sida finns den koden? (den som du skrev i förra inlägget alltså.)

Tyvärr hjälpte det inte med value=""

edit: Såg din edit först nu. :)

Postat: 14 april 2007, 02:22:36
av JimmyAndersson
V-kollen är en snabbfusklösning för att se om det räcker för att slippa spam.
Men egentligen behöver jag någon bättre lösning.

Man ska alltså skriva in ett V först i inlägget för att godkännas som människa. V-tecknet ska sedan inte visas i själva inlägget.

Postat: 14 april 2007, 02:27:01
av 007sweden
Hur ser den exakta delen kod ut där de 2 kollerna förekommer?

Postat: 14 april 2007, 02:29:51
av JimmyAndersson
Såhär:

Kod: Markera allt

if ($field{'comment'} eq "") { &post_prb ("Du har inte skrivit n&aring;got..."); }

if (substr($field{'comment'}, 0, 1) !~ /V/) { &post_prb ("Du skrev inget V"); }

if ($field{'email'} ne "")
{
if ($field{'email'} !~ /.+\@.+\....?$/) { &post_prb ("Du har skrivit en epost-adress som inte finns!"); }
}

if ($field{'s_p_a_m'} !~ "") { &logga_ip &post_prb ("Don't spam my guestbook!"); }

Postat: 14 april 2007, 02:37:21
av 007sweden
Nu har jag aldrig sett det där språket förut, men då det ändå är ett språk så..

det första jag tänker på är, är ne och !~ samma sak? not equal. skulle du inte kunna använda ne där istället för !~ ?

Postat: 14 april 2007, 02:46:21
av JimmyAndersson
ne och !~ är såvitt jag vet samma sak, dvs "Not equal". Helst kör jag med !~ eftersom det är lättast att se.

Ändrade raden med ne så att det står !~ istället.

Öppnade gästboken och skrev in ett V som meddelande.
Då kom det istället upp "Du har skrivit en epost-adress som inte finns!"

Hmm?
Det är uppbarligen något tokigt någonstans. Funderar på om raden med V-kollen verkligen är rätt. Är inte helt 100% säker på att man skriver in substr i if-kollen på det viset.

edit: Som sagt, utan raden med V-kollen så fungerar det fint och har gjort så i något år nu.

Postat: 14 april 2007, 02:47:37
av 007sweden
ser du sambandet? testa kör med ne på båda!

Postat: 14 april 2007, 02:52:11
av JimmyAndersson
Aha! Där sa du något! :)

Provade och då fick jag istället: "Du skrev inget V".

Men det var nära. :) Frågan är bara varför man inte kan använda ne när raden med V-kollen finns med...


edit: Måste sova nu. Men jag återkommer i morgon. :)