rtoss - Blame information for rev 52

Subversion Repositories:
Rev:
Rev Author Line No. Line
51 roytam 1 <?php
2 /*********************************************
3   Wastepaper Uploader v1.5
4   http://utu.under.jp/
52 roytam 5   PHPあぷろだを元にW3Cに準拠したXHTMLを目指すべく
6   スクリプト及びHTML文書を改造いたしました。
7   結構適当なXHTMLかもしれませんがW3C信者様お許しを…。
8   ------------------設置法-------------------
9   設置ディレクトリは755
10   img、imgsディレクトリは777
11   upload.php、sum.phpは755
12   up.log、last.cgi、count.txtは666  
51 roytam 13   ------------------Based--------------------
52 roytam 14   source by PHPあぷろだ v2.2
51 roytam 15   http://php.s3.to
16  
52 roytam 17   source by ずるぽん
51 roytam 18   http://zurubon.virtualave.net/
19  
52 roytam 20   もしもの為の.htaccess (CGI禁止SSI禁止Index表示禁止)
51 roytam 21   Options -ExecCGI -Includes -Indexes
52 roytam 22   .txtでも、中身がHTMLだと表示されちゃうので注意
51 roytam 23   -------------------------------------------
24  *********************************************/
52 roytam 25 error_reporting(0);
26 if(phpversion()>="4.1.0"){//PHP4.1.0以降対応
51 roytam 27   $_GET = array_map("_clean", $_GET);
28   $_POST = array_map("_clean", $_POST);
29   //$_POST = array_map("_clean", $_GET);
30   extract($_GET);
31   extract($_POST);
32   extract($_COOKIE);
33   extract($_SERVER);
52 roytam 34   $upfile_type=_clean($_FILES['upfile']['type']);
35   $upfile_size=$_FILES["upfile"]["size"];//某所で気づく・・・
51 roytam 36   $upfile_name=_clean($_FILES["upfile"]["name"]);
37   $upfile=$_FILES["upfile"]["tmp_name"];
38 }
39  
52 roytam 40   $title        = '上傳區';  //タイトル
41   $home         = 'http://www.cn-dos.net/';     //ホーム
42   $logfile      = "up.log";     //ログファイル名(変更する事)
43   $updir        = "./img/";     //アップ用ディレクトリ
44   $upsdir       = "./imgs/";    //サムネイル保存ディレクトリ
45   $prefix       = '';           //接頭語(up001.txt,up002.jpgならup)
46   $logmax       = 5000;         //log保存行(これ以上は古いのから削除)
47   $usrmax       = 25;           //User投稿量制限(バイト。全角はこの半分)
48   $commax       = 250;          //コメント投稿量制限(バイト。全角はこの半分)
49   $limitk       = 100000;       //アップロード制限(KB キロバイト)
50   $page_def     = 15;           //一ページの表示行数
51   $admin        = "del";        //削除管理パス
52   $auto_link    = 1;            //コメントの自動リンク(Yes=1;No=0);
53   $denylist     = array('192.168.0.1','sex.com','annony');      //アクセス拒否ホスト
54   $arrowext     = array('7z','zip','lzh','rar','avi','mpg','wmv','mp3','wma','swf','txt','bmp','jpg','png','gif');      //許可拡張子 小文字(それ以外はエラー
51 roytam 55  
52 roytam 56   $count_start  = "2008/02/11"; //カウンタ開始日
57   $count_file   = "count.txt";  //カウンタファイル(空ファイルで666)
51 roytam 58  
52 roytam 59   $last_file    = "last.cgi";   //連続投稿制限用ファイル(空ファイルで666)
60   $last_time    = 0;            //同一IPからの連続投稿許可する間隔(分)(0で無制限)
51 roytam 61  
52 roytam 62   /* 項目表示(環境設定)の初期状態 (表示ならChecked 表示しないなら空) */
63   $f_act  = 'checked="checked"';        //ACT(削除リンク)
64   $f_usr  = 'checked="checked"';        //コメント
65   $f_com  = 'checked="checked"';        //コメント
66   $f_size = 'checked="checked"';        //ファイルサイズ
67   $f_mime = '';                         //MIMEタイプ
68   $f_date = 'checked="checked"';        //日付け
69   $f_orig = 'checked="checked"';        //元ファイル名
51 roytam 70  
71 if($act=="envset"){
52 roytam 72   $cookval = @implode(",", array($acte,$user,$come,$sizee,$mimee,$datee,$orige));
51 roytam 73   setcookie ("upcook", $cookval,time()+365*24*3600);
74 }
75 function _clean($str) {
76   $str = htmlspecialchars($str);
77   if (get_magic_quotes_gpc()) $str = stripslashes($str);
78   return $str;
79 }
52 roytam 80 $unique_id = uniqid("");
81 /* ここからヘッダー */
51 roytam 82 ?>
52 roytam 83 <?php echo '<?xml version="1.0" encoding="utf-8"?>'."\n" ?>
51 roytam 84 <!DOCTYPE html
85    PUBLIC "-//W3C//DTD XHTML 1.1//EN"
86    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
52 roytam 87 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
51 roytam 88 <head>
52 roytam 89 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" media="all" />
51 roytam 90 <title><?php echo "$title" ?></title>
52 roytam 91 <script type="text/javascript"><!--//--><![CDATA[//><!--
92 function gID(s) { return document.getElementById(s); }
93 /* 建立XMLHttpRequest物件 */
94 function JSONXMLHttpReq(){
95         var objxml = false;
96         /*@cc_on @*/
97         /*@if (@_jscript_version >= 5)
98         try{
99                 objxml = new ActiveXObject("Msxml2.XMLHTTP");
100         }catch(e){
101                 try{
102                         objxml = new ActiveXObject("Microsoft.XMLHTTP");
103                 }catch(e2){ objxml = false; }
104         }
105         @end @*/
106         if(!objxml && typeof XMLHttpRequest!='undefined') {
107                 objxml = new XMLHttpRequest();
108                 if(objxml.overrideMimeType) objxml.overrideMimeType('text/plain');
109         }
110         return objxml;
111 }
112 var xhttpjson=JSONXMLHttpReq();
113  
114 function ParseProgress(){
115         if(xhttpjson.readyState==4){ // 讀取完成
116                 percent = xhttpjson.responseText;
117                 if(percent > 0) {
118                         gID("progressbarborder").style.display="block";
119                         gID("progressbartext").innerHTML = percent+"%";
120                         gID("progressbar").style.width = percent+"%";
121                 }
122                 if(percent < 100){
123                         setTimeout("getProgress()", 200);
124                 }
125         }
126 }
127 function getProgress(){
128         if(xhttpjson){
129                 xhttpjson.open('GET','progress.php?progress_key=<?php echo($unique_id)?>', true);
130                 xhttpjson.onreadystatechange = ParseProgress;
131                 xhttpjson.send(null);
132         }
133 }
134  
135 function startProgress(){
136     gID("up_progress").style.display="block";
137     setTimeout("getProgress()", 1000);
138 }
139 //--><!]]></script>
51 roytam 140 <link href="style.css" type="text/css" rel="stylesheet" />
141 </head>
142 <body>
143  
144 <h1><?php echo "$title" ?></h1>
52 roytam 145 <p>請勿在論壇外轉載此區任何資料。</p>
146 <center><script type="text/javascript"><!--//--><![CDATA[//><!--
147 google_ad_client = "pub-8016619041936615";
148 //728x90, 已建立 2007/12/26
149 google_ad_slot = "8811687463";
150 google_ad_width = 728;
151 google_ad_height = 90;
152 //--><!]]></script>
153 <script type="text/javascript"
154 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
155 </script></center>
51 roytam 156 <?php
52 roytam 157 /* ヘッダーここまで */
51 roytam 158 $foot = <<<FOOT
159  
52 roytam 160 <center><script type="text/javascript"><!--//--><![CDATA[//><!--
161 google_ad_client = "pub-8016619041936615";
162 //468x60, 已建立 2007/12/17
163 google_ad_slot = "0207867936";
164 google_ad_width = 468;
165 google_ad_height = 60;
166 google_language = "zh-TW";
167 //--><!]]></script>
168 <script type="text/javascript"
169 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
170 </script></center>
51 roytam 171  
52 roytam 172 <h2>著作権表示</h2>
173 <p id="link"><a href="http://php.s3.to/">レッツPHP!</a> + <a href="http://utu.under.jp">Wastepaper Basket</a> + <a href="http://scrappedblog.blogspot.com/">Roytam1</a></p>
174  
51 roytam 175 </body>
176 </html>
177 FOOT;
178  
52 roytam 179 function FormatByte($size){//バイトのフォーマット(B→kB)
51 roytam 180   if($size == 0)                        $format = "";
181   else if($size <= 1024)                $format = $size."B";
182   else if($size <= (1024*1024))         $format = sprintf ("%dkB",($size/1024));
52 roytam 183   else if($size <= (1024*1024*1024))    $format = sprintf ("%.2fMB",($size/(1024*1024)));
184   else if($size <= (1024*1024*1024*1024))       $format = sprintf ("%.2fGB",($size/(1024*1024*1024)));
51 roytam 185   else                                  $format = $size."B";
186  
187   return $format;
188 }
52 roytam 189 function paging($page, $total){//ページリンク作成
51 roytam 190   global $PHP_SELF,$page_def;
191  
192     for ($j = 1; $j * $page_def < $total+$page_def; $j++) {
52 roytam 193       if($page == $j){//今表示しているのはリンクしない
51 roytam 194         $next .= "[<strong>$j</strong>]";
195       }else{
52 roytam 196         $next .= sprintf("[<a href=\"%s?page=%d\">%d</a>]", $PHP_SELF,$j,$j);//他はリンク
51 roytam 197       }
198     }
199     if($page=="all") return sprintf ("Page: %s [ALL]",$next,$PHP_SELF);
200     else return sprintf ("Page: %s [<a href=\"%s?page=all\">ALL</a>]",$next,$PHP_SELF);
201 }
52 roytam 202 function error($mes1=""){//えっらーメッセージ
51 roytam 203   global $foot;
204  
205   echo $mes1;
206   echo $foot;
207   exit;
208 }
209 /* start */
210 $limitb = $limitk * 1024;
211 $host = @gethostbyaddr($REMOTE_ADDR);
52 roytam 212 if(!$upcook) $upcook=@implode(",",array($f_act,$f_usr,$f_com,$f_size,$f_mime,$f_date,$f_orig));
213 list($c_act,$c_usr,$c_com,$c_size,$c_mime,$c_date,$c_orig)=explode(",",$upcook);
51 roytam 214  
52 roytam 215 /* アクセス制限 */
51 roytam 216 if(is_array($denylist)){
52 roytam 217   foreach($denylist as $line){
218     if(strstr($host, $line)) error('<h2>錯誤</h2>
219 <p class="error">存取限制:您沒有使用權限</p>');
51 roytam 220   }
221 }
52 roytam 222 /* 削除実行 */
51 roytam 223 if($delid && $delpass!=""){
224   $old = file($logfile);
225   $find = false;
226   for($i=0; $i<count($old); $i++){
52 roytam 227     list($did,$dext,,,,,,,$dpwd,)=explode("\t",$old[$i]);
51 roytam 228     if($delid==$did){
229       $find = true;
230       $del_ext = $dext;
231       $del_pwd = rtrim($dpwd);
232     }else{
233       $new[] = $old[$i];
234     }
235   }
52 roytam 236   if(!$find) error('<h2>錯誤</h2>
237 <p class="error">刪除錯誤:此檔案找不到</p>');
51 roytam 238   if($delpass == $admin || substr(md5($delpass), 2, 7) == $del_pwd){
239     if(file_exists($updir.$prefix.$delid.".$del_ext")) unlink($updir.$prefix.$delid.".$del_ext");
240     if(file_exists($upsdir.$prefix.$delid.".$del_ext")) unlink($upsdir.$prefix.$delid.".$del_ext");
241     $fp = fopen($logfile, "w");
242     flock($fp, 2);
243     fputs($fp, @implode("",$new));  
244     fclose($fp);
245   }else{
52 roytam 246     error('<h2>錯誤</h2>
247 <p class="error">刪除錯誤:密碼錯誤</p>');
51 roytam 248   }
249 }
52 roytam 250 /* 削除フォーム */
51 roytam 251 if($del){
52 roytam 252   error("<h2>刪除檔案</h2>
51 roytam 253 <form method=\"post\" enctype=\"multipart/form-data\" action=\"$PHP_SELF\">
52 roytam 254 <p>請輸入密碼<br />
51 roytam 255 <input type=\"hidden\" name=\"delid\" value=\"".htmlspecialchars($del)."\" />
256 <input type=\"password\" size=\"12\" name=\"delpass\" class=\"box\" tabindex=\"1\" accesskey=\"1\" />
52 roytam 257 <input type=\"submit\" value=\"刪除\" tabindex=\"2\" accesskey=\"2\" /></p>
51 roytam 258 </form>
52 roytam 259 <p class=\"tline\"><a href=\"$PHP_SELF?\">返回</a></p>
51 roytam 260 ");
261 }
52 roytam 262 /* 環境設定フォーム */
51 roytam 263 if($act=="env"){
52 roytam 264   echo "<h2>環境設定</h2>
51 roytam 265 <form method=\"get\" action=\"$PHP_SELF\">
266 <p><input type=\"hidden\" name=\"act\" value=\"envset\" /></p>
52 roytam 267 <h3>顯示設定</h3>
51 roytam 268 <ul>
52 roytam 269 <li><input type=\"checkbox\" name=\"acte\" value=\"checked\" tabindex=\"1\" accesskey=\"1\" $c_act />刪</li>
270 <li><input type=\"checkbox\" name=\"user\" value=\"checked\" tabindex=\"2\" accesskey=\"2\" $c_com />用戶</li>
271 <li><input type=\"checkbox\" name=\"come\" value=\"checked\" tabindex=\"3\" accesskey=\"3\" $c_com />備註</li>
272 <li><input type=\"checkbox\" name=\"sizee\" value=\"checked\" tabindex=\"4\" accesskey=\"4\" $c_size />大小</li>
273 <li><input type=\"checkbox\" name=\"mimee\" value=\"checked\" tabindex=\"5\" accesskey=\"5\" $c_mime />MIME</li>
274 <li><input type=\"checkbox\" name=\"datee\" value=\"checked\" tabindex=\"6\" accesskey=\"6\" $c_date />日期</li>
275 <li><input type=\"checkbox\" name=\"orige\" value=\"checked\" tabindex=\"7\" accesskey=\"7\" $c_orig />原檔名</li>
51 roytam 276 </ul>
52 roytam 277 <p>以上設定將會以 cookie 保存以便再次使用。</p>
278 <p><input type=\"submit\" value=\"儲存\" tabindex=\"8\" accesskey=\"8\" /><input type=\"reset\" value=\"還原\" tabindex=\"9\" accesskey=\"9\" /></p>
51 roytam 279 </form>
52 roytam 280 <p class=\"tline\"><a href=\"$PHP_SELF?\">返回</a></p>
51 roytam 281  
282 ";
283 echo $foot;
284 exit;
285 }
286 $lines = file($logfile);
52 roytam 287 /* アプロード書き込み処理 */
288 if(file_exists($upfile) && $com && $usr && $upfile_size > 0){
289   if(isset($usr{$usrmax+1})) error('<h2>錯誤</h2>
290 <p class="error">上傳錯誤:用戶名稱過長</p>
51 roytam 291 ');
52 roytam 292   if(isset($com{$commax+1})) error('<h2>錯誤</h2>
293 <p class="error">上傳錯誤:備註過長</p>
294 ');
295   if($upfile_size > $limitb)        error('<h2>錯誤</h2>
296 <p class="error">上傳錯誤:此檔案過大</p>');
297   /* 連続投稿制限 */
51 roytam 298   if($last_time > 0){
299     $now = time();
52 roytam 300     $last = @fopen($last_file, "r+") or die('<h2>錯誤</h2>
301 <p class="error">連続投稿用ファイル $last_file を作成してください</p>');
51 roytam 302     $lsize = fgets($last, 1024);
303     list($ltime, $lip) = explode("\t", $lsize);
304     if($host == $lip && $last_time*60 > ($now-$ltime)){
52 roytam 305       error('<h2>錯誤</h2>
306 <p class="error">連続投稿制限中:時間を置いてやり直してください</p>');
51 roytam 307     }
308     rewind($last);
309     fputs($last, "$now\t$host\t");
310     fclose($last);
311   }
52 roytam 312   /* 拡張子と新ファイル名 */
313   $pos = strrpos($upfile_name,".");     //拡張子取得
51 roytam 314   $ext = substr($upfile_name,$pos+1,strlen($upfile_name)-$pos);
52 roytam 315   $ext = strtolower($ext);//小文字化
51 roytam 316   if(!in_array($ext, $arrowext))
52 roytam 317     error('<h2>錯誤</h2>
318 <p class="error">檔尾錯誤:此檔尾無法上傳</p>');
319   /* 拒否拡張子はtxtに変換
51 roytam 320   for($i=0; $i<count($denyext); $i++){
321     if(strstr($ext,$denyext[$i])) $ext = 'txt';
322   }
323   */
52 roytam 324   list($id,) = explode("\t", $lines[0]);//No取得
325   $id = sprintf("%03d", ++$id);         //インクリ
51 roytam 326   $newname = $prefix.$id.".".$ext;
327  
52 roytam 328   /* 自鯖転送 */
329   move_uploaded_file($upfile, $updir.$newname);//3.0.16より後のバージョンのPHP 3または 4.0.2 後
51 roytam 330   //copy($upfile, $updir.$newname);
331   chmod($updir.$newname, 0604);
332  
52 roytam 333   /* MIMEタイプ */
334   if(!$upfile_type) $upfile_type = "text/plain";//デフォMIMEはtext/plain
51 roytam 335  
52 roytam 336   /* コメント他 */
337   $com = htmlspecialchars($com);        //タグ変換
338   if(get_magic_quotes_gpc()) $com = stripslashes($com); //¥除去
339   $usr = htmlspecialchars($usr);        //タグ変換
340   if(get_magic_quotes_gpc()) $usr = stripslashes($usr); //¥除去
51 roytam 341  
52 roytam 342   $now = gmdate("Y/m/d(D)H:i", time()+9*60*60); //日付のフォーマット
343   $pwd = ($pass) ? substr(md5($pass), 2, 7) : "*";      //パスっ作成(無いなら*)
51 roytam 344  
52 roytam 345   $dat = @implode("\t", array($id,$ext,$usr,$com,$host,$now,$upfile_size,$upfile_type,$pwd,$upfile_name,));
51 roytam 346  
52 roytam 347   if(count($lines) >= $logmax){         //ログオーバーならデータ削除
51 roytam 348     for($d = count($lines)-1; $d >= $logmax-1; $d--){
349       list($did,$dext,)=explode("\t", $lines[$d]);
350       if(file_exists($updir.$prefix.$did.".".$dext)) {
351         unlink($updir.$prefix.$did.".".$dext);
352       }
353     }
354   }
355  
52 roytam 356   $fp = fopen ($logfile , "w");         //書き込みモードでオープン
51 roytam 357   flock($fp ,2);
52 roytam 358   fputs ($fp, "$dat\n");                //先頭に書き込む
359   for($i = 0; $i < $logmax-1; $i++)     //いままでの分を追記
51 roytam 360     fputs($fp, $lines[$i]);
361   fclose ($fp);
362   reset($lines);
52 roytam 363   $lines = file($logfile);              //入れなおし
51 roytam 364 }
365 foreach($arrowext as $list) $arrow .= $list." ";
52 roytam 366 /* 投稿フォーム */
367 echo '<h2>上傳檔案</h2>
368 <form method="post" enctype="multipart/form-data" action="'.$PHP_SELF.'" onsubmit="startProgress();return true;">
369 <p>檔案<strong>(最大 '.$limitk.' KB)</strong><br />
51 roytam 370 <input type="hidden" name="MAX_FILE_SIZE" value="'.$limitb.'" />
52 roytam 371 <input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="'.$unique_id.'"/>
51 roytam 372 <input type="file" size="40" name="upfile" class="box" tabindex="1" accesskey="1" />
52 roytam 373 <p>用戶名稱(※沒輸入的話檔案將不會被儲存。)<br />
374 <input type="text" size="20" name="usr" value="" class="box" tabindex="1" accesskey="2" />
375  Del Pass : <input type="password" size="10" name="pass" maxlength="10" class="box" tabindex="3" accesskey="3" /></p>
376 <p>備註(※沒輸入的話檔案將不會被儲存。)<br />
377 <input type="text" size="45" name="com" value="" class="box" tabindex="4" accesskey="4" />
378 <input type="submit" value="上傳" tabindex="5" accesskey="5" />
379 <input type="reset" value="Cancel" tabindex="6" accesskey="6" /></p>
380 <p>可以上傳的檔尾:'.$arrow.'</p>
381 <div id="up_progress">上傳中… <span id="progressbartext"></span><div id="progressbarborder"><div id="progressbar"></div></div></div>
51 roytam 382 </form>
383 ';
52 roytam 384 /* カウンタ */
385 echo "<p class=\"uline\">$count_start 開始存取數: ";
51 roytam 386 if(file_exists($count_file)){
52 roytam 387   $fp = fopen($count_file,"r+");//読み書きモードでオープン
388   $count = fgets($fp, 64);      //64バイトorEOFまで取得、カウントアップ
51 roytam 389   $count++;
52 roytam 390   fseek($fp, 0);                        //ポインタを先頭に、ロックして書き込み
51 roytam 391   flock($fp,2);
392   fputs($fp, $count);
52 roytam 393   fclose($fp);                  //ファイルを閉じる
394   echo $count;                  //カウンタ表示
51 roytam 395 }
52 roytam 396 /* モードリンク */
51 roytam 397 echo '
52 roytam 398  D:刪除檔案</p>
399 <p class="uline"><a href="'.$home.'">主頁</a> | <a href="'.$PHP_SELF.'?act=env">環境設定</a> | <a href="'.$PHP_SELF.'?">重新整理</a> | <a href="sam.php">圖像一覧</a></p>
51 roytam 400  
52 roytam 401 <h2>檔案一覧</h2>
51 roytam 402 <p class="uline">';
52 roytam 403 /* ログ開始位置 */
51 roytam 404 $st = ($page) ? ($page - 1) * $page_def : 0;
405 if(!$page) $page = 1;
406 if($page == "all"){
407   $st = 0;
408   $page_def = count($lines);
409 }
52 roytam 410 echo paging($page, count($lines));//ページリンク
411 //メインヘッダ
51 roytam 412 echo "</p>\n";
413 echo "<table summary=\"files\">\n<tr>";
52 roytam 414 if($c_act) echo "<th abbr=\"delete\" scope=\"col\">刪</th>";
415 echo "<th abbr=\"name\" scope=\"col\">檔名</th>";
416 if($c_usr) echo "<th abbr=\"user\" scope=\"col\">用戶</th>";
417 if($c_com) echo "<th abbr=\"comment\" scope=\"col\">備註</th>";
418 if($c_size) echo "<th abbr=\"size\" scope=\"col\">大小</th>";
51 roytam 419 if($c_mime) echo "<th abbr=\"mime\" scope=\"col\">MIME</th>";
52 roytam 420 if($c_date) echo "<th abbr=\"date\" scope=\"col\">日期</th>";
421 if($c_orig) echo "<th abbr=\"original name\" scope=\"col\">原檔名</th>";
51 roytam 422 echo "</tr>\n";
52 roytam 423 //メイン表示
51 roytam 424 for($i = $st; $i < $st+$page_def; $i++){
425   if($lines[$i]=="") continue;
52 roytam 426   list($id,$ext,$usr,$com,$host,$now,$size,$mtype,$pas,$orig,)=explode("\t",$lines[$i]);
51 roytam 427   $fsize = FormatByte($size);
428   if($auto_link) $com = ereg_replace("(https?|ftp|news)(://[[:alnum:]\+\$\;\?\.%,!#~*/:@&=_-]+)","<a href=\"\\1\\2\">\\1\\2</a>",$com);
429  
430   $filename = $prefix.$id.".$ext";
431   $target = $updir.$filename;
432  
433  
52 roytam 434   echo "<tr><!--$host-->\n";//ホスト表示
51 roytam 435   if($c_act) echo "<td class=\"del\"><a href=\"$PHP_SELF?del=$id\">D</a></td>";
436   echo "<td>[<a href=\"$target\">$filename</a>]</td>";
52 roytam 437   if($c_usr) echo "<td>$usr</td>";
51 roytam 438   if($c_com) echo "<td>$com</td>";
439   if($c_size) echo "<td class=\"size\">$fsize</td>";
440   if($c_mime) echo "<td>$mtype</td>";
441   if($c_date) echo "<td>$now</td>\n";
442   if($c_orig) echo "<td class=\"orig\">\n$orig</td>\n";
443   echo "</tr>\n";
444   }
445  
446 echo "</table>\n<p class=\"tline\">";
447 echo paging($page,count($lines));
448 echo "</p>\n";
449 echo $foot;
450 ?>
451