15. september 2003 - 09:54Der er
21 kommentarer og 1 løsning
Manglende funktion i PHP script..
Jeg er ved at lave et lille simpel File Manager script, som allerede nu kan liste alle de filer i den mappe hvori scriptet er placeret i..
Den funktion der mangler er egentligt bare, at scriptet skal kunne lave links til de filer som mappen scriptet er placeret indeholder.
F.eks, hvis scriptet ligger i en mappen hvori der ligger en fil med navnet players.txt, skulle den lave et link til den, og dermed ikke kun vise hvad filen hedder.. For at kunne se/hente denne fil skal man selv skrive filnavnet i sin browser, men det som skulle kunne lade sig af gøre er at scriptet selv linker til de filer som er i den enkelte mappe.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det ved jeg dog godt, men kunne godt tænke mig at scriptet linker til de filer den finder i mappen istedet for at lave en liste uden linkt kun med navnet på filerne ...
.. Uploader man en fil med scriptet finder den selv ud af at der er kommet en ny fil (eller flere) i den mappe som det er placeret i og dermed lister den filerne i mappen, men unlader at linke til dem, det jeg godt kunne tænke mig er bare at den også laver links til filerne som er i mappen ... Forstår du ??
ja, men jeg skal bare være sikker på hvad du mener med "link" og hvad der så skal ske. Hvad er et link til filen i mappen? og når jeg så klikker på det link hvad skal der så ske?
Oki... mange tak det ser ud til at fungere fint nu, nu linker den til alle filerne som ønsket.. besvar mig lige, så jeg kan kreditere dig for din indsats !
// set these configuration variables $user = ""; // change this to the username you would like to use. leave it empty if you dont want to use authentication $pass = "password"; $MaxFileSize = "1000000"; // max file size in bytes $HDDSpace = "100000000"; // max total size of all files in directory $HiddenFiles = array(".htaccess"); // add any file names to this array which should remain invisible $EditOn = 1; // make this = 0 if you dont want the to use the edit function at all $EditExtensions = array("htm","html","txt"); // add the extensions of file types that you would like to be able to edit
if($save) // if the save button was pressed on the edit screen { $newcontent = stripslashes($newcontent); $fp = fopen($path.$savefile, "w"); fwrite($fp, $newcontent); fclose($fp); }
$HDDTotal = dirsize($path); // get the total size of all files in the directory including any sub directorys
if ($upload) // if the upload button was pressed { if($HTTP_POST_FILES['uploadedfile']['name']) // if a file was actually uploaded { $HTTP_POST_FILES['uploadedfile']['name'] = str_replace("%","",$HTTP_POST_FILES['uploadedfile']['name']); // remove any % signs from the file name // if the file size is within allowed limits if($HTTP_POST_FILES['uploadedfile']['size'] > 0 && $HTTP_POST_FILES['uploadedfile']['size'] < $MaxFileSize) { // if adding the file will not exceed the maximum allowed total if(($HDDTotal + $HTTP_POST_FILES['uploadedfile']['size']) < $HDDSpace) { // put the file in the directory move_uploaded_file($HTTP_POST_FILES['uploadedfile']['tmp_name'], $path.$HTTP_POST_FILES['uploadedfile']['name']); } else { $msg = "<font face='Verdana, Arial, Hevetica' size='2' color='#ff0000'>There is not enough free space and the file could<br>not be uploaded.</font><br>"; } } else { $MaxKB = $MaxFileSize/1000; // show the max file size in Kb $msg = "<font face='Verdana, Arial, Hevetica' size='2' color='#ff0000'>The file was greater than the maximum allowed<br>file size of $MaxKB Kb and could not be uploaded.</font><br>"; } } else { $msg = "<font face='Verdana, Arial, Hevetica' size='2' color='#ff0000'>Please press the browse button and select a file<br>to upload before you press the upload button.</font><br>"; } } elseif($delete) // if the delete button was pressed { // delete the file unlink($path.$delete); }
$HDDTotal = dirsize($path); // get the total size of all files in the directory including any sub directorys $freespace = ($HDDSpace - $HDDTotal)/1000; // work out how much free space is left $HDDTotal = (int) ($HDDTotal/1000); // convert to Kb instead of bytes and type cast it as an int $freespace = (int) $freespace; // type cast as an int $HDDSpace = (int) ($HDDSpace/1000); // convert to Kb instead of bytes and type cast it as an int $MaxFileSizeKb = (int) ($MaxFileSize/1000); // convert to Kb instead of bytes and type cast it as an int
// build the html that makes up the file manager // the $filemanager variable holds the first part of the html // including the form tags and the top 2 heading rows of the table which // dont display files $filemanager = <<<content <center> <table border='0' cellspacing='0' cellpadding='20' bgcolor='#eeeeee'> <tr> <td> <font face="Verdana, Arial, Hevetica" size="4" color="#333333"><b>FILE MANAGER</b></font><br> $msg <font face="Verdana, Arial, Hevetica" size="2"><b>Total Space:</b> $HDDSpace Kb <b>Max File Size:</b> $MaxFileSizeKb Kb</font><br> <font face="Verdana, Arial, Hevetica" size="2"><b>Free Space:</b> $freespace Kb <b>Used Space:</b> $HDDTotal Kb</font><br> <form name="form1" method="post" action="$PHP_SELF" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="$MaxFileSize"> <input type="file" name="uploadedfile"> <input type="submit" name="upload" value="Upload"> <input type="hidden" name="u" value="$u"> </form> <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td height="20" bgcolor="#333333"></td> <td bgcolor="#333333" height="20"><font face="Verdana, Arial, Helvetica" size="2" color="#FFFFFF"><b> FILENAME </b></font></td> <td height="20" bgcolor="#333333"><font color="#FFFFFF" size="2" face="Verdana, Arial, Helvetica"><b> SIZE (bytes) </b></font></td> <td height="20" bgcolor="#333333"></td> <td height="20" bgcolor="#333333"></td> </tr> <tr> <td height="2" bgcolor="#999999"></td> <td height="2" bgcolor="#999999"></td> <td height="2" bgcolor="#999999"></td> <td height="2" bgcolor="#999999"></td> <td height="2" bgcolor="#999999"></td> </tr> content;
// build the table rows which contain the file information $newpath = substr($path, 0, -1); // remove the forward or backwards slash from the path $dir = @opendir($newpath); // open the directory while($file = readdir($dir)) // loop once for each name in the directory { // if the name is not a directory and the name is not the name of this program file if(is_file($path.$file) && $file != "$ThisFileName") { $match = 0; foreach($HiddenFiles as $name) // for each value in the hidden files array { if($file == $name) // check the name is not the same as the hidden file name { $match = 1; // set a flag if this name is supposed to be hidden } } if(!$match) // if there were no matches the file should not be hidden { $filedata = stat($file); // get some info about the file
// find out if the file is one that can be edited $editlink = ""; if($EditOn) // if the edit function is turned on { $dotpos = strrpos($file, "."); foreach($EditExtensions as $editext) { $ext = substr($file, ($dotpos+1)); if(strcmp($ext, $editext) == 0) { $editlink = " <a href='$PHP_SELF?edit=$file&u=$u'><font face='Verdana, Arial, Helvetica' size='2' color='#666666'>EDIT</font></a> "; } } }
// DETTE HER HAR JEG ÆNDRET!!!!! $file = "<a href=\"$file\">$file</a>"; // STOP PÅ ÆNDRING
// append 2 table rows to the $content variable, the first row has the file // informtation, the 2nd row makes a black line 1 pixel high $content .= <<<content <tr> <td bgcolor="#FFFFFF"></td> <td> <font face="Verdana, Arial, Helvetica" size="2">$file</font> </td> <td bgcolor="#FFFFFF"> <font face="Verdana, Arial, Helvetica" size="2">$filedata[7]</font> </td> <td> <a href='$PHP_SELF?delete=$file&u=$u'><font face="Verdana, Arial, Helvetica" size="2" color="#666666">DELETE</font></a> </td> <td bgcolor="#FFFFFF">$editlink</td> </tr> <tr> <td height="1" bgcolor="#000000"></td> <td height="1" bgcolor="#000000"></td> <td height="1" bgcolor="#000000"></td> <td height="1" bgcolor="#000000"></td> <td height="1" bgcolor="#000000"></td> </tr> content; } } } closedir($dir); // now that all the rows have been built close the directory $content .= "</td></tr></table></table></center>"; // add some closing tags to the $content variable $filemanager .= $content; // append the html to the $filemanager variable
Du har jo allerede noget lignende for EDIT og DELETE. (dog mangler </a> på den ene). Mit forslag tager ikke hensyn til om browseren forstår filtypen, men med billeder og tekster m.m. vil det virke.
PS: du skulle studere CSS, så du helt kan undgå at bruge <font> og farvekoder i din HTML. Så ville det være meget nemmere, at læse det dit script sender til browseren.
Hmm.. jaja, kender alt hvad der er at vide til CSS, men bruger det kun hvis jeg programmere store forums, portaler og meget mere..
Har du tænkt på at du med php ikke kan vise kilden på et script som autogenerere HTML, for med dette eksempel som du har givet, ville scriptet slet ikke kunne fungere, ide det at file.txt henviser til en bestemt fil, og ikke diverse filer, som scriptet selv opsamler fra mappen hvori det er placeret ...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.