php做的下载功能,完成的功能有:
1. 如果没有登录就跳转到登录界面
2. 下载计数
代码如下:(有3个问题写在代码注释中,非常感谢)
点击要下载的文件(一个链接)跳转到singledownload.php页面处理下载
&file_name=&file_id=' />
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 ; } } /*计算下载次数*/ $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、路径不正确吧
1、不是你写的代码吗,你自己不知道别人更不知道了。
2、打印一下各个值对不
3、路径不正确吧
我是模仿别人写的,所以有很多疑问 大侠 ..
模仿是没有用的
你需要知道是你想做什么