Scripts
Test menu
Dit script genereerd een menu op basis van bestanden in bepaalde mappen. Foto's worden weergeven d.m.v.
test-menu
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">
• '. 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">
• <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">
• '. 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">
• <a href="?p='.$_GET['p'].'&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'].'&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]
Reacties
0