本格的にアップローダー
以前の記事に書いた簡易的なアップローダーです。とりあえずソースを載せますが
ファイルの制限が何も無い危険なものなのでこのままコピペで使用などはお控えくださいませ
万が一の場合にも責任とれませんので…
アップローダが入り用になったので、つきつめていこうかなと。
ここから発展させて完成度高めたいと思います。
<?php $dir_name = "./data"; $dl = $_GET["dl"]; $updir = "./data/"; // 設定&カウントファイル名 $data_file = "./data.txt"; $filelist = array(); //サーバにあるファイルを取得して配列化 if ($handle = opendir($dir_name)) { $no=1; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filelist[]=$file; $no++; } } closedir($handle); } //リネームする $no="$no"."_"; //うぷろだ部分 if(file_exists($_FILES['upfile']['tmp_name'])){ $filename = $_FILES['upfile']['name']; $filename = $no.$filename; if (move_uploaded_file($_FILES['upfile']['tmp_name'], $updir.$filename) == FALSE){ print("Upload failed"); print($_FILES['upfile']['error']); } else { // // ファイルを読み込んで該当項目をカウントアップ $lines = file($data_file); $kakiko = "$filename|0|\n"; $fp = fopen($data_file,"r+"); flock($fp,LOCK_EX); fputs($fp,$kakiko); for($i = 0; $i < count($lines); $i++){ fputs($fp, $lines[$i]); } flock($fp,LOCK_EX); fclose ($fp); // print("<b> $filename </b> uploaded"); } } // //クリックされた時 if(isset($dl)){ //例によってレッツ!phpさんの拝借 // ファイルを読み込んで該当項目をカウントアップ $dat = file($data_file); for ($i=0; $i<count($dat); $i++) { // 項目名とカウントに分割("|"区切り) list($name, $vote) = explode("|", $dat[$i]); // 該当項目と一致したらカウント1増やして、該当行更新 if ($name == "$dl") { $vote += 1; $dat[$i] = "$name|$vote|\n"; break; // ループを抜ける } } //ファイル本体をDL $file_ad = "./data/".$dl; header('Content-Disposition: inline; filename='.$dl); header('Content-Type: application/octet-stream'); readfile($file_ad); // カウントファイル更新 $fp = fopen($data_file, "w"); flock($fp, LOCK_EX); fputs($fp,implode('', $dat)); fclose($fp); } //表示 $dat = file($data_file); for ($i=0; $i<count($dat); $i++) { // 項目名とカウントに分割("|"区切り) list($name, $vote) = explode("|", $dat[$i]); // 項目名をキーに投票数を要素にした配列を作る $cnt[$name] = $vote; } echo '<title>ダウンローダー</title>'; echo '<h2>ダウンローダー</h2>'; echo "<form method=\"post\" enctype=\"multipart/form-data\" action=\"index.php\"><input type=\"file\" name=\"upfile\">"; echo '<input type="submit" value="アップロードする"><br>'; echo 'ファイル名 ダウンロード数<br>'; for($i=0; $i<count($filelist); $i++){ $f_name=$filelist[$i]; //echo "$filelist[$i]<a href=\"dr.php?dl=$filelist[$i]\">ダウンロード</a><br>"; echo "$f_name <a href=\"?dl=$f_name\">Download</a>[$cnt[$f_name]]<br>"; } ?>