Ir para conteúdo

POWERED BY:

Arquivado

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

Vagner Nunes

Enquete (IP)

Recommended Posts

Prezados,

 

Baixei um script de Enquete e fiz uma modificação nele.Esse sistema funciona direitinho, ele cadastra um log com o IP do cara e data, etc.

 

Porém, quando existe uma Rede de Computadores, por exemplo, se eu votar, ou meu colega, não pode mais votar, porque, eu já votei. Tem como adaptar esse código para saber diferenciar IP e IP de Rede? Uma forma que dois ou mais coputadores, consiga votar normalmente?

 

Segue código:

<%

Function String_GetFullPath( strVirtualPath )
String_GetFullPath = Server.MapPath( strVirtualPath )
String_GetFullPath = Replace(String_GetFullPath,"/","\")
End Function

Function PollMentor_GetDatabaseConn()
Dim oRet
Dim strDSN
strDSN = "Driver={Microsoft Access Driver (*.mdb)};DBQ="& Server.MapPath("dados/enquete.mdb")
Set oRet = Server.CreateObject ("ADODB.Connection")
oRet.Open strDSN	
Set PollMentor_GetDatabaseConn = oRet
End Function

Function PollMentor_GetTitle()
PollMentor_GetTitle = "Enquete"	
End Function

Function PollMentor_TryToVote( sID, nNumber )
Dim sRet, strSQL
Dim oConn

Set oConn = PollMentor_GetDatabaseConn()
'Get real id...
Dim oRS
If sID = -1 Then
	Set oRS = oConn.Execute("select id from poll where active=true")
	sID = oRS("id").Value
	oRS.Close
	Set oRS= Nothing
End If

If PollMentor_CanUserVote( oConn, sID ) = False Then
	sRet = "Você já votou nesta enquete. Não é possível votar novamente."
Else
	strSQL = "update poll set count" & nNumber & " = count" & nNumber & " +1 where "
	If nNumber =-1 Then
		strSQL = strSQL & " active=true"
	Else
		strSQL = strSQL & " id=" & sID
	End If
	oConn.Execute strSQL
	oConn.Execute "insert into votelog(poll_id, ip) values(" & sID & ",'" & Request.ServerVariables( "REMOTE_ADDR" ) & "')"
	sRet = "Obrigado por participar."
End If
oConn.Close
Set oConn = Nothing
PollMentor_TryToVote=sRet
End Function


Function PollMentor_CanUserVote( oConn, sID ) '
'Check of user already has voted within 24 hours?
'If so then no voting can be done...
' Here's your chance to display some other content
'1. Check IP address
Dim strSQL, sTime, oRS
sTime = DateAdd( "d", -Request.Form("time"), now() )	
strSQL = "select id from votelog where poll_id=" & sID & " AND datum < #"&sTime & "# AND ip='" & Request.ServerVariables( "REMOTE_ADDR" ) & "'"
Set oRS = oConn.Execute(strSQL)	
If oRS.EOF Then
	PollMentor_CanUserVote = True
Else
	PollMentor_CanUserVote = False
End If
oRS.Close
Set oRS = Nothing
End Function

Function PollMentor_GetPollInfo ( ByVal nID, ByRef sTitle, ByRef sQuestion, ByRef vAnswers, ByRef vCount )
Dim sRet, strSQL
Dim oConn, oRS, nCount

Set oConn = PollMentor_GetDatabaseConn()

strSQL = "select * from poll where " 
If nID = -1 Then
	strSQL = strSQL & " active=true"
Else
	strSQL = strSQL & " id=" & nID
End If
Set oRS = oConn.Execute(strSQL)
If oRS.EOF Then
	PollMentor_GetPollInfo = False
Else
	sTitle=PollMentor_GetTitle()
	sQuestion=oRS("question")
	For nCount=1 To 8
		vAnswers(nCount)=oRS("answer" & CStr(nCount))
		vCount(nCount)=oRS("count" & CStr(nCount))
	Next
	PollMentor_GetPollInfo  = True
End If
oRS.Close
Set oRS = Nothing
oConn.Close
Set oConn = Nothing
End Function



%>

 

Abraços pessoal,

 

Valeu,

 

Sds,

 

Vagner Nunes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma possibilidade seria criar um filtro para os endereços conhecidos de rede (192, 10, ...) e comparando esses valores com o ip do votante.

Isso pode até funcionar em testes internos, mas se o sistema estiver hospedado num serviço de hospedagem provavelmente não irá funcionar, pois todos os dados de uma rede interna, serão transmitidos externamente por um unico ip, então o bloqueio continuará funcionando.

E se ao inves de bloquear por ip, gravar um cookie no micro do votante ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem um código no lab. de script , onde você pode bloquear os IP´s, dá uma olhada, pode te ajudar

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.