Gå til innhold

lage et filarkiv i php


Anbefalte innlegg

Jeg vil gjerne lage et filarkiv i php der et script lister opp alle filer og mapper inni en valgt mappe. mappene skal komme opp som kategorier og filene skal listes opp under hver kategori. Jeg vil også logge hver nedlasting av en fil og vise antall ganger en den er lastet ned. Jeg vet ikke helt hvordan jeg skal få gjennomført dette, men jeg har sett noen eksempel på hvordan man lister opp filer og mapper, jeg er dog ikke sikker på hvordan jeg skal bruke dette til å bli slik jeg vil ha det...noen forslag?

Lenke til kommentar
Videoannonse
Annonse

Jeg fant et script som gjorde det jeg var ute etter, så jeg bare tok bort litt av de funksjonene jeg ikke trengte. Nå blir hver undermappe i den valgte mappen til kategorier og filene som ligger i mappene blir listet opp under de forskellige kategoriene, men loggingen funker ikke helt bra enda...

 

Jeg har laget en database med 4 felt:

id, ip, kategori og filnavn.

 

All info blir lagret riktig i databasen, men noe går galt nå jeg prøver å hente ut infoen, så det står bare at filen er lastet ned 0 ganger uansett hvor mange oppføringer det er i databasen. her er koden som brukes for å hent ut infoen:

 

  	
//finne ut hvor mange ganger filen er lastet ned
include"config3.php";
$q = "SELECT * FROM downloads WHERE filnavn = '$displayfilename' AND kategori = '$dir'";
$resultat = mysql_query($q) or die("Could not connect:". mysql_error());
$dls = mysql_num_rows($resultat);

 

Dette er koden i sin helhet:

 

<?php
$DownloadDir ="./inc/files";
$MaxLenFilename  = 32;
$TableWidth  	= "100%";
$BGColor1  	= "#EBE4D4";

echo "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"$TableWidth\">\n";

// putte alle mappene inni et array
if ($handle = opendir($DownloadDir)) {
 $dirs = array();
 while (false !== ($dir = readdir($handle))) {
 	if ($dir != "." && $dir != ".." && is_dir("$DownloadDir/$dir")) {
   array_push($dirs, $dir);
 	}
 }
 closedir($handle); 
}
sort($dirs);

$a2 = 0;
while ($dirs[$a2]) {
 $dir = $dirs[$a2];
 $a2++;

 // putte alle filene inn i et array
 if ($handle = opendir("$DownloadDir/$dir")) {
 	$files = array();
 	while (false !== ($file = readdir($handle))) {
   if ($file != "." && $file != ".." && !is_dir("$DownloadDir/$dir/$file")) { 
   	array_push($files, $file);
   }
 	}
 	closedir($handle);
 }
 sort($files);

 // unngå lange navn på mapper
 $length = strlen($dir);
 if ($length >= $MaxLenFilename) {
 	$length = $MaxLenFilename-3;
 	$displaydir = substr($dir, 0, $length) . "...";
 }
 else $displaydir = $dir;

 if (count($files) != 0) {
 	echo "<tr><td colspan=\"5\"></td></tr>\n";
 	echo "<tr><td colspan=\"3\"><b>$displaydir</b></td><td><b>Størr.:</b></td><td><b>Dl's:</b></td></tr>\n";
 }

 $bgcolor = $BGColor1;

 $b = 0;
 while ($files[$b]) {
 	$filename = $files[$b];
 	$b++;

 	// finne filstørrelsen
 	$filesize = filesize("$DownloadDir/$dir/$filename");
 	if ($filesize >= 1073741824) $filesize = round($filesize / 1073741824 * 100) / 100 . " GB";
 	elseif ($filesize >= 1048576) $filesize = round($filesize / 1048576 * 100) / 100 . " MB";
 	elseif ($filesize >= 1024) $filesize = round($filesize / 1024 * 100) / 100 . " KB";
 	else { $filesize = $filesize . " B"; }
 	
 	//finne ut hvor mange ganger filen er lastet ned
 	include"config3.php";
 	$q = "SELECT * FROM downloads WHERE filnavn = '$displayfilename' AND kategori = '$dir'";
 	$resultat = mysql_query($q) or die("Could not connect:". mysql_error());
 	$dls = mysql_num_rows($resultat);

 	// unngå lange filnavn
 	$length = strlen($filename);
 	if ($length >= $MaxLenFilename) {
   $length = $MaxLenFilename-3;
   $displayfilename = substr($filename, 0, $length) . "...";
 	}
 	else $displayfilename = $filename;

 	echo "<tr bgcolor=\"";
 	
 	// mekke annenhver bakgrunnsfarge
 	if ($bgcolor == $BGColor1) {
   echo $bgcolor;
   $bgcolor = $BGColor2;
 	}
 	else {
   echo $bgcolor;
   $bgcolor = $BGColor1;
 	}
 	echo "\"><td>$b.</td><td><a href=\"inc/download.php?file=$dir/$filename\">$displayfilename</a></td><td>";
 	echo "</td><td>$filesize</td><td>$dls</td></tr>\n";
 	}
echo "</table><br>\n";}
?>

 

Noen som ser hvor feilen kan ligge?

Endret av Tha_Zaynt
Lenke til kommentar

åhh selvfølgelig...la ikke merke til det. Takk skal du ha!

 

EDIT: Oppdaget en liten bug. Når jeg legger til en ny mappe, blir ikke tabelen med infoen printet ut riktig.

 

feilen er at det ikke blir startet en ny <table> men alt det andre er der..

 

EDIT 2; Never mind, fant ut av det. Kan poste den komplette koden hvis noen ønsker det ,men gidder ikke hvis ingen har interesse av det fordi da må jeg endre en del på scriptet.

Endret av Tha_Zaynt
Lenke til kommentar
  • 3 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...