防止脚本在php

时间:2016-01-10 03:11:51

标签: php

我有一个脚本可以提供唯一的下载链接。下方:enter image description here

问题是,当我刷新页面时,它会生成另一个链接。

我试过header,但我想:

  1. 显示唯一下载链接
  2. 如果刷新页面,重定向或echo 'Only one download per IP!
  3. 这样的事情。 代码是

    <?php
    
    //connect to the DB
    $resDB = mysql_connect("sql213.byethost10.com", "user", "pass");
    mysql_select_db("Nice try", $resDB);
    
    function createKey()
    {
        //create a random key
        $strKey = md5(microtime());
    
        //check to make sure this key isnt already in use
        $resCheck = mysql_query("SELECT count(*) FROM downloads WHERE downloadkey = '{$strKey}' LIMIT 1");
        $arrCheck = mysql_fetch_assoc($resCheck);
        if ($arrCheck['count(*)']){
            //key already in use
            return createKey();
        } else {
            //key is OK
            return $strKey;
        }
    }
    
    //get a unique download key
    $strKey = createKey();
    
    //insert the download record into the database
    mysql_query("INSERT INTO downloads (downloadkey, file, expires) VALUES ('{$strKey}', 'fernanfloo-OMG.zip', '".(time()+(60*60*24*7))."')");
    
    ?>
    
    <html>
    <head>
    <title>Descargar Fernanfloo OMG sonido</title>
    </head>
    <h1>By Skyleter</h1>
    <p>Su link de descarga es:</p>
    <strong><a href="download.php?key=<?=$strKey;?>">download.php?key=<?=$strKey;?></a></strong>
    <p>Link caduca en 7 días..</p>
    </html>
    

    PS:header有效,但正如我所说,我想显示唯一的下载链接,并且只有用户刷新页面,重定向。 (并且每次都重定向到一个页面)

2 个答案:

答案 0 :(得分:1)

<?php
    //Get client ip.

    $ip = "203.146.92.56";

    $d = file_get_contents("ips.txt");
    $d = explode(",",$d);

    if(in_array($ip,$d))
    {
        echo "Only one download per ip";
    }
    else
    {
        //display download link
        fwrite(fopen('ips.txt','a'),$ip.",");
    }

ip.txt看起来像这样

203.146.92.56,117.56.34.21,

请注意,这只是满足您需求的基本方式。你可以调整很多。比如,单个用户的单个文件,这样您就可以每隔X个时间段清除X ip的日志,依此类推。甚至可能是不同文件的不同日志。

答案 1 :(得分:0)

我认为您需要调查连接客户端的控制会话。 session参数将用于防止生成新密钥。