SEO-Software von Suchmaschinenoptimierung.de

Interval abfragen?

(hier klicken, um zum Original Thread zu gelangen)
TrioxX
Hiho,

hier gleich mein zweiter Schwung an Fragen. Wobei es sich hier in grenzen hält Augenzwinkern

Ich habe folgende Javascript funktion:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function contactuser(user)
{
	var txt = prompt("Nachricht an " + user + " versenden", "");
	
	if (txt != '' && txt != null)
	{
		var url = "contact.php" + user;
		self.frames['sender'].location.href = url;
		alert("Nachricht wurde gesendet");
	}
	else
	{
		alert("Nachricht wurde nicht gesendet!");
	}
}


Simple, but working. Das ganze wird dann mittels onclick event aufgerufen (Textlink).

Meine Frage: Wie muss ds Ganze aussehen, wenn nur jeweils alle 3 Sekunden daas Ganze überhaupt ausgeführt werden darf?

Also... Momentan klickt der User 2x hintereinander auf den Link. Dann wird dementsprechend auch 2x contactuser() ausgeführt. Es ist zwar unwarscheinlich, dass jemand innerhalb von 3 Sekunden das Alertfenster wegklickt, den Link neu anklickt, einen Text eingibt und absendet, aber ich möchte das doch so gut es geht verhindern.

Ich persönlich glaube ja, dass ich zu Beginn der Funktion erstmal auf ein bestehenden interval abfragen muss, der wiederrum am Ende der Funktion gestartet wird. Sehe ich das richtig? Warscheinlich nicht... Augen rollen

Eigentlich suche ich nur eine Art Floodschutz großes Grinsen
KrickelD
beim aufruf von contactuser() könntest du einen timestamp in eine globale variable schreiben. beim erneuten aufruf prüfst du einfach ob es >= +3 ist smile

erst dachte ich an eine hilfsfunktion mit interval etc. aber du weißt jetzt bestimmt was ich meine
brainnrg
KrickelD spricht sicher davon das man JavaScript ja bekanntlich umgehen kann.
Also Floodschutz via PHP, das glaube ich weißt du wie es geht.

Wenn du zusätzlich auch JavaScript haben willst dann mach es mit nem Timeout.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
<script type="text/javascript">
contactuser = {
	send	:	function(user){
		if(!this.sended){
			var txt = prompt("Nachricht an " + user + " versenden", "");
			if (txt != '' && txt != null){
				setTimeout("contactuser.reset()",3000);
				this.sended = 1;
				var url = "contact.php" + user;
				//self.frames['sender'].location.href = url;
				alert("Nachricht wurde gesendet");
			}else{
				alert("Nachricht wurde nicht gesendet!");
			}
		}else{
			alert("Bitte 3 Sekunden warten");
		}
	},

	reset	:	function(){
		this.sended = 0;
	}
}
</script>
<a onclick="contactuser.send('Bla');">Kontaktieren</a>
KrickelD
in diesem fall geht es - so wie ich es verstanden habe - aber nicht direkt um einen floodschutz sondern nur um ein doppelt-anklicken...

wer kein JS nutzt der kann auch gar nicht (direkt) die funktion contactuser() aufrufen, somit kann es zu dem fall gar nicht kommen

mein lösungsansatz ist ganz einfach: am ende der funktion wird in eine globale variable der aktuelle timestamp geschrieben. bei jedem aufruf der selben funktion wird einfach geprüft, ob der aktuelle timestamp mindestens 3 sekunden später ist. warum denn verkomplizieren!?
TrioxX
Danke dafür. Ich werde es mir bei Gelegenheit nochmal genauer ansehen.
(hier klicken, um zum Original Thread zu gelangen)



Tipp: Ranking-Konzept.de - Das SEO-Forum (Forum rund um die Suchmaschinenoptimierung) der artaxo AG.
Das große Versicherungs ABC von Versicherung.de - mit allen Aspekten der Computerversicherungen!
Fan-Foren.de, die große Community mit Musikforum ist ab sofort online.