index.php voor de hoofdmap:

[code]
<?php
session_start();
error_reporting(E_ALL);
include 'functions.php';

$dir = array('.', 'peter', 'scripts', 'subsites'); // de directory die uitgelezen moet worden
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<link href="style.css" type="text/css" rel="stylesheet" />
	<title>Index</title>
</head>
<body>
	<div style="float:left;" class="div">
		<?php
		foreach($dir as $dir) //pak 1 voor 1 de mappen uit de array $dir
		{
			if($handle = @opendir($dir))  //als de map gelezen kan worden 
			{
				if($dir != '.') //als de map niet de actuele map is
				{
					echo '<h3>'.$dir.'</h3>'; //echo de map die gelezen wordt
				}
				else //als de map wel de actuele map is
				{
					echo '<h3>Deze map</h3>'; //echo dan 'Deze map', dat staat wat netter dan een '.'
				}
				
				echo '<table border="0" class="table">'; //en start een tabel

				while (false !== ($file = readdir($handle))) //zolang er gelezen kan worden
				{  
					$bestand = $dir ."/". $file; //we maken van de variabelen $dir en $file 1 variabele
					$ext = pathinfo($bestand); //en vragen wat info op over het bestand
					
					if(!isset($ext['extension'])) //als de extensie niet bestaat, is het dus een map
					{
						$ext['extension'] = 'dir'; //en dat geven we dus ook even aan
					}
					
					maplezen(1, $bestand, $file, $ext); //voer de functie maplezen uit, met de goede variabelen
				}
				closedir($handle); //sluit de geopende map
			}
			else //als de map niet gelezen kan worden
			{
				echo '<br /><b>Error!</b> De map '.$dir.' kon niet worden gelezen.'; //echo dat
			}
			
			echo '</table>'; //en echo even het einde van de tabel
		}
		?> 
	</div>
	<div style="float:right; position: absolute; left: 225px; right: 0px; top: 8px;" class="div">
		<?php
			weergeefcontent1(); //voer de functie weergeefcontent1 uit
		?>
	</div>
</body>
</html>
[/code]

index.php voor een submap:

[code]
<div style="float:left;" class="div">
<?php
if(!isset($_GET['p']))
{
	$_GET['p'] = '.';
}

$dir = array($_GET['p']); // de directory die hij uit moet lezen
$extensions = array('php', 'dir'); // de extensie die weergegeven moeten worden
$verboden = array('image.php', 'index.php');

foreach($dir as $dir)
{
	$i = 0;
	
	if ($handle = @opendir($dir))  
	{
		$dir = str_replace('./', '', $_GET['p']);
		
		echo '<h3>'.$dir.'</h3>';
		echo '<table border="0" class="table">';

		while (false !== ($file = readdir($handle)))
		{  
			$bestand = $file ;
			$ext = pathinfo($bestand);
			
			if(isset($ext['extension']))
			{
				$ext['extension'] = $ext['extension'];
			}
			else
			{
				$ext['extension'] = 'dir';
			}
			
			maplezen(2, $bestand, $file, $ext);

			$i++;
		}
		closedir($handle);  
	}
	else
	{
		echo 'De map '.$dir.' kon niet worden gevonden.';
	}
	echo '</table>';
}
?> 
</div>
<div style="margin-left:230px" class="div">
	<?php
		weergeefcontent2();
	?>
</div>
[/code]

En ook nog functions.php

