<?php
   require_once("include_fn.php");
   ftp_conn();
   $listing = ftp_rawlist($conn,"$ftpfile");
   $listing2 = ftp_nlist($conn,"$ftpfile");
   $listing_num = count($listing);
   $listing_num -= 3;
   //判断FTP上是否有文件
   if ($listing_num == 0)
   {
      echo "FTP上目前没有文件\n";
      echo "<br>\n";
      echo "[ <a href = 'jyb.nhxy.com'>返 回</a> ]";
      exit;
   }
   do_header("下载页面");
   $i = 3;//数组的前1,2个元素是目录的信息
   foreach ($listing2 as $filename)
   {
       ereg("(Jan|Feb|March|Apr|May|Jun|Jul|August|Sep|Oct|Nov|Dec)[ ]+([0-9]+)",$listing[$i],$mtime);//用正则表达式获取文件的最后修改时间
       $mon = month($mtime[1]);
       echo "            <tr>\n";
       echo "               <td align='center' valign='left'>\n";
       echo "                  <a href = 'ftp://$host/$ftpfile/$filename' class = 'Link'>$filename</a>\n";
       echo "               </td>\n";
       echo "               <td align='center' valign='left'>\n";
       echo "                  <font color = 'red'>$mon $mtime[2] 日</font>\n";
       echo "               </td>\n";
       echo "               </tr>\n";
       $i++;
   }
   //打印记录的总数
   ?>
       </table></td>
          <td>&nbsp;</td>
       </tr>
       <tr>
           <td height="67">&nbsp;</td>
          <td align = "right"><font color = "#0099FF" face = "仿宋">共有记录</font>
       <?
          $totle = count($listing2);
          echo "    $totle";?> <font color = "#0099FF" face = "仿宋">条</font></td>
   <?
   ftp_quit($conn);
   do_footer();
?>
include文件是
<?php
   function ftp_conn()
   {
       //设置为全局变量
       global $host;
       global $conn;
       global $ftpfile;
       $host = "127.0.0.1";
       $user = "lmx";
       $password = "lmx";
       $ftpfile = "";
       //连接FTP主机
       @ $conn = ftp_connect("$host");
       if (!$conn)
       {
           $err = "<font face = '文鼎霹雳体' color = red size ='6'>无法连接FTP服务器,请稍后再试!</font><br>";
           errconn($err);
           exit;
       }
       //登录到主机
       @ $result = ftp_login($conn,$user,$password);
       if (!$result)
       {
           $err = "<font face = '文鼎霹雳体' color = red size ='6'>无法登录FTP服务器,请稍后再试!</font><br>";
           errconn($err);
           ftp_quit($conn);
           exit;
       }
   }
   function month($mon)
   {
       //把英文月份转化为中文
       switch($mon)
       {
           case "Jan":
              $mon = "1 月";
              break;
           case "Feb":
              $mon = "2 月";
              break;
           case "March":
              $mon = "3 月";
              break;
           case "Apr":
              $mon = "4 月";
              break;
           case "May":
              $mon = "5 月";
              break;
           case "Jun":
              $mon = "6 月";
              break;
           case "Jul":
              $mon = "7 月";
              break;
           case "August":
              $mon = "8 月";
              break;
           case "Sep":
              $mon = "9 月";
              break;
           case "Oct":
              $mon = "10 月";
              break;
           case "Nov":
              $mon = "11 月";
              break;
           case "Dec":
              $mon = "12 月";
              break;
       }
       return $mon;
   }
?>

解决方案 »

  1.   

    因为那个ftp网站地址和密码关于学校的,所以我改了一下那里,其它的都一样,麻烦各位高手帮忙看一下是怎么回事,用127.0.0.1连接到本机的ftp服务器就没问题
      

  2.   

    出错信息是什么?
    在本地行的话,程序应该没什么问题,可能是因为连接超时,或者学校FTP的端口不是21(因为你没有指定FTP端口,默认用21)等等
      

  3.   

    就是提示说无法下载阿,但学校的FTP端口是21没错阿,我用CUTEFTP都能连上去下载
      

  4.   

    可能你学校的PHP的配置:register_globals=Off
    在 $listing = ftp_rawlist($conn,"$ftpfile");前一行加上
    $ftpfile=$_REQUEST["$tpfile"];
    试试.
      

  5.   

    你的程序是这样产生连接的
    echo "                  <a href = 'ftp://$host/$ftpfile/$filename' class = 'Link'>$filename</a>\n";
    产生的连接为
    ftp://jyzd.nhxy.com//article_list.php而ftp站点jyzd.nhxy.com是需要用户名和口令的,当然不可下载
    你需要产生
    ftp://username:[email protected]/article_list.php
    这样的连接才能下载的考虑到你的ftp网站口令是需要保密的,因此你需要通过下述方法实现
    1、先现在到http网站再发送给用户
    2、用readfile('ftp://username:[email protected]/article_list.php')
    这样都需要有一个中间页面来完成
    下载连接应为http://youhost/download.php?file=article_list.php
      

  6.   

    产生了这种链接ftp://jyzd.nhxy.com//article_list.php后,应需要进行一下//的过滤,有的Server就是认不到//(两个/)的链接地址。
      

  7.   

    可能你学校的PHP的配置:register_globals=Off
    在 $listing = ftp_rawlist($conn,"$ftpfile");前一行加上
    $ftpfile=$_REQUEST["$tpfile"];
    试试.
    -------------------
    打错了.
    $ftpfile=$_REQUEST[$tpfile"];
      

  8.   

    我增加了一个download的页面
    在那里加入readfile("ftp://username:[email protected]/$filename");
    点击时只是在download页面显示打开的那个文件内容,点右键下载的又会是download这个页面啊,怎么把文件下载到自己的机上?用ftp_get应该不行吧,那个程序是放在学校服务器上的,如果用ftp_get的话不就是下载到学校那服务器上而不是自己的机上了吗?