• June 2, 2017

    Display Styled Directory Contents
    https://css-tricks.com/snippets/php/display-styled-directory-contents/

    1. Make an index file (.index.php, starting with the dot, really) which reads the files in the directory and outputs them into a table
    2.Make an .htaccess file that serves that file as the index
    3. Have the index file load in CSS and other resources that are also prefixed with a dot (hidden)
    The following PHP reads the directory of files and displays a styled table of their name, file type, and file size. It also applies a class name in which to apply icons for the different major file types (see CSS).

    <!doctype html>
    <html>
    
    <head>
      <meta charset="UTF-8">
      <title>Directory Contents</title>
      <link rel="stylesheet" href=".style.css">
      <script src=".sorttable.js"></script>
    </head>
    
    <body>
    
      <div id="container">
      
        <h1>Directory Contents</h1>
        
        <table class="sortable">
          <thead>
            <tr>
              <th>Filename</th>
              <th>Type</th>
              <th>Size <small>(bytes)</small></th>
              <th>Date Modified</th>
            </tr>
          </thead>
          <tbody>
          <?php
            // Opens directory
            $myDirectory=opendir(".");
            
            // Gets each entry
            while($entryName=readdir($myDirectory)) {
              $dirArray[]=$entryName;
            }
            
            // Finds extensions of files
            function findexts ($filename) {
              $filename=strtolower($filename);
              $exts=split("[/\\.]", $filename);
              $n=count($exts)-1;
              $exts=$exts[$n];
              return $exts;
            }
            
            // Closes directory
            closedir($myDirectory);
            
            // Counts elements in array
            $indexCount=count($dirArray);
            
            // Sorts files
            sort($dirArray);
            
            // Loops through the array of files
            for($index=0; $index < $indexCount; $index++) {
            
              // Allows ./?hidden to show hidden files
              if($_SERVER['QUERY_STRING']=="hidden")
              {$hide="";
              $ahref="./";
              $atext="Hide";}
              else
              {$hide=".";
              $ahref="./?hidden";
              $atext="Show";}
              if(substr("$dirArray[$index]", 0, 1) != $hide) {
              
              // Gets File Names
              $name=$dirArray[$index];
              $namehref=$dirArray[$index];
              
              // Gets Extensions 
              $extn=findexts($dirArray[$index]); 
              
              // Gets file size 
              $size=number_format(filesize($dirArray[$index]));
              
              // Gets Date Modified Data
              $modtime=date("M j Y g:i A", filemtime($dirArray[$index]));
              $timekey=date("YmdHis", filemtime($dirArray[$index]));
              
              // Prettifies File Types, add more to suit your needs.
              switch ($extn){
                case "png": $extn="PNG Image"; break;
                case "jpg": $extn="JPEG Image"; break;
                case "svg": $extn="SVG Image"; break;
                case "gif": $extn="GIF Image"; break;
                case "ico": $extn="Windows Icon"; break;
                
                case "txt": $extn="Text File"; break;
                case "log": $extn="Log File"; break;
                case "htm": $extn="HTML File"; break;
                case "php": $extn="PHP Script"; break;
                case "js": $extn="Javascript"; break;
                case "css": $extn="Stylesheet"; break;
                case "pdf": $extn="PDF Document"; break;
                
                case "zip": $extn="ZIP Archive"; break;
                case "bak": $extn="Backup File"; break;
                
                default: $extn=strtoupper($extn)." File"; break;
              }
              
              // Separates directories
              if(is_dir($dirArray[$index])) {
                $extn="&lt;Directory&gt;"; 
                $size="&lt;Directory&gt;"; 
                $class="dir";
              } else {
                $class="file";
              }
              
              // Cleans up . and .. directories 
              if($name=="."){$name=". (Current Directory)"; $extn="&lt;System Dir&gt;";}
              if($name==".."){$name=".. (Parent Directory)"; $extn="&lt;System Dir&gt;";}
              
              // Print 'em
              print("
              <tr class='$class'>
                <td><a href='./$namehref'>$name</a></td>
                <td><a href='./$namehref'>$extn</a></td>
                <td><a href='./$namehref'>$size</a></td>
                <td sorttable_customkey='$timekey'><a href='./$namehref'>$modtime</a></td>
              </tr>");
              }
            }
          ?>
          </tbody>
        </table>
      
        <h2><?php print("<a href='$ahref'>$atext hidden files</a>"); ?></h2>
        
      </div>
      
    </body>
    
    </html>

    The resources loaded in that index file are the top-in table sorter script sortable.js and a .style.css file. (Remember, prefacing the files with a dot makes the invisible in most operating systems, and also won’t show up in your directory of files (good)). Here’s that CSS:

    sortable.js
    https://kryogenix.org/code/browser/sorttable/

    * {
    	padding:0;
    	margin:0;
    }
    
    body {
    	color: #333;
    	font: 14px Sans-Serif;
    	padding: 50px;
    	background: #eee;
    }
    
    h1 {
    	text-align: center;
    	padding: 20px 0 12px 0;
    	margin: 0;
    }
    h2 {
    	font-size: 16px;
    	text-align: center;
    	padding: 0 0 12px 0; 
    }
    
    #container {
    	box-shadow: 0 5px 10px -5px rgba(0,0,0,0.5);
    	position: relative;
    	background: white; 
    }
    
    table {
    	background-color: #F3F3F3;
    	border-collapse: collapse;
    	width: 100%;
    	margin: 15px 0;
    }
    
    th {
    	background-color: #FE4902;
    	color: #FFF;
    	cursor: pointer;
    	padding: 5px 10px;
    }
    
    th small {
    	font-size: 9px; 
    }
    
    td, th {
    	text-align: left;
    }
    
    a {
    	text-decoration: none;
    }
    
    td a {
    	color: #663300;
    	display: block;
    	padding: 5px 10px;
    }
    th a {
    	padding-left: 0
    }
    
    td:first-of-type a {
    	background: url(./.images/file.png) no-repeat 10px 50%;
    	padding-left: 35px;
    }
    th:first-of-type {
    	padding-left: 35px;
    }
    
    td:not(:first-of-type) a {
    	background-image: none !important;
    } 
    
    tr:nth-of-type(odd) {
    	background-color: #E6E6E6;
    }
    
    tr:hover td {
    	background-color:#CACACA;
    }
    
    tr:hover td a {
    	color: #000;
    }
    
    /* icons for file types (icons by famfamfam) */
    
    /* images */
    table tr td:first-of-type a[href$=".jpg"], 
    table tr td:first-of-type a[href$=".png"], 
    table tr td:first-of-type a[href$=".gif"], 
    table tr td:first-of-type a[href$=".svg"], 
    table tr td:first-of-type a[href$=".jpeg"]
    {background-image: url(./.images/image.png);}
    
    /* zips */
    table tr td:first-of-type a[href$=".zip"] 
    {background-image: url(./.images/zip.png);}
    
    /* css */
    table tr td:first-of-type a[href$=".css"] 
    {background-image: url(./.images/css.png);}
    
    /* docs */
    table tr td:first-of-type a[href$=".doc"],
    table tr td:first-of-type a[href$=".docx"],
    table tr td:first-of-type a[href$=".ppt"],
    table tr td:first-of-type a[href$=".pptx"],
    table tr td:first-of-type a[href$=".pps"],
    table tr td:first-of-type a[href$=".ppsx"],
    table tr td:first-of-type a[href$=".xls"],
    table tr td:first-of-type a[href$=".xlsx"]
    {background-image: url(./.images/office.png)}
    
    /* videos */
    table tr td:first-of-type a[href$=".avi"], 
    table tr td:first-of-type a[href$=".wmv"], 
    table tr td:first-of-type a[href$=".mp4"], 
    table tr td:first-of-type a[href$=".mov"], 
    table tr td:first-of-type a[href$=".m4a"]
    {background-image: url(./.images/video.png);}
    
    /* audio */
    table tr td:first-of-type a[href$=".mp3"], 
    table tr td:first-of-type a[href$=".ogg"], 
    table tr td:first-of-type a[href$=".aac"], 
    table tr td:first-of-type a[href$=".wma"] 
    {background-image: url(./.images/audio.png);}
    
    /* web pages */
    table tr td:first-of-type a[href$=".html"],
    table tr td:first-of-type a[href$=".htm"],
    table tr td:first-of-type a[href$=".xml"]
    {background-image: url(./.images/xml.png);}
    
    table tr td:first-of-type a[href$=".php"] 
    {background-image: url(./.images/php.png);}
    
    table tr td:first-of-type a[href$=".js"] 
    {background-image: url(./.images/script.png);}
    
    /* directories */
    table tr.dir td:first-of-type a
    {background-image: url(./.images/folder.png);}

    REMEMBER: The .zip file might appear to be empty, but it’s not. The files are all prefaced with a dot. View them in a file editor which shows you “hidden” files.

    http://css-tricks.com/examples/DisplayDirectoryContents.zip



เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories