提示也有分吖~~~~~~~~

解决方案 »

  1.   

    Sub Vote_Click(sender As Object, e As EventArgs)
          Msg.Text = ""
          
          ' 检查是否有选取某一个选择钮
          If Not Candidate.SelectedItem Is Nothing Then
             Dim Sel As String = Candidate.SelectedItem.Text
             Dim Conn As OleDbConnection, Cmd As OleDbCommand
             Dim Rd As OleDbDataReader, SQL As String
             Dim NextTime As Integer
             
             Conn = New OleDbConnection( Provider & ";" & DataBase )
             Conn.Open()         ' 检查上次投票时间是否已经超过 10 分钟
             Dim IP = Request.ServerVariables("REMOTE_ADDR")
             SQL  = "Select * From VoteRecord Where IP = '" & IP & "' "
             SQL &= "Order By VoteTime Desc"
             Cmd = New OleDbCommand( SQL, Conn )
             Rd = Cmd.ExecuteReader()
             If Rd.Read()
                NextTime = 10 - DateDiff("n", Rd.Item("VoteTime"), Now)
             End If
             Rd.Close()
             
             ' 没投过票或距离上次投票已经超过 10 分钟
             If NextTime <= 0 Then
                ' 将得票数加一
                SQL = "Update Vote Set 得票数=得票数+1 " & _
                      "Where 世界奇景='" & Sel & "'"
                Cmd = New OleDbCommand( SQL, Conn )
                Cmd.ExecuteNonQuery()            ' 记录 IP 及 投票时间
                Dim Tm = Format(Now(), "MM/dd/yyyy HH:mm:ss")
                SQL = "Insert Into VoteRecord (IP, VoteTime) " & _
                      "Values ('" & IP & "', #" & Tm & "#)"
                Cmd = New OleDbCommand( SQL, Conn )
                Cmd.ExecuteNonQuery()            Response.Redirect( "Result3.aspx" )
             Else
                Msg.Text = "您已经投过票了, 不能重复投票!"
             End If 
             Conn.Close()
          End If
       End Sub这样已经足够了
      

  2.   

    上边都加说明了阿
    vb自己翻译成c#不就行了
      

  3.   

    to: jyk(jyk)楼主不是说一个ip在一段时间里不能投票马,
     Dim IP = Request.ServerVariables("REMOTE_ADDR")
             SQL  = "Select * From VoteRecord Where IP = '" & IP & "' "
             SQL &= "Order By VoteTime Desc"
             Cmd = New OleDbCommand( SQL, Conn )
             Rd = Cmd.ExecuteReader()
    这一部分会根据上网机器的ip读取数据,假设上网机器的ip地址出现在数据库中,则将含有此ip得数据全部选出,按时间颠倒排序,然后执行下一句
    If Rd.Read()
                NextTime = 10 - DateDiff("n", Rd.Item("VoteTime"), Now)
             End If
    也就是读出最近的一笔,然后计算与当前时间的时间差是否超过设定时间
    懂了吧
      

  4.   

    差不多也就是wszlcx6688(ASP路上迷茫的小鸟) 的方法了。
    不过好像对于Request好像有直接得到远程主机IP的属性Request.UserHostAddress.
      

  5.   

    to: jyk(jyk)晕,这只不过是解决楼主的要求就是了