spamschutz (sessions???)

apric

Erfahrenes Mitglied
ich habe folgendes problem:

unter dieser url kann sich das jeder anschauen:
wenn man einen eintrag tätigt, und man bei der eintragen.php die bestätigung erhält, und man "zurück" im browser drückt, macht der den gleichen eintrag immer wieder -> spammen is ein leichtes :(

ich hab mir da was mit sessions gedacht, aber blicke da persönlich nicht durch :((
mit cookies will ich es nicht machen, weil nicht jeder cookies aktiviert hat.

kann ich da mit $HTTP_REFERER was machen?
kuckt es euch mal an.

HILFE!
 
Naja ich denke das es mit Sessions realisierbar ist.
mache einfach an der stelle wo die daten in in die, ich gehe einfach mal davon aus das du mysql benutzt, datenbank eingetragen werden:
PHP:
session_register(foobar);
und das eintragen der daten packst du in eine kleine abfrage hinein die etwa so aussehen koennte:
PHP:
if(session_is_registered(foobar)) {
   echo "Nix spammen !";
}else{
   // daten in die datenbank uebernehmen
   echo "Daten eingetragen.";
}

Ich habs noch nicht getestet aber es muesste funktionieren, da die sessions ja nicht clientbasiert sind sondern halt serverbasiert.
Und somit kann kann man mit der "Zurueck-Taste" nicht 'faken'.

Ich hoffe das hilft dir.
Lasse es mich bitte wissen.

-emkey
 
:)

thx, ich werd es mal austesten, denke schon, dass es funzen wird, der code sieht logisch aus :D

naja ich hatte es mit $HTTP_REFERER versucht, aber mit der browser-zurück-taste kann man das umgehen :(

vielen dank nochmal.
ach ja, wenn einer noch anregungen oder kritik an dem gästebuch hat, so möge er dies mir mitteilen, bin immer noch am rumfeilen.
 
hmmmmmm

:(
spammen geht immer noch :(

irgendwie fragt der die session nicht richtig ab

ich hab mal die aufgaben der einzelnen php-seiten aufgelistet:

auslesen.php - anzeigen der einträge
eintrag.php - eintrag machen
preview.php - vorschau
eintragen.php - eintrag in die db eintragen

ich hab in die preview.php die abfrage gesetzt, ob die session registriert ist, und in die aintragen.php die session registriert.

normalerweise müsste das funzen...

ABER WIESO TUT ES DAS NICHT ????
 
mhhh
Paste doch mal bitte den Code wo die daten ueberprueft und eingetragen werden.
ich schau mir das dann mal an.

-emkey
 
hier

in der eintragen.php (gleich zu beginn):
PHP:
session_register(eingetragen);

in der preview.php:
PHP:
if (session_is_registered(eingetragen))
	{
	print "<br><br><center><a href='auslesen.php'>Kein Spamming!</a></center>";
	$error=1;
	}

weder der $error noch die print-ausgabe finden statt.

mit eintragen in anführungsstrichen (im php-code) gehts auch nicht.
 
hui hui hui :)
hast du die session_id auch uebergeben ?
das machste am besten in dem formular:

PHP:
...
<form method=POST action=eintragen.php?".SESSID.">
...
Weil wenn der user cookies deaktiviert hat wird die session_id nicht uebergeben, und die abfrage 'denkt' das die session auch noch nit "registriert" wurde.

evtl. musst du in deiner php.ini nachschauen wie die session_id bezeichnet wird.
schau mal unter:
session.name = SESSID

Soooooooooooooooooo ich hoffe doch mal das das hilft wenn nit dann paste mir doch bitte mal den GANZEN (flood) code :-)
aber ich denke wir bekommen das hin.


-emkey
 
hmmmmmmmmmm

also das problem ist ja, dass die session-variable erst "zum schluss" registriert wird, um quasi "vorher" (hierarchisch gesehen) abgefragt zu werden, ob diese schon registriert sei.

aber ich glaube ich weiss was du meinst, ich starte, sobald das gb aufgerufen wird, eine session und muss nur die sessionid die ganze zeit mit übergeben.

dann kann ich auch registrierte session-variablen abfragen, stimmts?
 
richtig.
sofern du die session_id uebergeben hast.
dann kannste auf alle session variablen zugreifen.


-emkey
 
jut jut

werde mal ein bissel rumprobieren. thx.
wenn es doch nicht klappen sollte, schreib ich hier nochmal rein.
kannst ja morgen oder so nochmal reinschauen hier, werde schreiben, obs geklappt hat.
 
Zurück