php做的下载功能,完成的功能有:
1. 如果没有登录就跳转到登录界面
2. 下载计数代码如下:(有3个问题写在代码注释中,非常感谢)点击要下载的文件(一个链接)跳转到singledownload.php页面处理下载
<a href='./singledownload.php?file_dir=<?php _e($file_dir); ?>&file_name=<?php _e($row[1]); ?>&file_id=<?php echo $row[0]; ?>' />singledownload.php页面的代码 $file_name = $_GET['file_name']; //文件名(数据库中查找出来的)
$file_dir = $_GET['file_dir']; //文件路径(固定的)
$file_id = $_GET['file_id']; //文件ID(数据库中查找出来的)
/*连接数据库*/
$link=mysql_connect("localhost","root","root");
mysql_select_db("wpgc", $link);
$q = "SELECT * FROM downloads WHERE file_id=" . $file_id;
mysql_query("SET NAMES UTF-8");
$rs = mysql_query($q, $link); //获取结果集
if(!$rs){
die("无效结果集");
}
//权限检测
if ( !is_user_logged_in() ) { //如果没有登录
if ( $row[10] == "2") { //检查文件权限‘2’的意思是登录后才能下载这个文件
//问题1:$row[]是什么?我没有在任何地方定义过,并且程序没有进入这里;但是在链接中$row[1]是成功的,我希望$row[]是数据库中存放的值
echo "<script>window.location ='../../../login.php';</script>";
}
}
/*计算下载次数*/
$downloadcount = $row[9];
$downloadcount = $downloadcount + 1;
$sql = "UPDATE downloads SET file_hits = " . $downloadcount . " WHERE file_id = " . $file_id;
//问题2:这里只能更新一次,第一次下载 更新file_hits字段从0变成1,之后再下载就不会变了
if(mysql_query($sql, $link)){
} else {
} //问题3:这个if判断总是说找不到文件,但是将这个注释了以后文件的下载正常
if(!file_exists($file_dir.$file_name)){
echo "找不到 [" . $file_dir.$file_name . "] 文件";
exit;
}else{
/*开始下载文件(这里很正常)*/
$file = fopen($file_dir.$file_name,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir.$file_name));
Header("Content-Disposition: attachment; filename=".$file_dir.$file_name);
echo fread($file, filesize($file_dir.$file_name));
$buffer=1024;
while (!feof($file)) {
$file_data=fread($file,$buffer);
echo $file_data;
}
fclose($file);
我是php新手 请多指教...
1. 如果没有登录就跳转到登录界面
2. 下载计数代码如下:(有3个问题写在代码注释中,非常感谢)点击要下载的文件(一个链接)跳转到singledownload.php页面处理下载
<a href='./singledownload.php?file_dir=<?php _e($file_dir); ?>&file_name=<?php _e($row[1]); ?>&file_id=<?php echo $row[0]; ?>' />singledownload.php页面的代码 $file_name = $_GET['file_name']; //文件名(数据库中查找出来的)
$file_dir = $_GET['file_dir']; //文件路径(固定的)
$file_id = $_GET['file_id']; //文件ID(数据库中查找出来的)
/*连接数据库*/
$link=mysql_connect("localhost","root","root");
mysql_select_db("wpgc", $link);
$q = "SELECT * FROM downloads WHERE file_id=" . $file_id;
mysql_query("SET NAMES UTF-8");
$rs = mysql_query($q, $link); //获取结果集
if(!$rs){
die("无效结果集");
}
//权限检测
if ( !is_user_logged_in() ) { //如果没有登录
if ( $row[10] == "2") { //检查文件权限‘2’的意思是登录后才能下载这个文件
//问题1:$row[]是什么?我没有在任何地方定义过,并且程序没有进入这里;但是在链接中$row[1]是成功的,我希望$row[]是数据库中存放的值
echo "<script>window.location ='../../../login.php';</script>";
}
}
/*计算下载次数*/
$downloadcount = $row[9];
$downloadcount = $downloadcount + 1;
$sql = "UPDATE downloads SET file_hits = " . $downloadcount . " WHERE file_id = " . $file_id;
//问题2:这里只能更新一次,第一次下载 更新file_hits字段从0变成1,之后再下载就不会变了
if(mysql_query($sql, $link)){
} else {
} //问题3:这个if判断总是说找不到文件,但是将这个注释了以后文件的下载正常
if(!file_exists($file_dir.$file_name)){
echo "找不到 [" . $file_dir.$file_name . "] 文件";
exit;
}else{
/*开始下载文件(这里很正常)*/
$file = fopen($file_dir.$file_name,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir.$file_name));
Header("Content-Disposition: attachment; filename=".$file_dir.$file_name);
echo fread($file, filesize($file_dir.$file_name));
$buffer=1024;
while (!feof($file)) {
$file_data=fread($file,$buffer);
echo $file_data;
}
fclose($file);
我是php新手 请多指教...
2、打印一下各个值对不
3、路径不正确吧
你需要知道是你想做什么