Subversion Repositories personal-webbase

Rev

Rev 12 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. if (!defined('WBLEGAL')) die('Kann nicht ohne Personal WebBase ausgef&uuml;hrt werden.');
  4.  
  5.   if ($aktion == 'dest')
  6.   {
  7.     if (isset($pwd) && ($pwd != $ib_user_passwort) && ($wb_user_type == 1))
  8.       die($header.'<h1>Daten&uuml;bertragung</h1>Es wurde ein falsches Passwort eingegeben.'.$footer);
  9.  
  10.     if (strtoupper($sic) != 'OK')
  11.       die($header.'<h1>Daten&uuml;bertragung</h1>Sie m&uuml;ssen das Sicherheitsfeld ausf&uuml;llen!'.$footer);
  12.  
  13.     foreach ($tabellen as $m1 => $m2)
  14.     {
  15.       if (isset($datenbanktabellen[$mysql_zugangsdaten['praefix'].$m2]['user']))
  16.       {
  17.         db_query("DELETE FROM `".$mysql_zugangsdaten['praefix'].$m2."` WHERE `user` = '".$benutzer['id']."'");
  18.         if (db_affected_rows() > 0)
  19.           db_query("OPTIMIZE TABLE `".$mysql_zugangsdaten['praefix'].$m2."`");
  20.       }
  21.     }
  22.  
  23.     unset($m1);
  24.         unset($m2);
  25.  
  26.     echo $header.'<h1>Daten&uuml;bertragung</h1>Es wurden alle Datens&auml;tze entfernt.'.$footer;
  27.   }
  28.  
  29.   if ($aktion == 'dump')
  30.   {
  31.     if (isset($pwd) && ($pwd != $ib_user_passwort) && ($wb_user_type == 1))
  32.     {
  33.       echo $header.'<h1>Daten&uuml;bertragung</h1>Es wurde ein falsches Passwort eingegeben.'.$footer;
  34.     }
  35.     else
  36.     {
  37.       if($_FILES['dfile']['tmp_name'])
  38.       {
  39.           ob_start();
  40.           readfile($_FILES['dfile']['tmp_name']);
  41.           $inh = ob_get_contents();
  42.           ob_end_clean();
  43.  
  44.           $m = '';
  45.  
  46.                   // Größten Datensatz finden, um Dateiduplikate zu verhindern
  47.                   $max = 0;
  48.                   foreach ($tabellen as $m1 => $m2)
  49.                   {
  50.                     $rs = db_query("SELECT MAX(`id`) AS `ma` FROM `".$mysql_zugangsdaten['praefix'].db_escape($m2)."`");
  51.                     $rw = db_fetch($rs);
  52.                     if ($rw['ma'] > $max)
  53.                       $max = $rw['ma'];
  54.                   }
  55.  
  56.                   unset($m1);
  57.                   unset($m2);
  58.  
  59.                   $warn = '';
  60.                   $firstds = true;
  61.                   $falsche_rev = false;
  62.                   $aktionzeile = 1;
  63.                   $inh = str_replace("\r", '', $inh);
  64.                   $inh = str_replace("\n", '', $inh);
  65.                   $ar1 = explode(";", $inh);
  66.                   foreach ($ar1 as $a11 => $a12)
  67.                   {
  68.                     if ($firstds)
  69.                     {
  70.                       $firstds = false;
  71.                       if ($a12 != 'IRONBASE#1')
  72.                       {
  73.                         $falsche_rev = true;
  74.                         $warn .= '<b>Schwerer Fehler:</b><br><br>Dies ist keine g&uuml;ltige Personal WebBase-Datensicherung. Das Kopfzeilenelement &quot;IRONBASE#1&quot; wurde nicht gefunden.';
  75.                       }
  76.                     }
  77.                     else if ((!$falsche_rev) && ($a12 != ''))
  78.                     {
  79.                       $aktionzeile++;
  80.                       $namen = '';
  81.                       $werte = '';
  82.                       $ar2 = explode('*', $a12);
  83.                       $t = $ar2[0];
  84.                       $d = $ar2[1];
  85.                       $temp = $tabellen;
  86.                       @array_flip($temp);
  87.                       if (!array_key_exists($t, $temp))
  88.                       {
  89.                         $ar3 = explode(',', $d);
  90.                         foreach ($ar3 as $a31 => $a32)
  91.                         {
  92.                           $ar4 = explode('~', $a32);
  93.                           $neu_namen = "`".db_escape(base64_decode($ar4[0]))."`, ";
  94.                   if (base64_decode($ar4[0]) == 'id')
  95.                           {
  96.                             $neu_werte = "'".db_escape(base64_decode($ar4[1])+$max)."', ";
  97.                           }
  98.                           else
  99.                           {
  100.                             if ((base64_decode($ar4[0]) == 'folder') && (base64_decode($ar4[1]) != 0))
  101.                               $neu_werte = "'".db_escape(base64_decode($ar4[1])+$max)."', ";
  102.                             else
  103.                               $neu_werte = "'".db_escape(base64_decode($ar4[1]))."', ";
  104.                           }
  105.  
  106.                           // Benutzerfeld darf nicht vom Datensatz aus hervorgehen!
  107.                           if ($ar4[0] == 'user')
  108.                           {
  109.                             $warn .= 'Schutzverletzung des Typs B beim Versuch, den Benutzer bei folgender Stelle zu setzen:<br><code>Backup-Zeile: #'.$aktionzeile.'</code><br><br>';
  110.                           }
  111.                           else
  112.                           {
  113.                             $namen .= $neu_namen;
  114.                             $werte .= $neu_werte;
  115.                           }
  116.                         }
  117.                       }
  118.                       else
  119.                       {
  120.                         $warn .= 'Schutzverletzung des Typs A beim Versuch, Daten in folgende nichtexistente Tabelle einzuf&uuml;gen:<br><code>'.my_htmlentities(base64_decode($t)).'</code><br><br>';
  121.                       }
  122.                       $sql = "INSERT INTO `".$mysql_zugangsdaten['praefix'].base64_decode($t)."` ($namen`user`) VALUES ($werte'".$benutzer['id']."')";
  123.                       // Debug: echo my_htmlentities($sql).'<br><br>';
  124.                       if (!db_query($sql))
  125.                        $warn .= 'Fehler beim Ausf&uuml;hren des Befehls:<br><code>'.my_htmlentities($sql).'</code><br>MySQL gab folgende Fehlermeldung aus:<br><code>'.mysql_error().'</code><br><br>';
  126.                     }
  127.                   }
  128.                   $m = $warn;
  129.  
  130.           echo $header;
  131.           echo '<h1>Daten&uuml;bertragung</h1>';
  132.           if ($m != '')
  133.             echo '<b>Bei der Daten&uuml;bertragung sind einige Fehler aufgetreten. Sie sind hier aufgelistet.</b><br><br>'.$m;
  134.           else
  135.             echo '<b>Die Daten&uuml;bertragung wurde erfolgreich beendet!</b>';
  136.           echo $footer;
  137.       }
  138.       else
  139.       {
  140.           echo "$headerBitte geben Sie eine Datei an!$footer";
  141.       }
  142.     }
  143.   }
  144.  
  145. ?>
  146.