Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

xanburzum

Evitando flood

Recommended Posts

Muitos programadores freqüentemente têm de lidar com os usuários que abusam de post,mensagens em forum,blog,bookmark etc, para evitar o "flood", abaixo um exemplo.

 

<%
		
		Sub checaAbuso
	 'A base de dados abuseConnection contém uma tabela chamada" abuso " 
	 'E esta tabela possui duas colunas,' IP 'e' OK '. IP contém o 
	 'Endereço IP , 'ok' é quando o usuário pode postar novamente.	  
	 'Salvar o endereço IP Em uma variável.			
			
	  abuseIP = request.servervariables("REMOTE_HOST")
			' aki sua connection String
			abuseConnection = ""
			abuseSQL = "SELECT ip, ok from abuso where ip = '" & abuseIP & "'"
			' 30 segundos de limite de postagm
			abuseWait = 30
			abuseDirect = "toofast.asp"
			' Conecta databse.
			Set abuseConnection = Server.CreateObject("ADODB.Connection")
			abuseConnection.Open abueConnection
			Set abuseRecordset = Server.CreateObject("ADODB.Recordset")
			abuseRecordset.open abuseSQL, abuseConnection, 3, 3
			
			'Se nenhum registro existir ,o usuário está OK. 
								'adicionar um registro e definir,abuseWait a partir de agora.
			if abuseRecordset.recordCount = 0 Then
				abuseRecordset.addnew
					abuseRecordset("ip") = abuseIP
					abuseRecordset("ok") = dateadd("s", abuseWait, now)
				abuseRecordset.update
				returnValue = True
			Else
			' if existir um registro, certifique-se que o "OK Time" não é superior ao 
	 'Tempo atual. se for, redireciona o usuário para outra página, caso contrário, repor o valor. 
	 'Para updte o tempo 30s e retornar true
				if abuseRecordset("ok") > now or isNull(abuseRecordset("ok")) Then
					returnValue = False
				Else
					abuseRecordset.update "ok", dateadd("s", abuseWait, now)
					returnValue = True
				End if
			End if
			
			abuseRecordset.close
			Set abuseRecordset = Nothing
			abuseConnection.close
			Set abuseConnection = Nothing
			
			if Not returnValue Then Response.Redirect(abuseDirect)
			'Você pode querer transformar esta a função Para mais versatilidade em seu código. 
	 'Basta alterar o Sub's Para 'Function's e acrescentar checaAbuso = returnValue. 
	 'NOTA: Este é realmente básico. Você pode adicionar um contador, por exemplo x em x segundos, 
 End Sub
	%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

isso é um problema muito comum mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.