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
%>
Pergunta
Vagner Nunes
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:
Abraços pessoal,
Valeu,
Sds,
Vagner Nunes
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.