webForumDet fria alternativet

kolla om tiden är mer än 30 sek?

ASP

8 svar · 334 visningar · startad av Bosse168

Medlem sedan nov. 20031 018 inlägg
Frågan#1

Använder en MySQL 4.0.18-nt databas och har en tabell som heter datum som är typen datetime.
Jag skulle vilja göra ett spamm skydd som kollar så det måste gå 30 sekunder innan man kan göra ett nytt inlägg för att förhindra spamm.

Medlem sedan jan. 2000640 inlägg
#2

kan du inte bara sätta typ.

Session("spamskydd") = NOW

och sen jämföra nuvarande datum med sessionen när nytt meddelade skall postas?

Medlem sedan sep. 20026 425 inlägg
#3
if DateDiff("s", cdate(session("spamskydd")), now)<30 then
 response.write("Du kan inte posta något inlägg än.")
else
 'kan posta inlägg
end if
Medlem sedan nov. 20031 018 inlägg
#4

Jag vill kolla datumet i databasen istället för att skapa massa Sessions i onödan.

Medlem sedan sep. 20026 425 inlägg
#5

Då byter du ut cdate(session("spamskydd")) i min kod mot databasfältets textvärde. Men det är mer prestandaslukande att kolla upp datumet i databasen i stället för att skapa en session.

Medlem sedan nov. 20031 018 inlägg
#6

Inte i ett "community" där det är över 1000 aktiva medlemmar

Medlem sedan sep. 20026 425 inlägg
#7

Okej. Kanske cookies är en bättre lösning i så fall?

Medlem sedan nov. 20031 018 inlägg
#8

Det är ju hur enkelt som helst att ta bort en kaka och så är det ju många som inte accepterar cookies.

Medlem sedan sep. 20026 425 inlägg
#9

Då tror jag inte att det finns så många möjligheter kvar. Testa med att kolla tiden för senaste inlägget mot databasen varje gång en användare postar ett inlägg. Om det tar hårt på din server så får du hitta på något annat, kanske en javascriptlösning.

281 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
146 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)