主题:  这个php代码为什么不能实现重定位?

proof

职务:普通成员
等级:1
金币:0.0
发贴:30
注册:2005/4/19 22:50:32
#12005/5/14 22:44:25

  代码实现下载计数。
  已在数据库中创建一个表。

  但是点击filelist.php3页面中的链接:
  javascript:newopen('filedown.php3?id=000001'),
  不是下载id=000001指向的地址,而是下载filedown.php3这段代码。

  代码有以下几个函数组成:
  1、建表,包括文件编码、名称、下载路径、统计
  数据库: dl_db

CREATE TABLE dl_file (
  id varchar(6),
  name varchar(50),
  url varchar(200),
  count bigint(10)
);
INSERT INTO dl_file valueS( '000001', 'test', 'test.zip', 0);
INSERT INTO dl_file valueS( '000002', 'tif', 'download/123.tif', 0);


  2、dl_func.php3 数据库连接初始化
<?
function dl_dbconnect(){
       error_reporting(1+4);   //禁掉warning性错误
       $dl_in=0;
       $dl_in=mysql_connect("localhost:3306","root","123456";
       if(!dl_in) { //如果连接失败,退出
           echo "数据库无法连接";
           exit;
       }
       mysql_select_db("dl_db",$dl_in);
       return $dl_in;
    }
 
    //显示提示信息的函数
    function infopage($strInfo){
       echo "<script language='javascript'>";
       echo "       window.alert('$strInfo');";
       echo "       history.back();";
       echo "</script>";
    }
?>



  3、filelist.php3 下载连接页面

<html>
<head><title>文件下载</title>
<script language="javascript">
function newopen(url){
    window.open(url,"_self";
    return;
}
</script>
</head>
<?
require("dl_func.php3";
$dl_in=dl_dbconnect();
$strQuery="select * from dl_file order by id";
$dl_res=mysql_query($strQuery,$dl_in);
while($arr_dlfile=mysql_fetch_array($dl_res)){
    echo "<a href=\"javascript:newopen('filedown.php3?id=$arr_dlfile[id]')\">";
    echo "$arr_dlfile[name]";
    echo "&nbsp;";
    echo "(下载次数:$arr_dlfile[count])";
    echo "<br>";
}
mysql_close($dl_in);
?>
</html>

  4、filedown.php3 下载页面
<?
    require("dl_func.php3";
    $dl_in=dl_dbconnect();
    $strQuery="select url from dl_file where id='$id'";
    $dl_res=mysql_query($strQuery,$dl_in);
    if(!($arrfile=mysql_fetch_array($dl_res))){ //选择结果为空
       infopage("错误的id号";
       exit;
    }else{
       $arr_temp=split("/",$arrfile[url]);
       $filename=$arr_temp[sizeof($arr_temp)-1];
       if(strlen(trim($filename))==0){//文件名称为空
           infopage("错误的文件";
           exit;
       }else{
           $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]";
              //echo “this is test for echo-download”;
       }
    }
    mysql_close($dl_in);
?>



Mike

职务:版主
等级:6
金币:11.0
发贴:5148
注册:2004/6/10 14:12:22
#22005/5/14 22:59:36
干吗?这是技术帖,
楼主是要重定位?

可是你干吗用JAVA Script来定位?
<html>
<head><title>文件下载</title>
<script language="javascript">
function newopen(url){
    window.open(url,"_self";
    return;
}
</script>
</head>
<?
require("dl_func.php3";
$dl_in=dl_dbconnect();
$strQuery="select * from dl_file order by id";
$dl_res=mysql_query($strQuery,$dl_in);
while($arr_dlfile=mysql_fetch_array($dl_res)){
    echo "<a href=\"javascript:newopen('filedown.php3?id=$arr_dlfile[id]')\">";
    echo "$arr_dlfile[name]";
    echo "&nbsp;";
    echo "(下载次数:$arr_dlfile[count])";
    echo "<br>";
}
mysql_close($dl_in);
?>
</html>



Mike

职务:版主
等级:6
金币:11.0
发贴:5148
注册:2004/6/10 14:12:22
#32005/5/14 23:01:04
如果你的server没问题,干吗不也用header?



proof

职务:普通成员
等级:1
金币:0.0
发贴:30
注册:2005/4/19 22:50:32
#42005/5/14 23:33:12
谢谢。

如果不麻烦,希望给出详细的改动。

我也不想用JAVA Script



proof

职务:普通成员
等级:1
金币:0.0
发贴:30
注册:2005/4/19 22:50:32
#52005/5/16 22:23:51
如何把点击次数显示出来?
  数据库中已建立了一个表,用于统计下载点击次数。
  表内容包括文件编码、名称、下载路径、统计。

CREATE TABLE dl_file (
id varchar(6),
name varchar(50),
url varchar(200),
count bigint(10)
);
INSERT INTO dl_file valueS( '000001', 'test', 'test.zip', 5);
INSERT INTO dl_file valueS( '000002', 'tif', 'download/123.tif', 8);


  我已经做了一个静态html网页。内容包括:

下载A () ;对应于id=000020

下载B () ;对应于id=000008

下载C () ;对应于id=000001


  为把点击次数在括号内显示出来,我想采用一个代码disp.php,以插件形式

<? include("disp.php?id=000020"; ?>

插入括号,显示出来。

  我是新手,这样做是不是太麻烦了?有没有更简单的办法?一页里有很多这样的下载,会不会影响服务器效率?能否只连接、关闭数据库一次?




参考代码:
  下面这段代码可以显示“下载次数”,但它是排列出全部清单。
  如何把某个“下载次数”插入到静态网页某处?
---------------------------------------------------------------------
  1、dl_func.php3 数据库连接初始化

<?
function dl_dbconnect(){
error_reporting(1+4); //禁掉warning性错误
$dl_in=0;
$dl_in=mysql_connect("localhost:3306","root","123456";
if(!dl_in) { //如果连接失败,退出
echo "数据库无法连接";
exit;
}
mysql_select_db("dl_db",$dl_in);
return $dl_in;
}

?>


  2、filelist.php3 下载连接页面

<html>
<head><title>文件下载</title>
</head>
<?
require("dl_func.php3";
$dl_in=dl_dbconnect();
$strQuery="select * from dl_file order by id";
$dl_res=mysql_query($strQuery,$dl_in);
while($arr_dlfile=mysql_fetch_array($dl_res)){
echo "<a href=filedown.php?id=$arr_dlfile[id] target=_blank>";
echo "$arr_dlfile[name]";
echo "&nbsp;";
echo "(下载次数:$arr_dlfile[count])";
echo "<br>";
}
mysql_close($dl_in);
?>
</html>