[code]
<?php
	$extensions = array('php', 'dir', 'zip', 'jpg'); // de extensies die weergegeven moeten worden (dir voor map)
	$downloads = array('zip'); //bestanden die als download gegeven moeten worden (kunnen geen bestanden zijn die door de browser gelezen kunnen worden)
	$verboden = array('index.php', 'functions.php'); //bestanden die niet weergeven moeten worden
	$mapdirs = array('subsites'); //mappen waar alleen de submappen weergeven moeten worden
	$extensiecontrole = array('php', 'html', 'htm', 'txt'); //bestanden die geinclude en gehighlight kunnen worden
	$afbeeldingen = array('jpg', 'gif', 'jpeg', 'tiff', 'png'); //afbeeldingen
		
	function extensiecontrole($bestand) //maak een extensiecontrolefunctie aan
	{
		global $extensiecontrole;
		
		$info = pathinfo($bestand); //geef even wat info over het bestand
		$extensie = strtolower($info['extension']); //en maak even de variabele $extensie, door van de extensie kleine letters te maken
	
		if(in_array($extensie, $extensiecontrole)) //als de extensie in de array extensiecontrole is
		{
			return TRUE; //geef dan true terug
		}
		else //zo niet
		{
			return FALSE; //geef dan false terug
		}
	} //einde functie extensiecontrole
	
	function mapcontroleren1($bestand, $file, $ext) //maak de functie mapcontroleren1 aan
	{
		global $dir; //pak de eerder aangemaakte $dir
		global $mapdirs; //en de eerder aangemaakte $mapdirs
		global $downloads; //en de eerder aangemaakte $downloads
		global $afbeeldingen; //en dan ook nog de array afbeeldingen
		
		if(in_array($dir, $mapdirs)) //als de $dir in $mapdirs voorkomt (als de opgegeven map aleen submappen moet weergeven)
		{
			if($ext['extension'] == 'dir') //als de extensie 'dir' is
			{
				echo '<tr>
						<td width="125px" class="td">
							<a href="'.$bestand.'" target="_new">
								'. basename($file, '.'.$ext['extension']) .' ('.$ext['extension'].')
							</a>
						</td>
					</tr>'; //echo de map dan, met linkje tabelletje, enz...
			}
		}
		elseif(in_array($ext['extension'], $downloads)) //als de extensie in de download array voor komt
		{
			echo '<tr>
					<td width="125px" class="td">
						<a href="'.$bestand.'" target="_new">
							&bull; '. basename($file, '.'.$ext['extension']) .' ('.$ext['extension'].')
						</a>
					</td>
				</tr>'; //echo de file dan, met linkje tabelletje, enz...
		}
		else //als de $dir niet in $mapdirs voorkomt (als de opgegeven map alle bestanden moet weergeven)
		{
			echo '<tr>
					<td width="125px" class="td">
						&bull;  <a href="?p='.$bestand.'">'. basename($file, '.'.$ext['extension']) .' ('.$ext['extension'].')</a>
					</td>
					<td width="30px" class="td">
						<a href="'.$bestand.'" class="nieuw" target="_new">New</a>
					</td>'; //echo dan de hele rotzooi, met een linkje erachter, waardoor het bestand in een nieuw venster geopend wordt
			
			if((!is_dir($bestand)) && (!in_array($ext['extension'], $afbeeldingen))) //als het bestand geen map is
			{
				echo '<td width="30px" class="td">
						<a href="?h='.$bestand.'" class="high">High</a>
					</td>'; //dan kunnen we zelfs nog een linkje maken naar het hightlight gedeelte
			}

			echo '</tr>'; //en echo even het ende van de tabelrij
		}
	} //einde functie mapcontroleren1
	
	function mapcontroleren2($bestand, $file, $ext)//maak de functie mapcontroleren2 aan
	{
		global $dir; //pak de eerder aangemaakte $dir
		global $mapdirs; //en de eerder gemaakte $mapdirs
		global $downloads; //en als laatste de array downloads
		global $afbeeldingen; //en ook nog de array afbeeldingen

		if(in_array($ext['extension'], $downloads)) //als de extensie in de download array voor komt
		{
			echo '<tr>
					<td width="125px" class="td">
						<a href="'.$_GET['p'].'/'.$bestand.'" target="_new">
							&bull; '. basename($file, '.'.$ext['extension']) .' ('.$ext['extension'].')
						</a>
					</td>
				</tr>'; //echo de file dan, met linkje tabelletje, enz...
		}
		else //als de $dir niet in $mapdirs voorkomt (als de opgegeven map alle bestanden moet weergeven)
		{
			echo '<tr>
					<td width="125px" class="td">
						&bull;  <a href="?p='.$_GET['p'].'&amp;p2='.$bestand.'">'. basename($file, '.'.$ext['extension']) .' ('.$ext['extension'].')</a><br>
					</td>
					<td width="30px" class="td">
						<a href="'.$_GET['p'].'/'.$bestand.'" class="nieuw" target="_new">New</a><br>
					</td>'; //echo dan de hele rotzooi, met een linkje erachter, waardoor het bestand in een nieuw venster geopend wordt
		
			if((!is_dir($_GET['p'].'/'.$bestand)) && (!in_array($ext['extension'], $afbeeldingen))) //als het bestand geen map is
			{
				echo '<td width="30px" class="td">
							<a href="?p='.$_GET['p'].'&amp;h2='.$_GET['p'].'/'.$bestand.'" class="high">High</a><br>
						</td>'; //dan kunnen we het highlighten
			}
	
			echo '</tr>'; //en echo weer het einde van de tabelrij
		}
	} //einde functie mapcontroleren2
	
	function maplezen($a, $bestand, $file, $ext) //maak een functie aan voor het lezen van de map
	{
		global $extensions; //pak de eerder gemaakte $extensions
		global $verboden; //en de eerder gemaakte $verboden
		
		if((in_array($ext['extension'], $extensions)) && //als de extensie in de array $extensions voorkomt
		   ($file != '.') && //en het bestand is niet '.'
		   ($file != '..') && //en het bestand is ook niet '..'
		   (!in_array($file, $verboden))) //en het bestand komt niet voor in de array verboden
		{
			if($a == 1) //als de functie is aangeroepen met parameter 1
			{
				mapcontroleren1($bestand, $file, $ext); //voer dan mapcontroleren1 uit
			}
			elseif($a == 2) //als de functie is aangeroepen met parameter 2
			{
				mapcontroleren2($bestand, $file, $ext); //voer dan mapcontroleren2 uit
			}
			else //als de functie niet is aangeroepen met parameter 1 of 2
			{
				echo '<b>Error!</b> De functie mapcontroleren is aangeroepen met een ongeldige parameter (geen 1 of 2), het laden is gestopt'; //geef een error
				exit; //en beindig het script, zodat we niet steeds bovenstaande melding krijgen
			}
		}
	} //einde functie mapcontroleren
	
	function weergeefcontent1() //maak de functie weergeefcontent1 aan
	{
		global $afbeeldingen; //we roepen de arrat afbeeldingen aan
		global $ext; //en de array ext
		
		if(isset($_GET['p'])) //als ?p= bestaat
		{
			if(is_dir($_GET['p'])) //en als de ?p=... een bestaande map is
			{
				if(file_exists($_GET['p'].'/index.php')) //en als ?p=... /index.php bestaat
				{
					include $_GET['p'].'/index.php'; //include ?p=... /index.php
				}
				else //als en als ?p=... /index.php niet bestaat
				{
					echo $_GET['p'].' bevat geen index'; //echo dat de map geen index heeft
				}
			}
			elseif(file_exists($_GET['p'])) //als ?p=... geen bestaande map is, maar wel een bestaand bestand
			{
				$ext = pathinfo($_GET['p']); //we vragen weer is wat info op over het bestand
				
				if(extensiecontrole($_GET['p']) == TRUE) //als de extensie controle op ?p=... true geeft
				{
					if(@!include $_GET['p']) //dan kunnen we het bestand includen, maar als dat toch niet goed gaat
					{
						echo 'kon niet includen'; //dan geven we dat even in een echo ;-)
					}
				}
				elseif(in_array($ext['extension'], $afbeeldingen)) //als de extensie in de array afbeeldingen voorkomt
				{
					$_GET['p'] = str_replace('./', '', $_GET['p']); //replace de ./ door niks
					echo '<h2>'.$_GET['p'].'</h2><br /><br /><img src="'.$_GET['p'].'">'; //echo de fotonaam en de foto
				}
				else //als de extensie controle false geeft
				{
					echo '<b>Error!</b> Bestanden met deze extensie kunnen niet worden weergeven in dit venster'; //echo dat er niet geinclude kan worden
				}
			}
			else //als het bestand uit de get p niet bestaat
			{
				echo 'file bestaat niet'; //echo dat het bestand niet bestaat
			}
		}
		elseif(isset($_GET['h'])) //als ?h= is geset
		{
			if(extensiecontrole($_GET['h']) == TRUE) //en de extensie controle geeft TRUE
			{
				highlight_file($_GET['h']); //dan kunnen we het bestand highlighten
			}
			else //als de extensiecontrole geen TRUE geeft
			{
				echo 'Kon niet highlighten'; //dan geven we echo dat er niet gehighlight kon worden
			}
		}
		else //als er geen ?p= of ?h= bestaat
		{
			echo 'kies een script'; //echo dan dat je een script kunt kiezen
		}
	} //einde functie weergeefcontent1
	
	function weergeefcontent2() //maak de functie weergeefcontent2 aan
	{
		global $afbeeldingen; //we roepen de arrat afbeeldingen aan
		
		if(isset($_GET['p2'])) //als ?p2= bestaat
		{
			if(is_dir($_GET['p'].'/'.$_GET['p2'])) //en een combinatie van ?p= & ?p2= ook nog is een bestaande map geeft
			{
				if(file_exists($_GET['p'].'/'.$_GET['p2'].'/index.php')) //en de index bestaat ook nog
				{
					include $_GET['p'].'/'.$_GET['p2'].'/index.php'; //include dan die index
				}
				else //en als er geen index bestaat
				{
					echo $_GET['p2'].' bevat geen index'; //echo dan dat die map een index bevat
				}
			}
			elseif(file_exists($_GET['p'].'/'.$_GET['p2'])) //als een combinatie van ?p= & ?p2= geen map geeft, maar wel een bestand
			{
				$ext = pathinfo($_GET['p2']); //we vragen weer is wat info op over het bestand
				
				if(extensiecontrole($_GET['p'].'/'.$_GET['p2']) == TRUE) //en de extensie controle geeft TRUE
				{
					include $_GET['p'].'/'.$_GET['p2']; //dan kunnen we het bestand includen
				}
				elseif(in_array($ext['extension'], $afbeeldingen)) //als de extensie in de array afbeeldingen voorkomt
				{
					$_GET['p2'] = str_replace('./', '', $_GET['p'].'/'.$_GET['p2']); //replace de ./ door niks
					echo '<h2>'.$_GET['p2'].'</h2><br /><br /><img src="'.$_GET['p2'].'">'; //echo de fotonaam en de foto
				}
				else //als de extensie controle false geeft
				{
					echo 'Bestanden met deze extensie kunnen niet worden weergeven in dit venster'; //echo dan dat dat soort bestanden niet geinclude kan worden
				}
			}
			else //als het geen bestaand bestand of map is
			{
				echo 'file bestaat niet'; //tsjah, dan bestaat het niet hé, dus gooien we dat maar weer in een echo
			}
		}
		elseif(isset($_GET['h2'])) //als h2 is geset
		{
			if(file_exists($_GET['h2'])) //en het is een bestaand bestand
			{
				if(is_dir($_GET['h2'])) //en ook nog is een map
				{
					if(file_exists($_GET['h2'].'/index.php')) //en de map bevat ook nog een index
					{
						highlight_file($_GET['h2'].'/index.php'); //dan kunnen we die highlighten
					}
					else //en als de map geen index bevat
					{
						echo '<b>Error!</b> Kan een map niet highlighten'; //echo dat dan
					}
				}
				else //als het dan wel bestaat en zo, maar het is geen map
				{
					if(extensiecontrole($_GET['h2']) == TRUE) //en de extensiecontrole geeft TRUE
					{
						highlight_file($_GET['h2']); //dan kunnen we het bestand highlighten
					}
					else //als de extensiecontrole geen TRUE terug geeft
					{
						echo 'Dit soort bestanden kunnen niet worden weergeven als code'; //echo dan dat dat soort bestanden niet gehighlight kunnen worden
					}
				}
			}
			else //als het bestand niet bestaat
			{
				echo 'bestand bestaat niet'; //dan echoen we dat
			}
		}
		else //als er geen ?p= of ?h= bestaat
		{
			echo 'kies een script.<br /><br /> Script made by <a href="http://www.chess-web.nl/">Chess-web webdesign</a>'; //echo dan een standaard tekstje
		}
	}
?>
[/code]

en dan nog een klein beetje voor de lay-out, style.css:

[code]
html {
	background-color: #FFFFFF;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
}
body {
	background-color: #FFFFFF;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
}
a {
	text-decoration: none;
	color:#000099;
}
.td {
	border: 0px solid #FFFFFF;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 11px;
}
a:link.high {
	color: #006600;
}
a:link.nieuw {
	color: #FF0000;
}
a:visited.high {
	color: #006600;
}
a:visited.nieuw {
	color: #FF0000;
}
a:hover.high {
	color: #006600;
	text-decoration: underline;
}
a:hover.nieuw {
	color: #FF0000;
	text-decoration: underline;
}
a:active.high {
	color: #006600;
}
a:active.nieuw {
	color: #FF0000;
}
.div {
	background-color: #FFFFFF;
	border-style:dotted;
	border-color:#000000;
	border-width:thin;
	padding: 5px;
	margin: 5px;
	font-size: 100%;
}
.table {
	background-color: #FFFFFF;
	border-collapse: collapse;
}
code {
	font-size: 12px;
}
[/code]