防止用户下载


Prevent download from users

我有网站,所有用户都可以在下载页面下载任何文件。只有在我的网站上有账号的用户才能下载;访客不能看到下载页面,直到登录或注册在我的网站。我现在想做一些改变;我想只是下载任何文件从下载页面的活跃用户谁拥有超过10个主题,任何用户谁是少于10个主题不能下载任何文件。我该怎么做呢?

下载

<?php 
if(!$allcategories)
{
    echo 'There are no downloads available!';
    return;
}
foreach($allcategories as $category)
{
?>
<p><h2><strong><?php echo $category->name?></strong></h2></p>
<ul>
<?php   
    # This loops through every download available in the category
    $alldownloads = DownloadData::GetDownloads($category->id);
    if(!$alldownloads)
    {
        echo 'There are no downloads under this category';
        $alldownloads = array();
    }
    foreach($alldownloads as $download)
    {
?>
    <li>
        <a href="<?php echo url('/downloads/dl/'.$download->id);?>">
            <?php echo $download->name?></a><br />
          <?php echo $download->description?><br />
          <em>Downloaded <?php echo $download->hits?> times</em></li>
<?php
    }
?><br />
</ul>
    <?php
}
?>

这是我的下载代码。

这是一个宽泛的问题,没有关于您正在使用的框架或数据库的信息。我假设您正在使用MySQL。我还假设您有一个名为users的表,其id | name | email |等我还假设您有另一个名为topics的表,其中包含:Id | userid | title | desc |等等我还假设当用户登录你的网站时,你正在设置一个名为$_SESSION["userid"];

的会话

现在在下载页面上,在开始处运行一个查询(确保在执行以下操作之前已连接到db):

$userid = $_SESSION["userid"];
$result = mysql_query("SELECT count(*) from `topics` where `userid` = '$userid') or die(mysql_error());
$topicCount = mysql_result($result,0);
if($topicCount < 10){
echo "You have $topicCount topics so far. You need a minimum of 10 to get access to downloads.";
}

你可以把这个信息修改成任何你想要的东西,这样用户就知道为什么他们不能访问下载。

好运