Subversion Repositories personal-webbase

Rev

Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. //////////////////////////////////////////////////////////////////////////////
  4. // SICHERHEITSKONSTANTE                                                     //
  5. //////////////////////////////////////////////////////////////////////////////
  6. // Ohne diese werden Modulinhalte nicht ausgeführt                          //
  7. //////////////////////////////////////////////////////////////////////////////
  8.  
  9. define('WBLEGAL', '1');
  10.  
  11. //////////////////////////////////////////////////////////////////////////////
  12. // FUNKTIONEN                                                               //
  13. //////////////////////////////////////////////////////////////////////////////
  14.  
  15. require 'includes/functions.inc.php';
  16.  
  17. //////////////////////////////////////////////////////////////////////////////
  18. // PRÜFUNG VON MODDIR.TXT                                                   //
  19. //////////////////////////////////////////////////////////////////////////////
  20.  
  21. if (!file_exists('modules/moddir.txt'))
  22. {
  23.         die('<h1>Personal WebBase ist gesperrt</h1>Kann Datei modules/moddir.txt, die das Modulverzeichnis idendifiziert, nicht finden. Ist diese vorhanden, sind die Zugriffsberechtigungen der Dateien falsch. Empfohlen: Ordner CHMOD 755, Dateien CHMOD 644.');
  24. }
  25.  
  26. //////////////////////////////////////////////////////////////////////////////
  27. // KOMPATIBILITÄT                                                           //
  28. //////////////////////////////////////////////////////////////////////////////
  29. // Hier werden Einstellunen von PHP lokal verändert oder Variablen          //
  30. // bearbeitet, sodass Personal WebBase möglichst unabhängig von fremden     //
  31. // Konfigurationen wird und funktionell bleibt!                             //
  32. //////////////////////////////////////////////////////////////////////////////
  33.  
  34. // TODO Gleichrichter Vollrevision. Alles nochmal prüfen und erneuern
  35.  
  36. // 1. Magic Quotes Sybase abschalten
  37. @ini_set('magic_quotes_sybase', 'Off');
  38.  
  39. // 2. Magic Quotes Runtime abschalten
  40. set_magic_quotes_runtime(0);
  41.  
  42. // 3. variables_order / gpc_order ersetzen
  43. @ini_set('register_long_arrays', '1');
  44. $types_to_register = array('ENV', 'GET', 'POST', 'COOKIE', 'SERVER'); // SESSION und FILES werden nicht extrahiert
  45. foreach ($types_to_register as $rtype)
  46. {
  47.         // 4. Funktion von "Register Globals" ersetzen, wenn es ausgeschaltet ist
  48.         if ((!ini_get('register_globals')) && (@count(${'HTTP_'.$rtype.'_VARS'}) > 0))
  49.                 extract(${'HTTP_'.$rtype.'_VARS'}, EXTR_OVERWRITE);
  50.  
  51.         // Workaround, wenn register_long_arrays nicht auf 1 gesetzt werden konnte
  52.         if (ini_get('register_long_arrays') == '1')
  53.                 $ch = 'HTTP_'.$rtype.'_VARS';
  54.         else
  55.                 $ch = '_'.$rtype;
  56.  
  57.         // 5. Wenn "Magic Quotes GPC" aktiviert, dann die Aenderungen an GET/POST/COOKIE wieder rueckgaengig machen!
  58.         // Wir haben db_escape(), um SQL-Strings vor Injektionen zu schuetzen. Wir brauchen Magic Quotes nicht!
  59.         if ((get_magic_quotes_gpc() == 1) && (($rtype == 'GET') || ($rtype == 'POST') || ($rtype == 'COOKIE')))
  60.         {
  61.                 foreach ($$ch AS $m1 => $m2)
  62.                 {
  63.                         $$m1 = stripslashes($$m1);
  64.                         ${'HTTP_'.$rtype.'_VARS'}[$m1] = stripslashes(${'HTTP_'.$rtype.'_VARS'}[$m1]);
  65.                         ${'_'.$rtype}[$m1] = stripslashes(${'_'.$rtype}[$m1]);
  66.                 }
  67.  
  68.                 unset($m1);
  69.                 unset($m2);
  70.         }
  71.  
  72.         // 6. In HTML-Zeichen translatieren
  73.         // Wenn Benutzer z.B. &auml; in ein Formular eingeben, soll dies nicht uebersetzt werden etc!
  74.         // Übersetzung von < und > verhindert HTML-Code-Ausführung
  75.         if (($rtype == 'GET') || ($rtype == 'POST') || ($rtype == 'COOKIE'))
  76.         {
  77.                 foreach ($$ch AS $m1 => $m2)
  78.                 {
  79.                         $$m1 = encode_critical_html_characters($$m1);
  80.                         ${'HTTP_'.$rtype.'_VARS'}[$m1] = encode_critical_html_characters(${'HTTP_'.$rtype.'_VARS'}[$m1]);
  81.                         ${'_'.$rtype}[$m1] = encode_critical_html_characters(${'_'.$rtype}[$m1]);
  82.                 }
  83.  
  84.                 unset($m1);
  85.                 unset($m2);
  86.         }
  87. }
  88.  
  89. // 7. Deutsche Umgebung setzen
  90. $ary = explode('.', phpversion());
  91. if (((int)$ary[0] < 4) || (((int)$ary[0] == 4) && ((int)$ary[1] < 3)))
  92.         setlocale(LC_ALL, 'german');
  93. else
  94.         setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge', 'german');
  95. @ini_set('date.timezone', 'Europe/Zurich');
  96.  
  97. // 8. MAX_EXECUTION_TIME
  98. @set_time_limit(0);
  99.  
  100. // 9. Um unsauber entwickelte Module zu verhindern, höchstes Fehlerlevel aktivieren
  101. if ((int)$ary[0] >= 5)
  102.         @error_reporting(E_ALL | E_STRICT);
  103. else
  104.         @error_reporting(E_ALL);
  105.  
  106. // Konfiguration laden
  107.  
  108. if (file_exists('includes/configmanager.class.php')) {
  109.         include 'includes/configmanager.class.php';
  110. }
  111.  
  112. $WBConfig = new WBConfigManager();
  113. $WBConfig->init();
  114.  
  115. //////////////////////////////////////////////////////////////////////////////
  116. // MANUELLE SPERRUNG DURCH LOCK-VARIABLE                                    //
  117. //////////////////////////////////////////////////////////////////////////////
  118.  
  119. if ($WBConfig->getLockFlag())
  120. {
  121.         die('<h1>Personal WebBase ist gesperrt</h1>Die Variable &quot;$lock&quot; in &quot;includes/config.inc.php&quot; steht auf 1 bzw. true. Setzen Sie diese Variable erst auf 0, wenn das Hochladen der Dateien beim Installations- bzw. Updateprozess beendet ist. Wenn Sie Personal WebBase freigeben, bevor der Upload abgeschlossen ist, kann es zu einer Besch&auml;digung der Kundendatenbank kommen!');
  122. }
  123.  
  124. //////////////////////////////////////////////////////////////////////////////
  125. // SSL-VERBINDUNG ERZWINGEN? (NICHT BEI CRONJOBS)                           //
  126. //////////////////////////////////////////////////////////////////////////////
  127.  
  128. if (!((isset($modul)) && ($modul == 'core_cronjob')))
  129. {
  130.         if ($WBConfig->getForceSSLFlag())
  131.         {
  132.                 @ini_set('session.cookie_secure', 1);
  133.  
  134.                 // Wenn keine SSL Verbindung da, dann zu SSL umleiten
  135.                 if (!isset($_SERVER['HTTPS']) || (strtolower($_SERVER['HTTPS']) != 'on'))
  136.                 {
  137.                         wb_redirect_now('https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
  138.                 }
  139.         }
  140. }
  141.  
  142. //////////////////////////////////////////////////////////////////////////////
  143. // DEBUG-INITIALISIERUNG                                                    //
  144. //////////////////////////////////////////////////////////////////////////////
  145.  
  146. if (file_exists('modules/common_debugger/static_core/init.inc.php')) {
  147.         include('modules/common_debugger/static_core/init.inc.php');
  148. }
  149.  
  150. //////////////////////////////////////////////////////////////////////////////
  151. // DATENBANKKONNEKTIVITÄT                                                   //
  152. //////////////////////////////////////////////////////////////////////////////
  153.  
  154. require 'includes/database.inc.php';
  155.  
  156. //////////////////////////////////////////////////////////////////////////////
  157. // KONSTANTEN FÜR DESIGN                                                    //
  158. //////////////////////////////////////////////////////////////////////////////
  159.  
  160. $javascript = '<script language="JavaScript" type="text/javascript">
  161.         <!--
  162.  
  163.         function abfrage(url)
  164.         {
  165.                 var is_confirmed = confirm("M\u00f6chten Sie diese Aktion wirklich ausf\u00fchren?");
  166.                 if (is_confirmed)
  167.                 {
  168.                         document.location.href = url;
  169.                 }
  170.         }
  171.  
  172.         function oop(modul, seite, titel, gross)
  173.         {
  174.                 if (parent.Caption.fertig != "1")
  175.                 {
  176.                         window.setTimeout("oop(\'"+modul+"\', \'"+seite+"\', \'"+titel+"\', \'"+gross+"\')", 10);
  177.                 }
  178.                 else
  179.                 {
  180.                         titel = \'<img src="\'+gross+\'" alt="Icon" width="32" height="32"> \'+titel;
  181.                         if (parent.Caption.document.getElementById) parent.Caption.document.getElementById("ueberschrift").innerHTML = titel; else if (parent.Caption.document.all) parent.Caption.document.ueberschrift.innerHTML = titel;
  182.                         parent.Content.location.href = "page.php?'.(((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != '')) ? $_SERVER['QUERY_STRING'].'&' : '').'modul="+modul+"&seite="+seite;
  183.                 }
  184.         }
  185.  
  186.         function oop2(myurl, titel, gross)
  187.         {
  188.                 if (parent.Caption.fertig != "1")
  189.                 {
  190.                         window.setTimeout("oop(\'"+modul+"\', \'"+seite+"\', \'"+titel+"\', \'"+gross+"\')", 10);
  191.                 }
  192.                 else
  193.                 {
  194.                         titel = \'<img src="\'+gross+\'" alt="Icon" width="32" height="32"> \'+titel;
  195.                         if (parent.Caption.document.getElementById) parent.Caption.document.getElementById("ueberschrift").innerHTML = titel; else if (parent.Caption.document.all) parent.Caption.document.ueberschrift.innerHTML = titel;
  196.                         window.open(myurl, "_blank");
  197.                 }
  198.         }
  199.  
  200.         // -->
  201. </script>';
  202.  
  203. $header = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  204.  
  205. <html>
  206.         <head>
  207.                 <title>ViaThinkSoft Personal WebBase</title>
  208.                 <link href="style.css.php" rel="stylesheet" type="text/css">
  209.                 <link rel="SHORTCUT ICON" href="favicon.ico">
  210.                 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  211.                 <meta name="robots" content="noindex">
  212.         </head>
  213.  
  214.         <body>'.$javascript;
  215.  
  216. $header_navi = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  217.  
  218. <html>
  219.         <head>
  220.                 <title>ViaThinkSoft Personal WebBase</title>
  221.                 <link href="style.css.php" rel="stylesheet" type="text/css">
  222.                 <meta name="robots" content="noindex">
  223.         </head>
  224.  
  225.         <body class="margin_middle">'.$javascript;
  226.  
  227. $footer = '</body></html>';
  228.  
  229. ?>
  230.