一个IP就看作是一个电脑,在后台做一个访问次数池,定时每分钟清空一次,访问一次对应ip加一

解决方案 »

  1.   

    我想到了用cookie限制,但是不知道具体怎么写才合理高效。。
      

  2.   

    <?php
    $filePath = '';
    $uuid = isset($_COOKIE['UUID']) ? $_COOKIE['UUID'] : false;
    //第一次访问
    if ($uuid === false)
    {
    //生成唯一的cookieID
    $userCookieId = md5($_SERVER['REMOTE_ADDR'].time());//SERVER_ADDR
    setcookie('UUID', $userCookieId);
    logVisitCount('1',"{$filePath}{$userCookieId}.txt");
    echo 'first visit!';
    exit;
    }
    //得到访问次数
    $visitCount = @file_get_contents("{$filePath}{$uuid}.txt");
    if ($visitCount === false)
    {
    $visitCount = 1;
    logVisitCount('1', "{$filePath}{$uuid}.txt");
    }
    else
    {
    if ($visitCount > 5)
    {
    echo "It's max";
    exit;
    }
    $visitCount++;
    logVisitCount($visitCount, "{$filePath}{$uuid}.txt");
    }
    echo "visit count : {$visitCount}";function logVisitCount($str, $file)
    {
    $handle = fopen($file, 'w');
    fwrite($handle, $str);
    fclose($handle);
    }简单写了一下,你改改吧。。