GGC

Neuigkeiten
Hauptseite
Links
English flag SourceForge Forum
English flag SourceForge Downloads
English flag Javadoc Dokumentation
Über dieses Projekt
English flag English version

Legales
Webseitenquellcode

SourceForge.net Logo


Sollten auf den oben genannten Seiten Probleme auftreten, wenden Sie sich bitte an den Sitemaster.

Best viewed with any browser

<?php
/*
MODIFICATIONS:
  +2006-02-24: RR started tracking modifications
  +2006-03-11: RR three more pregs to prevent spying in pma, newsticker and db.inc
  +2006-04-05: RR comments
*/

// This recursive function parses all directories from a given directory $dir
// USAGE:
//   +$prefix should generally be empty on first call. If it isn't, I assume it's
//    last character is a '/'
function parsedirs ($dir$prefix)
{
$currdir opendir ("$prefix$dir");
  while (
$entry readdir ($currdir))
  {
    
// If we found a directory, recurse into it, writing the path with a suffixed
    // colon and opening up a new <ul>.
    
if (is_dir ("$prefix$dir/$entry") && !($entry == '..' || $entry == '.' ||
        
$entry == 'pma' || $entry == 'newsticker' || $entry == 'scripts' ||
        
$entry == 'img' || $entry == 'styles' || $entry == 'quanta' ||
        
$entry == 'javadocs' || $entry == '.svn' ))
    {
      echo 
"<li>$entry/:\n".'  <ul>'."\n";
      
parsedirs ($entry
      
"$prefix$dir/");
      echo 
'  </ul>'."\n".'</li>'."\n";
    }
    
// If this entry isn't a directory and the files contain .php or .inc, output a
    // link to them and a little description.
    
elseif ((stristr ($entry,'.php') || stristr ($entry,'.inc')) &&
        !
stristr ($entry'db.inc'))
    {
      echo 
'    <li><a href="index.php?right=source&amp;show='."$prefix$dir/$entry".
          
'">Click here for the source of '."$entry".'</a></li>'."\n";
    }
 }
closedir($currdir);
}


// Check if we should disply code. If we shouldn't, output a relatively extensive
// description of the site's structure. If we should, make sure that nobody is trying
// to spy any little secrets we might have on disk and the specified file actually
// exists.
if ($_GET['show'] != '')
  if (
$_GET['show'][0] == '/'
      
// My first preg ever. Gee, am I proud to produce such a senseless sequence of
      // dots and slashes. What this actually does is check if a zero times or more
      // often repeated substring ./ enclosed by ../ exists.
      
|| preg_match ('/\.\.\/(\.\/)*\.\.\//'$_GET['show'])
      || 
preg_match ('/\/pma\//'$_GET['show'])
      || 
preg_match ('/\/newsticker\//'$_GET['show'])
      )
    echo 
'NO WAY! No spying through this script!!!';
  elseif (!
file_exists ($_GET['show'])
      || 
preg_match ('/\/db.inc/'$_GET['show'])
      )
    echo 
'ERROR: specified file does not exist!';
  else
    
show_source ($_GET['show']);
else
{
?>
<p xml:lang="en">
  I use a very light-weight, home-made CMS-like construct for displaying this site's
  contents. Basically, there is the toplevel index.php
  (<a href="../index.php">bediary.sourceforge.net</a>) which only forwards the
  browser to eiter the english or the german version (and does some other minor
  things not worth mentioning).
</p>
<p xml:lang="en">
  <a href="index.php?right=source&amp;show=../index.php">Click here for the source of
  the toplevel index.php.</a>
</p>
<p xml:lang="en">
  The individual versions are equivalent except for the language-specific parts, but
  since I have to be able to edit this site's content without an active internet
  connection, they don't reside in a database (which would be a lot more efficient).
  For each version, there is an individual index.php with a similar structure.
</p>
<p xml:lang="en">
  <a href="index.php?right=source&amp;show=index.php">Click here for the source of
  the english index.php.</a>
</p>
<p xml:lang="en">
  This index.php does the main content managing. It loads the
  <a href="contents.php">contents.php</a> which is a hardcoded list of contents
  (again, this could be done a lot more efficiently, if I used a database).
</p>
<p xml:lang="en">
  <a href="index.php?right=source&amp;show=contents.php">Click here for the source of
  contents.php.</a>
</p>
<p xml:lang="en">
  It then loads the currently selected page (see below for a list of pages) or a
  default. Finally, it displays a visitor count.
</p>
<ul xml:lang="en">
<?php
parsedirs
('..','');
?>
</ul>
<?php
}
?>

Besucherzähler: 10913