建立和管理文件下载

这是一个文件操作及下载系统。下面是这个程序的主体部分files.php


<?php
    setcookie
("password",$password,time()+94555556);
    require(
'filesconfig.php');

function 
filesHeader()
{
   
// 在这儿放置你的页眉部分!

    
return;
}
function 
filesFooter()
{
   
// 在这儿放置你的页脚部分!

    
return;
}

/* ================================================================
   通过用户名ID下载文件
   ================================================================ */
        
if ($func == "download")
        {
            if (
$id)
            {
                
mysql_connect($db_host$db_user$db_pass
                    or die (
"Unable to connect to database.");
                
mysql_select_db($db_database
                    or die (
"Unable to select database.");
                
$sql "SELECT * FROM files WHERE id = $id";
                
$result mysql_query($sql);
                
$row mysql_fetch_array($result);
                
$link $row["url"];
                
$newsql "UPDATE files SET downloads=downloads+1 WHERE id = '$id'";
                
mysql_query($newsql)
                    or die(
"CAN'T UPDATE FILE DOWNLOAD COUNT!!!");
                echo 
"<html><head><meta http-equiv=\"Refresh\" content=\"5; URL=" $link "\"></head><body><CENTER><B>Your download will start in 5 seconds<BR><BR><a href=\"" $link "\">Click here if it doesn't start</a></B></CENTER></body></html>";
                exit;
            } else {
                echo 
"Invalid id";
            }
        }

    
filesHeader();
    
/* ================================================================
   如果没有作用的话, 打印有用的文件夹
   ================================================================ */
    
if (!$func)
    {
        
mysql_connect($db_host$db_user$db_pass
            or die (
"Unable to connect to database.");
        
mysql_select_db($db_database
            or die (
"Unable to select database.");
        
$sql "SELECT * FROM files_catagory ORDER BY id";
        
$result mysql_query($sql);
        if (
$row mysql_fetch_array($result))
        {    
        
?>
        <?php
            
do
            {
                    
?>
                    <font size="2"><B>?<a href="files.php?func=selectcat&cat=<?php echo $row[id]; ?>"><?php echo $row[name]; ?></font></B></a><BR><font size="1"><?php echo $row[description]; ?></font><BR><BR>
                    <?php


            
} while ($row mysql_fetch_array($result));
        } else {
            echo 
"NO CATAGORIES!!!<BR><BR>";
        }
        echo 
"<font size=1><b>Admin Functions</b>: <a href=files.php?func=addcatagory>添加 Catagory</a></font>";
    }
/* ========================================================================
   如果功能是选择cat, 通过用户ID选择catagory .
   由 catagory得到的信息来运行, 包括文件目录及文件
   ======================================================================== */
    
if ($func == "selectcat")
    {
        
mysql_connect($db_host$db_user$db_pass
            or die (
"Unable to connect to database.");
        
mysql_select_db($db_database
            or die (
"Unable to select database.");
        
$sql2 "SELECT * FROM files_catagory WHERE id = $cat";
        
$result2 mysql_query($sql2);
        
$currentcat mysql_fetch_array($result2);
            echo 
"<font size=2 color=#FFFF00><B>$currentcat[name]</B></font><BR>";
            echo 
"<font size=1>$currentcat[description]</font><BR><BR>";

        
$sql "SELECT * FROM files_folders WHERE catid = $cat";
        
$result mysql_query($sql);
        if (
$row mysql_fetch_array($result))
        {    
            echo 
"<font size=3><b>Folders:</b></font><BR>";
            echo 
"<BLOCKQUOTE>";
            do
            {

                    
?>
                    <font size="2" color="#FFFF00"><b>?<a href="files.php?func=selectfolder&id=<?php echo $row[id];?>"><?php echo $row[name]; ?></a></b></font><br><font size="1"><?php echo $row[description]; ?></font><BR>
                    <?php


            
} while ($row mysql_fetch_array($result));
            echo 
"</BLOCKQUOTE>";
        } 
        
$sql "SELECT * FROM files WHERE catid = $cat";
        
$result mysql_query($sql);
        if (
$row mysql_fetch_array($result))
        {    
            echo 
"<font size=3><b>Files:</b></font><BR>";
            echo 
"<BLOCKQUOTE>";
            do
            {

                    
?>
                    <font size="2" color="#FFFF00">
                        <b>?<a href="files.php?func=fileinfo&id=<?php echo $row2[id];?>"><?php echo $row2[filename]; ?></a></b></font>
                        <B>Size:</B> <?php echo $row2["filesize"]; ?></font><br><font size="1"><?php echo $row2[description]; ?></font><BR>
                    <?php


            
} while ($row mysql_fetch_array($result));
            echo 
"</BLOCKQUOTE>";
        } 
        echo 
"<BR><BR><font size=1><b>Admin Options:</b> <a href=files.php?func=deletecat&id=$cat>Delete Catagory</a>, <a href=files.php?func=addfolder&parent=catagory&id=$cat>Add Folder</a>, <a href=files.php?func=addfile&parent=catagory&id=$cat>Add File</a>.</font><BR>";

    }
/* ========================================================================
   文件信息
   ======================================================================== */
    
if ($func == "fileinfo")
    {
        if (!
$id) {
            echo 
"INVALID ID";
        } else {
            
mysql_connect($db_host$db_user$db_pass
                or die (
"Unable to connect to database.");
            
mysql_select_db($db_database
                or die (
"Unable to select database.");
            
$sql "SELECT * FROM files WHERE id = $id";
            
$result mysql_query($sql);
            
            if (
$row mysql_fetch_array($result))
            {
            
?>
                <font size="2">
                <b>Filename:</b> <?php echo $row["filename"]; ?> <a href="files.php?func=download&id=<?php echo $row[id];?>">Download this file!</a><BR>
                <b>Filesize:</b> <?php echo $row["filesize"]; ?><BR>
                <b>Filetype:</b> <?php echo $row["filetype"]; ?><BR>
                <b>Downloads:</b> <?php echo $row["downloads"]; ?><BR>
                <b>Description:</b><BR><?php echo $row["description"]; ?><BR><BR>
                
                <form>
                    <input type="button" value="Back" onclick="history.back()">
                </form>
            <?
            
} else {
            echo 
"INVALID ID";
                }
        }
        echo 
"<BR><BR><font size=1><b>Admin Options:</b> <a href=files.php?func=deletefile&id=$id>删除文件</a>.</font><BR>";
    }

/* ========================================================================
   如果功能是选择文件夹, 通过一些资料运行.
    -查找文件夹
    -查找文件
   ======================================================================== */
    
if ($func == "selectfolder")
    {
        if (!
$id)
        {
            echo 
"Invalid ID";
        } else {
        
mysql_connect($db_host$db_user$db_pass
            or die (
"Unable to connect to database.");
        
mysql_select_db($db_database
            or die (
"Unable to select database.");
        
$sql "SELECT * FROM files_folders WHERE id = $id";
        
$result mysql_query($sql);
        if (
$row mysql_fetch_array($result))
            {
                echo 
"<font size=2 color=#FFFF00><B>$row[name]</B></font><BR>";
                echo 
"<font size=1>$row[description]</font><BR><BR>";

                
$sql "SELECT * FROM files_folders WHERE parentid = $id";
                
$result mysql_query($sql);
                if (
$row mysql_fetch_array($result))
                {
                    echo 
"<font size=3><b>Folders:</b></font><BR>";
                    echo 
"<BLOCKQUOTE>";
                    do
                    {

                            
?>
                            <font size="2" color="#FFFF00"><b>?<a href="files.php?func=selectfolder&id=<?php echo $row[id];?>"><?php echo $row[name]; ?></a></b></font><br><font size="1"><?php echo $row[description]; ?></font><BR>
                            <?php


                    
} while ($row mysql_fetch_array($result));
                    echo 
"</BLOCKQUOTE>";
                }
                
$sql "SELECT * FROM files WHERE folderid = $id";
                
$result mysql_query($sql);
                if (
$row2 mysql_fetch_array($result))
                {
                    echo 
"<font size=3><b>Files:</b></font><BR>";
                    echo 
"<BLOCKQUOTE>";
                    do
                    {

                            
?>
                            <b>?<a href="files.php?func=fileinfo&id=<?php echo $row2[id];?>"><?php echo $row2[filename]; ?></a></b></font>
                        <B>Size:</B> <?php echo $row2["filesize"]; ?></font><br><font size="1"><?php echo $row2[description]; ?></font><BR>
                            <?php


                    
} while ($row2 mysql_fetch_array($result));
                    echo 
"</BLOCKQUOTE>";
                }
                echo 
"<BR><BR><font size=1><b>管理选择:</b> <a href=files.php?func=deletefolder&id=$id>Delete Folder</a>, <a href=files.php?func=addfolder&parent=folder&id=$id>Add Folder</a>, <a href=files.php?func=addfile&parent=folder&id=$id>Add File</a>.</font><BR>";
            } else {
                echo 
"Invalid ID!";
            }
        }

    }



/* =================================================================================
   我决定在这下面新建管理功能. 这样材料在上面对于用户比较容易.
   =================================================================================
   首先添加 catagory.
   ================================================================================= */

    
if ($func == "addcatagory")
    {
        if (
$submit)
        {
            if (
$password == $adminpass AND $submit){
                
mysql_connect($db_host$db_user$db_pass
                    or die (
"Unable to connect to database.");
                
mysql_select_db($db_database
                    or die (
"Unable to select database.");
                
MYSQL_QUERY("INSERT INTO files_catagory (name,description) VALUES ('$catname','$description')")
                    or die (
"Can't Update.");
                echo 
"All Done! <a href=files.php>主页</a>";
                
            } else {
                echo 
"Password 错误.";
            }
        } else {
        
?>
                <FORM METHOD=POST ACTION="files.php?func=addcatagory">
                <B>Admin Password:</B> <INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                <B>Catagory Name:</B> <INPUT TYPE="text" NAME="catname"><BR>
                <B>Description:</B> <BR><TEXTAREA NAME="description" ROWS="4" COLS="35"></TEXTAREA><BR>
                确定每一项都已填写正确.<BR>
                <INPUT TYPE="submit" NAME="submit" VALUE="submit"><INPUT TYPE="reset">
                </FORM>
        <?php
        
}
    }
/* ================================================================================
   删除 Catagory
   ================================================================================ */

    
if ($func == "deletecat")
    {
        if (
$submit)
        {
            if (
$password == $adminpass AND $submit){
                
mysql_connect($db_host$db_user$db_pass
                    or die (
"Unable to connect to database.");
                
mysql_select_db($db_database
                    or die (
"Unable to select database.");
                
$sql "DELETE FROM files_catagory WHERE id = '$id'";
                
mysql_query($sql)
                    or die (
"Can't Update.");
                
$sql "DELETE FROM files WHERE catid = '$id'";
                
mysql_query($sql)
                    or die (
"Can't Delete files");
                echo 
"All Done! <a href=files.php>主页</a>";
            } else {
                echo 
"Password 错误.";
            }
        } else {
        
?>
                <FORM METHOD=POST ACTION="files.php?func=deletecat&id=<?php echo $id?>">
                <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                <INPUT TYPE="submit" NAME="submit" VALUE="delete this catagory">
                </FORM>
        <?php
        
}
    }
/* ================================================================================
   新建文件夹
   ================================================================================ */
    
if ($func == "addfolder")
    {
        if (
$parent == "catagory")
        {
            if (
$submit)
            {
                if (
$password == $adminpass AND $submit){
                    
mysql_connect($db_host$db_user$db_pass
                        or die (
"Unable to connect to database.");
                    
mysql_select_db($db_database
                        or die (
"Unable to select database.");
                    
$sql "INSERT INTO files_folders (catid,name,description) VALUES ('$id','$name','$description')";
                    
mysql_query($sql)
                        or die (
"Can't Update.");
                    echo 
"All Done! <a href=files.php>主页</a>";
                } else {
                    echo 
"Password 错误.";
                }
            } else {
            
?>
                    <FORM METHOD=POST ACTION="files.php?func=addfolder&parent=catagory&id=<?php echo $id?>">
                    <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                    <B>Name: </B><INPUT TYPE="text" name="name"><BR>
                    <B>Description: </b><BR><TEXTAREA NAME="description" ROWS="4" COLS="35"></TEXTAREA><BR>
                    <INPUT TYPE="submit" NAME="submit" VALUE="add folder">
                    </FORM>
            <?php
            
}
        }
        if (
$parent == "folder")
        {
        if (
$submit)
            {
                if (
$password == $adminpass AND $submit){
                    
mysql_connect($db_host$db_user$db_pass
                        or die (
"Unable to connect to database.");
                    
mysql_select_db($db_database
                        or die (
"Unable to select database.");
                    
$sql "INSERT INTO files_folders (parentid,name,description) VALUES ('$id','$name','$description')";
                    
mysql_query($sql)
                        or die (
"Can't Update.");
                    echo 
"All Done! <a href=files.php>主页</a>";
                } else {
                    echo 
"Password 错误.";
                }
            } else {
            
?>
                    <FORM METHOD=POST ACTION="files.php?func=addfolder&parent=folder&id=<?php echo $id?>">
                    <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                    <B>Name: </B><INPUT TYPE="text" name="name"><BR>
                    <B>Description: </b><BR><TEXTAREA NAME="description" ROWS="4" COLS="35"></TEXTAREA><BR>
                    <INPUT TYPE="submit" NAME="submit" VALUE="add folder">
                    </FORM>
            <?php
            
}
        }
    }
/* ================================================================================
   添加文件
   ================================================================================ */
   
if ($func == "addfile")
   {
        if (
$parent == "catagory")
        {
            if (
$submit)
            {
                if (
$password == $adminpass AND $submit) {
                    
mysql_connect($db_host$db_user$db_pass
                        or die (
"Unable to connect to database.");
                    
mysql_select_db($db_database
                        or die (
"Unable to select database.");
                    
MYSQL_QUERY("INSERT INTO files (catid,url,description,filename,filesize,filetype) VALUES ('$id','$url','$description','$name','$size','$filetype')")
                        or die (
"Can't Add File");
                    echo 
"FILE ADDED!<BR>";
                } else {
                    echo 
"Password Incorrect.";
                }
            } else {
            
?>
                <FORM METHOD=POST ACTION="files.php?func=addfile&parent=catagory&id=<?php echo $id?>">
                <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                <B>Description: </b><BR><TEXTAREA NAME="description" ROWS="4" COLS="35"></TEXTAREA><BR>
                <B>URL:</B> <input type="text" name="url" size="50"><BR>
                <B>Filename:</B> <input type="text" name="name"><BR>
                <B>Filesize:</B> <input type="text" name="size" size="50"><BR>
                <B>Filetype:</b> <input type="text" name="filetype" size="50"><BR>
                <INPUT TYPE="submit" NAME="submit" VALUE="add file"><BR>
                Make sure all fields are properly filled out.<BR>
                    </FORM>
            <?php
            
}
       } elseif (
$parent == "folder") {
            if (
$submit)
            {
                if (
$password == $adminpass AND $submit)
                {
                    
mysql_connect($db_host$db_user$db_pass
                        or die (
"Unable to connect to database.");
                    
mysql_select_db($db_database
                        or die (
"Unable to select database.");
                    
MYSQL_QUERY("INSERT INTO files (folderid,url,description,filename,filesize,filetype) VALUES ('$id','$url','$description','$name','$size','$filetype')")
                        or die (
"Can't Add File");
                    echo 
"FILE ADDED!<BR>";
                } else {
                    echo 
"Password Incorrect.";
                }
            } else {
            
?>
                <FORM METHOD=POST ACTION="files.php?func=addfile&parent=folder&id=<?php echo $id?>">
                <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                <B>Description: </b><BR><TEXTAREA NAME="description" ROWS="4" COLS="35"></TEXTAREA><BR>
                <B>URL:</B> <input type="text" name="url" size="50"><BR>
                <B>Filename:</B> <input type="text" name="name"><BR>
                <B>Filesize:</B> <input type="text" name="size" size="50"><BR>
                <B>Filetype:</b> <input type="text" name="filetype" size="50"><BR>
                <INPUT TYPE="submit" NAME="submit" VALUE="add file"><BR>
                Make sure all fields are properly filled out.<BR>
                    </FORM>
            <?php
            
}
       }

   }
/* ================================================================================
   删除文件夹
   ================================================================================ */

    
if ($func == "deletefolder")
    {
        if (
$submit)
        {
            if (
$password == $adminpass AND $submit){
                
mysql_connect($db_host$db_user$db_pass
                    or die (
"Unable to connect to database.");
                
mysql_select_db($db_database
                    or die (
"Unable to select database.");
                
$sql "DELETE FROM files_folders WHERE id = '$id'";
                
mysql_query($sql)
                    or die (
"Can't Update.");
                
$sql "DELETE FROM files WHERE folderid = '$id'";
                echo 
"All Done! <a href=files.php>主页</a>";
            } else {
                echo 
"Password 错误.";
            }
        } else {
        
?>
                <FORM METHOD=POST ACTION="files.php?func=deletefolder&id=<?php echo $id?>">
                <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                <INPUT TYPE="submit" NAME="submit" VALUE="删除文件夹">
                </FORM>
        <?php
        
}
    }
/* ================================================================================
   删除文件
   ================================================================================ */

    
if ($func == "deletefile")
    {
        if (
$submit)
        {
            if (
$password == $adminpass AND $submit){
                
mysql_connect($db_host$db_user$db_pass
                    or die (
"Unable to connect to database.");
                
mysql_select_db($db_database
                    or die (
"Unable to select database.");
                
$sql "DELETE FROM files WHERE id = '$id'";
                
mysql_query($sql)
                    or die (
"Can't Update.");
                echo 
"All Done! <a href=files.php>主页</a>";
            } else {
                echo 
"Password 错误.";
            }
        } else {
        
?>
                <FORM METHOD=POST ACTION="files.php?func=deletefile&id=<?php echo $id?>">
                <B>Admin Password: </B><INPUT TYPE="text" NAME="password" VALUE="<?php echo $password;?>"><BR>
                <INPUT TYPE="submit" NAME="submit" VALUE="删除文件">
                </FORM>
        <?php
        
}
    }
        
    echo 
"<p align=right>(<a href=mailto:$adminemail>有疑问的话给管理员写信</a>)</p>";
    
filesFooter();
?>


以上给出了文件下载操作的程序,为了更完善程序,以下是数据库以及设置文件

数据库文件
files.sql

CREATE TABLE files (
   id int(255) DEFAULT '0' NOT NULL auto_increment,
   catid int(255) DEFAULT '0' NOT NULL,
   folderid int(255) DEFAULT '0' NOT NULL,
   filesize varchar(255) NOT NULL,
   filename varchar(255) NOT NULL,
   filetype varchar(255) NOT NULL,
   description text NOT NULL,
   votes int(255) DEFAULT '0' NOT NULL,
   allvotes int(255) DEFAULT '0' NOT NULL,
   downloads int(255) DEFAULT '0' NOT NULL,
   url text NOT NULL,
   UNIQUE id (id)
);

CREATE TABLE files_catagory (
   id int(255) DEFAULT '0' NOT NULL auto_increment,
   name varchar(255) NOT NULL,
   description text NOT NULL,
   files int(255) DEFAULT '0' NOT NULL,
   upload int(1) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);

CREATE TABLE files_folders (
   id int(255) DEFAULT '0' NOT NULL auto_increment,
   catid int(255) DEFAULT '0' NOT NULL,
   parentid int(255) DEFAULT '0' NOT NULL,
   name varchar(255) NOT NULL,
   description text NOT NULL,
   files int(255) DEFAULT '0' NOT NULL,
   UNIQUE id (id)
);


配置文件
filesconfig.php
<?
   
/* 配置文件*/

   /* 管理密码!!! 可以改变!!! 还是改了方便!!! */
   
$adminpass "123456!";
   
$adminemail "[email protected]";


   
$db_host "localhost";
   
$db_user "user";
   
$db_pass "pass";
   
$db_database "database";

?>