TheMan
V2EX  ›  问与答

如何实现一个ip规定时间内post提交次数一定,超过就提示n分钟之后再post

  •  
  •   TheMan · Jun 7, 2013 via Android · 4331 views
    This topic created in 4748 days ago, the information mentioned may be changed or developed.
    防止恶意提交表单(比如暴力破解)。。目前不想弄验证码。。。
    7 replies    1970-01-01 08:00:00 +08:00
    nybux
        1
    nybux  
       Jun 7, 2013   ❤️ 1
    每个ip建立一个queue,每次访问的时候,先把n时间外的数据都pop丢掉,然后查看队列的数量,超过标准则不能再访问,告诉用户等待 n-(当前时间-队列头部时间) 时间单位
    jevonszmx
        2
    jevonszmx  
       Jun 7, 2013   ❤️ 1
    use redis:
    0.成功post记录redis,使用sorted sets,例如key为:post:ip:198.168.0.256:list,score为post时的时间戳,值嘛1就ok了;
    1.每个ip每次post前将指定时间戳前的值remove(ZREMRANGEBYSCORE)掉,然后统计一次(ZCARD)sets的长度,看看是否超标了,超标了就提示,否则重复0;

    ok!!
    TheMan
        3
    TheMan  
    OP
       Jun 8, 2013 via Android
    @jevonszmx 好高
    jevonszmx
        4
    jevonszmx  
       Jun 9, 2013
    @TheMan
    ??
    搞定没?
    vking
        5
    vking  
       Jun 9, 2013 via Android   ❤️ 1
    wordpress 有这个函数,可以找找。
    TheMan
        6
    TheMan  
    OP
       Jun 9, 2013 via Android
    @vking 嗯,找找
    TheMan
        7
    TheMan  
    OP
       Jun 9, 2013 via Android
    @jevonszmx 搞定~~
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2106 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 16:11 · PVG 00:11 · LAX 09:11 · JFK 12:11
    ♥ Do have faith in what you're doing.