为什么PHP代码(数据库+外链)不能下载?
源代码 dl_func.php
-------------------------------------------------------
function dl_dbconnect(){
$dl_in=0;
//打开 MySQL 服务器连接
$dl_in=mysql_connect("localhost:3306","a1006191543","密码没错");
//选择一个数据库
mysql_select_db("a1006191543",$dl_in);
return $dl_in;
}
?>
-------------------------------------------------------
源代码 filedown.php
-------------------------------------------------------
require_once("dl_func.php");
$dl_in=dl_dbconnect();
$strQuery="select url from dl_file where id='$id'"; //定义查询规则
$dl_res=mysql_query($strQuery,$dl_in); //返回id送到$dl_res
$arrfile=mysql_fetch_array($dl_res); //根据id返回数组到$arrfile
$arr_temp=split("/",$arrfile[url]); //将字符串依指定的规则分开
$filename=$arr_temp[sizeof($arr_temp)-1]; //sizeof: 获知数组的大小
$strQuery="update dl_file set count=count+1 where id='$id'";
mysql_query($strQuery,$dl_in);
header("Content-type: application/file");
header("Content-Disposition: attachment; filename=$filename");
header("location:$arrfile[url]");
mysql_close($dl_in);
?>
-------------------------------------------------------
数据库表"dl_file"结构:
CREATE TABLE dl_file (
id varchar(6),
name varchar(50),
url varchar(200),
count bigint(10)
);
id name url count
-------------------------------------------------------
A001 StellaX http://www.last.com/stella.RAR 0
A002 Z26 http://www.mey.com/Z26.ZIP 0
A003 飞机空战 http://www.piogame.com/River.bin 0
B012 滑板 http://www.computer.com/Skate.bin 0
B013 蓝精灵 http://www.computer.com/Catle.bin 0
D064 史努比 http://www.AKuter.com/Snoopy.bin 0
早先在购买的空间里,运行正常。
为何在现在的空间里,也是这2个程序(换了数据库用户名、密码),报错?
调用形式:http://www.******.com/filedown.php?id=A001
IE报错信息:
“此错误(HTTP 403 禁止)意味着 Internet Explorer 可以连接到该网站,但是没有查看该网页的权限。”
回复讨论(解决方案)
先把header注释掉。echo url看看是否正确
已找到故障点: filedown.php
$strQuery="select url from dl_file where id= '$id'"; //定义查询规则
改为固定参数后:
$strQuery="select url from dl_file where id= 'A001'"; //定义查询规则
外链正常
但是,如何改正带参运行?带参调用形式如下:
http://www.*****.com/down/filedown.php?id=A001
$id = isset($_GET['id']) ? $_GET['id'] : 'A001';
$strQuery="select url from dl_file where id='$id'";
$id如果为空,你没有加处理吧。
if(!$id){
exit();
}