问题是,当我刷新页面时,它会生成另一个链接。
我试过header
,但我想:
echo 'Only one download per IP!
这样的事情。 代码是
<?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
有效,但正如我所说,我想显示唯一的下载链接,并且只有用户刷新页面,重定向。 (并且每次都重定向到一个页面)
答案 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参数将用于防止生成新密钥。