diff --git a/.gitignore b/.gitignore
index 8e40cac7bd05632d5ae474d963c0e93875fbfc99..58ba07f3c875a4bf50105745caccc4e07c585105 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,7 @@
 
 # Sensitive or high-churn files:
 # .idea/dataSources.ids
-/lib/config.inc.php
+/lib/config.ini
 # .idea/dataSources.xml
 # .idea/sqlDataSources.xml
 # .idea/dynamic.xml
diff --git a/content/intern/impressum.php b/content/intern/impressum.php
index bd4d28ecda6b6b8894962eb89619ebaaa5865ce3..9f85f9e7e4399072f25d5a39b87c19a35d030d9b 100644
--- a/content/intern/impressum.php
+++ b/content/intern/impressum.php
@@ -1,5 +1,5 @@
 <?php
-head("Impressum von ".$seitenname."");
+head("Impressum von ".$system['seitenname']."");
     echo '<b>Anschrift</b>';
 foot();
 
@@ -9,13 +9,13 @@ head("Credits");
 foot();
 
 head("Rechtlicher Hinweis");
-    echo 'Alle verwendeten Fotos, Grafiken, Texte und sonstigen Bestandteile dieser Website unterliegen dem Copyright von <a href="'.$domain.'" target="_blank">'.$seitenname.'</a> und sind Eigentum von <a href="'.$domain.'" target="_blank">'.$seitenname.'</a>.<br>
+    echo 'Alle verwendeten Fotos, Grafiken, Texte und sonstigen Bestandteile dieser Website unterliegen dem Copyright von <a href="'.$system['domain'].'" target="_blank">'.$system['seitenname'].'</a> und sind Eigentum von <a href="'.$system['domain'].'" target="_blank">'.$system['seitenname'].'</a>.<br>
     <br>
-    Die private oder gewerbliche Verwendung von Inhalten jeglicher Art bedarf der vorherigen Zustimmung von <a href="'.$domain.'" target="_blank">'.$seitenname.'</a>.<br>
+    Die private oder gewerbliche Verwendung von Inhalten jeglicher Art bedarf der vorherigen Zustimmung von <a href="'.$system['domain'].'" target="_blank">'.$system['seitenname'].'</a>.<br>
     <br>
     Die Inhalte unserer Internetseiten werden sorgfältig geprüft. Eine Garantie für die Vollständigkeit, Richtigkeit und letzte Aktualität kann jedoch nicht übernommen werden.<br>
     <br>
-    <a href="'.$domain.'" target="_blank">'.$seitenname.'</a> ist für den Inhalt von Websites, auf die von unseren Seiten verlinkt wird, nicht verantwortlich. Der Verweis mittels Hyperlink stellt auch keine Empfehlung dieser Websites oder der sie betreibenden Unternehmen oder ihrer Produkte durch uns dar.<br>
+    <a href="'.$system['domain'].'" target="_blank">'.$system['seitenname'].'</a> ist für den Inhalt von Websites, auf die von unseren Seiten verlinkt wird, nicht verantwortlich. Der Verweis mittels Hyperlink stellt auch keine Empfehlung dieser Websites oder der sie betreibenden Unternehmen oder ihrer Produkte durch uns dar.<br>
     <br>
-    Haftungsansprüche, die durch die Nutzung unseres Internetangebotes verursacht werden, sind ausgeschlossen, sofern wir nicht vorsätzlich oder grob fahrlässig gehandelt haben. Des weiteren behält sich <a href="'.$domain.'" target="_blank">'.$seitenname.'</a> das Recht vor, Änderungen oder Ergänzungen der bereitgestellten Informationen vorzunehmen.<br>';
+    Haftungsansprüche, die durch die Nutzung unseres Internetangebotes verursacht werden, sind ausgeschlossen, sofern wir nicht vorsätzlich oder grob fahrlässig gehandelt haben. Des weiteren behält sich <a href="'.$system['domain'].'" target="_blank">'.$system['seitenname'].'</a> das Recht vor, Änderungen oder Ergänzungen der bereitgestellten Informationen vorzunehmen.<br>';
 foot();
\ No newline at end of file
diff --git a/content/intern/mediadaten.php b/content/intern/mediadaten.php
index f56d9931a713abca2749a027158bbb5447ccaaa9..2e93384122150dfd17ef2c70fe99d8fb35389943 100644
--- a/content/intern/mediadaten.php
+++ b/content/intern/mediadaten.php
@@ -6,11 +6,14 @@ if (!isset($in_fc_gebucht))	$in_fc_gebucht	= '';
 if (!isset($in_fc_menge))	$in_fc_menge	= '';
 if (!isset($in_fc_wert))	$in_fc_wert	= '';
 
-$kontostats	= mysql_fetch_array(db_query("SELECT COUNT(uid) AS kd_uid , SUM(kontostand) AS kd_kontostand , SUM(klicks) AS kd_klicks , SUM(angebettelt) AS kd_angebettelt , SUM(kv) AS kd_kv , SUM(bv) AS kd_bv FROM ".$db_prefix."_kontodaten"));
-$werberdaten	= mysql_fetch_array(db_query("SELECT SUM(gesamt) AS wd_gesamt FROM ".$db_prefix."_werberdaten"));
+$sql = sql::$db->query ("SELECT COUNT(`uid`) AS `kd_uid` , SUM(`kontostand`) AS `kd_kontostand` , SUM(`klicks`) AS `kd_klicks` , SUM(`angebettelt`) AS `kd_angebettelt` , SUM(`kv`) AS `kd_kv` , SUM(`bv`) AS `kd_bv` FROM `"._VMS_."_kontodaten` LIMIT 1");
+$kontostats = $sql -> fetch();
 
-$ex_fc = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE menge >= 1 and werbeart = 'forcedbanner' and status = '1'");
-while ($count = mysql_fetch_array($ex_fc)) {
+$sql = sql::$db->query ("SELECT SUM(`gesamt`) AS `wd_gesamt` FROM `"._VMS_."_werberdaten` LIMIT 1 ");
+$werberdaten = $sql -> fetch();
+
+$sql = sql::$db->query ("SELECT * FROM "._VMS_."_gebuchte_werbung WHERE menge >= 1 and werbeart = 'forcedbanner' and status = '1'");
+while ($count = $sql -> fetch()) {
 $fc_gebucht++;
 $fc_menge = $fc_menge + $count['menge'];
 $fc_wert = $fc_wert + ($count['verdienst']*$count['menge']);
@@ -21,7 +24,7 @@ $seitenstart	        = strtotime("04/02/2005"); // Format mm.tt.yyyy
 $tage			= ($heute - $seitenstart) / 86400;
 if ($tage <= 1) $tage = 1;
 
-head("Mediadaten - $seitenname");?>
+head("Mediadaten - ".$system['seitenname']);?>
 <table width="100%" border="0" cellpadding="1" cellspacing="1">
 <tr  class="tabellenbody_0">
 <td width="50%" >Start dieser Seite</td>
@@ -29,11 +32,11 @@ head("Mediadaten - $seitenname");?>
 </tr>
 <tr class="tabellenbody_1">
 <td width="50%">Guthaben aller User</td>
-<td width="50%"><?php echo @number_format($kontostats['kd_kontostand'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($kontostats['kd_kontostand'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 <tr class="tabellenbody_0">
 <td width="50%">Guthaben Ø pro User</td>
-<td width="50%"><?php echo @number_format($kontostats['kd_kontostand'] / $kontostats['kd_uid'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($kontostats['kd_kontostand'] / $kontostats['kd_uid'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 <tr class="tabellenbody_1">
 <td width="50%">Angemeldete User</td>
@@ -53,11 +56,11 @@ head("Mediadaten - Diverses");?>
 </tr>
 <tr class="tabellenbody_1">
 <td width="50%">Verdienst bei allen Forcedklicks</td>
-<td width="50%"><?php echo @number_format($kontostats['kd_kv'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($kontostats['kd_kv'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 <tr class="tabellenbody_0">
 <td width="50%">Ø Verdienst pro Klick</td>
-<td width="50%"><?php echo @number_format($kontostats['kd_kv']/$kontostats['kd_klicks'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($kontostats['kd_kv']/$kontostats['kd_klicks'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 <tr class="tabellenbody_1">
 <td width="50%">Bettelaufrufe alle User</td>
@@ -65,15 +68,15 @@ head("Mediadaten - Diverses");?>
 </tr>
 <tr class="tabellenbody_0">
 <td width="50%">Verdienst bei allen Bettelaufrufen</td>
-<td width="50%"><?php echo @number_format($kontostats['kd_bv'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($kontostats['kd_bv'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 <tr class="tabellenbody_1">
 <td width="50%">Ø Verdienst pro Aufruf</td>
-<td width="50%"><?php echo @number_format($kontostats['kd_bv']/$kontostats['kd_angebettelt'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($kontostats['kd_bv']/$kontostats['kd_angebettelt'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 <tr class="tabellenbody_0">
 <td width="50%">Refverdienste für alle Werber</td>
-<td width="50%"><?php echo @number_format($werberdaten['wd_gesamt'],2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($werberdaten['wd_gesamt'],2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 </table>
 <?php foot();
@@ -89,7 +92,7 @@ head("Mediadaten - Werbung");?>
 </tr>
 <tr class="tabellenbody_0">
 <td width="50%">Forcedklicks Gesamtwert</td>
-<td width="50%"><?php echo @number_format($fc_wert,2,",",".");?> <?php echo $waehrung;?></td>
+<td width="50%"><?php echo @number_format($fc_wert,2,",",".");?> <?php echo $system['waehrung'];?></td>
 </tr>
 </table>
 <?php foot();?>
\ No newline at end of file
diff --git a/content/intern/startseite.php b/content/intern/startseite.php
index 93cba5f1714b11a10f9d79e3d3a27796abf268a4..115c9c12bd47dd6b9c0b67f4c23f788aa20c9b49 100644
--- a/content/intern/startseite.php
+++ b/content/intern/startseite.php
@@ -1,5 +1,5 @@
-<?php head("Willkommen auf ".$seitenname);
-echo 'Hier werden sie mit '.$waehrung.' für das Surfen mit einer Surfbar bezahlt.
+<?php head("Willkommen auf ".$system['seitenname']);
+echo 'Hier werden sie mit '.$system['waehrung'].' für das Surfen mit einer Surfbar bezahlt.
 Die Surfbar ist so klein das sie nicht störend wirkt und doch funktionell ist.
 Man bekommt Banner angezeigt die alle 45 Sekunden wechseln. Ergänzt wird die
 Surfbar durch Clickbanner und Paidmails durch die sie ihren Verdienst noch
@@ -10,24 +10,26 @@ foot();
 
 
 if ($_SESSION['login'] == 'true'){
-   $news = db_query("SELECT * FROM ".$db_prefix."_news ORDER BY id DESC LIMIT 1");
-   while ($nz = mysql_fetch_array($news)) {
-         head($nz['titel'].' vom '.date("d.m.Y - H:i:s",$nz['zeit']));
-         echo nl2br($nz['news']);
-         foot();
-   }
+
+    $news = sql::$db->prepare("SELECT * FROM "._VMS_."_news ORDER BY id DESC LIMIT 1");
+    $news -> execute();
+    while( $nz = $news->fetch() ){
+        head($nz['titel'].' vom '.date("d.m.Y - H:i:s",$nz['zeit']));
+        echo nl2br($nz['news']);
+        foot();
+    }
 }
 
 
 head("Verdienst auf ganzer Linie !");
 echo '
-Bei '.$seitenname.' verdienen sie für fast alles '.$waehrung.'. Sie können durch das
+Bei '.$system['seitenname'].' verdienen sie für fast alles '.$system['waehrung'].'. Sie können durch das
 surfen mit der Surfbar, Clickbanner, Paidmails, Werben neuer Mitglieder, etc...
-viele '.$waehrung.' erwirtschaften.<br />
+viele '.$system['waehrung'].' erwirtschaften.<br />
 <br />
 <b>3 Ref-Ebenen:</b><br />
 Über 3-Refebenen verdienen Sie an ihren geworbenen Mitgliedern. Somit lohnt sich
-das werben neue Mitglieder. Allein durch das Ref-System können Sie viele '.$waehrung.'
+das werben neue Mitglieder. Allein durch das Ref-System können Sie viele '.$system['waehrung'].'
 verdienen selbst wenn Sie selbst nichts als werben neuer Mitglieder machen.
 Die Ref-Ebenen: 8% / 3% / 1%<br>
 <br />
diff --git a/content/news.php b/content/news.php
index 6a285f7272f1267184f0fad16dbb5b9e5ef4240b..b471d1f644e195f7aaa2d139f0c847c45d96bc47 100644
--- a/content/news.php
+++ b/content/news.php
@@ -1,13 +1,14 @@
-
 <?php
-$gelesen = db_query("UPDATE " . $db_prefix . "_kontodaten SET news='0' WHERE uid = " . $_SESSION['uid'] . "");
+//$sql = sql::$db->prepare ("UPDATE `" . _VMS_ . "_kontodaten` SET `news` = 0 WHERE `uid` = ? ");
+//$sql -> execute(array($_SESSION['uid']));
 
-if ($_GET['seite'] == '') {
-    $_GET['seite'] = 1;
-}
+if (!isset($_GET['seite']) OR $_GET['seite'] == '') $_GET['seite'] = 1;
 $start = $_GET['seite'] * 10 - 10;
-$sql = db_query("SELECT * FROM " . $db_prefix . "_news ORDER BY id DESC LIMIT $start, 10");
-while ($news = mysql_fetch_array($sql)) {
+
+$sql = sql::$db->prepare ("SELECT * FROM `" . _VMS_ . "_news` ORDER BY `id` DESC LIMIT :start , 10 ");
+$sql -> bindParam(':start', $start, PDO::PARAM_INT);
+$sql -> execute();
+while ($news = $sql -> fetch()) {
     head($news['titel'] . ' vom ' . date("d.m.Y - H:i:s", $news['zeit']));
     echo'<div style="text-align: left; ">';
     echo '<br>';
@@ -17,12 +18,9 @@ while ($news = mysql_fetch_array($sql)) {
 }
 head('Seiten');
 
-$seiten = db_query("SELECT id FROM " . $db_prefix . "_news");
-$menge = mysql_num_rows($seiten);
-$seitenanzahl = $menge / 10;
-
+$sql = sql::$db->query ("SELECT id FROM " . _VMS_ . "_news");
+$seitenanzahl = $sql ->rowCount() / 10;
 echo "<font face=\"Verdana\" size=\"1\" ><b>Seite:</b> </font> ";
-
 for($a = 0; $a < $seitenanzahl; $a++) {
     $b = $a + 1;
 
diff --git a/cron.php b/cron.php
index a8dc7266a11b5f9efad8a68e0a4e7f83dd38eca4..03735da2ebc4220868b00efeb90afd25d33ab2f8 100644
--- a/cron.php
+++ b/cron.php
@@ -1,30 +1,25 @@
 <?php
-@set_time_limit(0);
+@set_time_limit(600);
 @ignore_user_abort(true);
 
-require ( 'lib/config.inc.php' );
-require ( 'lib/functions.lib.php' );
+require_once ('lib/extras.init.php');
 
-if ($_GET['pw'] != $cron_pw) die('Zugriff verweigert!');
-
-$cron = (int)$_GET['id'];
-
-db_connect ();
+if ($_GET['pw'] != $system['cron_pw']) die('Zugriff verweigert!');
 
 # Bei jedem Aufruf auszuführende Befehle Start
 ## Alte Reloads löschen
-db_query('DELETE FROM '.$db_prefix.'_reloads WHERE bis <= '.time().'');
+sql::$db->query ('DELETE FROM `'._VMS_.'_reloads` WHERE `bis` <= '.time().' ');
 ## Abgelaufene Paidmails löschen
-db_query('DELETE FROM '.$db_prefix.'_paidmails_empfaenger WHERE
-              status = 1 || status = 2 || gueltig < '.time().'');
+sql::$db->query ('DELETE FROM `'._VMS_.'_paidmails_empfaenger` WHERE `status` = 1 || `status` = 2 || `gueltig` < '.time().' ');
 # Bei jedem Aufruf auszuführende Befehle Ende
 
-$sql = db_query ('SELECT datei FROM '.$db_prefix.'_crons WHERE id = '.$cron.' LIMIT 1') or die(mysql_error());
-$result = mysql_fetch_assoc ($sql);
+$sql = sql::$db->prepare ('SELECT `id`, `datei` FROM `'._VMS_.'_crons` WHERE `id` = ? LIMIT 1');
+$sql -> execute(array($_GET['id']));
+$result = $sql ->fetch();
 
 if ( include ($result['datei']) ){
-	db_query ('UPDATE '.$db_prefix.'_crons SET laufzeit = '.time().' WHERE id = '.$cron.' LIMIT 1') or die(mysql_error());
-	echo 'Cron gelaufen';
+	$sql = sql::$db->prepare ('UPDATE `'._VMS_.'_crons` SET `laufzeit` = ? WHERE `id` = ? LIMIT 1');
+	$sql -> execute (array(time(),$result['id']));
+    echo 'Cron gelaufen';
 } else echo 'Cron nicht gelaufen';
 
-db_close();
\ No newline at end of file
diff --git a/index.php b/index.php
index 850d1521574f6d169ed5ff490a2fdfcc6e81ccb8..4a70a76ad6eecf18785fcb4934cb852bca5f9c18 100644
--- a/index.php
+++ b/index.php
@@ -1,27 +1,19 @@
 <?php
-
 if (isset ($_GET['content']) && !empty ($_GET['content'])) {
     if (strpos ($_GET['content'], '../') !== false) die ('Zugriffsverletzung !');
-    if ($_GET['content'] {
-            0} != '/') $_GET['content'] = '/' . $_GET['content'];
+    if ($_GET['content'] {0} != '/') $_GET['content'] = '/' . $_GET['content'];
 }
-
-require ('lib/config.inc.php');
-require ('lib/functions.lib.php');
-db_connect();
-require ('lib/session.lib.php');
-require ('lib/layout.lib.php');
-require ('lib/extras.lib.php');
 if (!isset($_GET['content']) || empty ($_GET['content'])) $_GET['content'] = '/intern/startseite';
 if (!file_exists('content' . $_GET['content'] . '.php')) $_GET['content'] = '/error/keine_seite';
-if ($_GET['content'] == '/intern/startseite') @require_once ('lib/texte/alt_startseitenpopup.txt');
-if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpopup.txt');
+if ($_GET['content'] == '/intern/startseite') require_once ('lib/texte/alt_startseitenpopup.txt');
+if ($_GET['content'] == '/betteln') require_once ('lib/texte/alt_bettelseitenpopup.txt');
+require_once('lib/extras.init.php');
 ?>
 
 <!DOCTYPE html>
 <html lang='de'>
     <head>
-        <title><?php echo $seitenname;?></title>
+        <title><?php echo $system['seitenname'];?></title>
         <meta charset="UTF-8">
         <meta name="generator" content="vms-script">
         <meta name="Author" content="Designerscripte.net">
@@ -35,7 +27,7 @@ if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpo
         <div id="wrapper">
             <header id="header_1">
                 <div id="topbar">
-                    <?php if ($_SESSION['login'] != true) { ?>
+                    <?php if (!is_user()) { ?>
                         <div id="topbar_left">
                             <ul>
                                 <li><a href="?content=/intern/anmelden">Registrieren</a></li>
@@ -44,12 +36,12 @@ if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpo
                         </div>
                     <?php } ?>
                     <div id="topbar_right">
-                        <?php if($_SESSION['admin'] == 1){?>
+                        <?php if(is_admin()){?>
                             <ul>
-                                <li><a href="<?php echo $domain.'/adminforce/index.php'; ?>">Adminforce</a></li>
+                                <li><a href="<?php echo $system['domain'].'/adminforce/index.php'; ?>">Adminforce</a></li>
                                 <li>
                         <?php } ?>
-                        <?php if ($_SESSION['login'] != true) { ?>
+                        <?php if (!is_user()) { ?>
                             <form  method="post">
                                 <input type="Text" class ="topbar_input" name="nickname" value="<?php echo $_POST['nickname'];?>" placeholder="Username">
                                 <input type="Password" class ="topbar_input" name="passwort" value="" placeholder="Passwort">
@@ -57,7 +49,7 @@ if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpo
                                 <button type="submit" name="checkid" value="Login">Login</button>
                             </form>
                         <?php } ?>
-                        <?php if($_SESSION['admin'] == 1){?>
+                        <?php if(is_admin()){?>
                                 </li>
                             </ul>
                         <?php } ?>
@@ -66,14 +58,14 @@ if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpo
             </header>
             <header id="header_2">
                 <div id="logobar">
-                    <a href="<?php echo $domain;?>"><img src="images/logo.png" alt="<?php echo $seitenname;?>" id="logo"></a>
+                    <a href="<?php echo $system['domain'];?>"><img src="images/logo.png" alt="<?php echo $system['seitenname'];?>" id="logo"></a>
                     <div id="banner">
-                        <?php @require_once ('lib/texte/alt_headerbanner.txt');?>
+                        <?php require_once ('lib/texte/alt_headerbanner.txt');?>
                     </div>
                     <br style="clear:both; font-size:0px;">
                     <div id="topnav">
                         <ul>
-                            <li><a href="<?php echo $domain;?>">Startseite</a></li>
+                            <li><a href="<?php echo $system['domain'];?>">Startseite</a></li>
                             <li><a href="?content=/news">News</a></li>
                             <li><a href="?content=/intern/mediadaten">Mediadaten</a></li>
                             <li><a href="?content=/intern/agbs">AGB</a></li>
@@ -86,7 +78,7 @@ if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpo
             <br style="clear:both; font-size:0px;">
             <div id="content">
                 <div id="left">
-                    <?php @include_once('lib/menue_links.php');?>
+                    <?php include_once('lib/menue_links.php');?>
                 </div>
                 <div id="middle">
                     <?php require ('./content' . $_GET['content'] . '.php'); ?>
@@ -101,6 +93,4 @@ if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpo
     </body>
 </html>
 <?php
-db_close();
-if ($gzip_rate > 0) ob_end_flush();
-?>
+if ($system['gzip_rate'] > 0) ob_end_flush();
\ No newline at end of file
diff --git a/lib/.htaccess b/lib/.htaccess
new file mode 100644
index 0000000000000000000000000000000000000000..7d3aaf1a903f75446d2fddb418387ea875d8acf3
--- /dev/null
+++ b/lib/.htaccess
@@ -0,0 +1,2 @@
+Order allow,deny
+Deny from all
\ No newline at end of file
diff --git a/lib/changelog b/lib/changelog
new file mode 100644
index 0000000000000000000000000000000000000000..01b32ff4b6c98282b96001384d379b4109c602ab
--- /dev/null
+++ b/lib/changelog
@@ -0,0 +1,32 @@
+phpMyAdmin - ChangeLog
+======================
+
+3.0 (noch nicht veröffentlicht)
+- Anpassung mysql Datenbank file auf utf6
+- anlegen mysql migration files
+- Anpassung der include logic im lib ordner
+- umstellung des scripts auf PDO
+- anlegen der sql class
+- auslagern der konfigurations Variablen in eine config.ini
+- wer ist online config variablen in config.ini aufgenommen
+
+
+2.5.1 (2016-03-28)
+- Remove short tags (<?= and <? )
+- Remove copyrights LKTechnik
+- Remove lkt_ in filenames and path and mysql
+- extras.lib.php no $text variable
+- add .ressource ordner for future sql migrations and install scripts and alternate non WEB files.
+- remove ebesucher.php because ebesucher dont have an API
+- Change headerbanner ads to https and new URL
+- add config.inc.php.example as example for config.inc.php
+- remove personal variables from functions.php -> Git conflicts
+- remove adscan -> in future no external services per default.
+- einzahlen.php überarbeitet / design
+- auszahlen.php limitierung nicht beachtet überarbeitet / design
+- Adminforce Index css url path
+- Adminforce Index page korrektur
+- betreiber.php  angepasst und gekürzt
+- Rallysystem.php und Refschrleifen.php umbenannt
+- pclick.php und pcheck.php angepasst sodass diese funktionieren mit TAN
+- entferne split() und ereg()
\ No newline at end of file
diff --git a/lib/class/sql.class.php b/lib/class/sql.class.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc9e586c52447b925216eb2fe81ea13361fd24ad
--- /dev/null
+++ b/lib/class/sql.class.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * Example Query
+ *
+ * $q = sql::$db->prepare("SELECT id, name FROM `users` WHERE `username` = ?");
+ * $q -> execute( array( $_POST['username'] ) ); //Yes, you can use the raw userinput without sanitizing!
+ * while( $r = $q->fetch( 2 ) ){
+ *      echo $r['id'];
+ * }
+ *
+ */
+
+
+
+class sql
+{
+    public static $db = false;
+    private static $config;
+
+    private function connect() {
+
+        self::$config = parse_ini_file('lib/config.ini', true);
+        $dsn = self::$config['db_type'] . ":host=" . self::$config['db_host'] . ";dbname=" . self::$config['db_base'];
+        try {
+            self::$db = new PDO($dsn, self::$config['db_user'], self::$config['db_pass'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
+            self::$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+        } catch (PDOException $e) {
+            die('Verbindung zum Mysql Server fehlgeschlagen! <br>Tipp: <a href="http://www.vms-tutorial.de/wiki//Lib/Functions">http://www.vms-tutorial.de/wiki//Lib/Functions</a>');
+        }
+    }
+
+    public static function init(){
+        self::connect();
+        return;
+    }
+
+}
+
+// Init the SQL Class
+sql::init();
\ No newline at end of file
diff --git a/lib/config.inc.php.example b/lib/config.inc.php.example
deleted file mode 100644
index c1d97fb46c33d284d443845ce0194bb08bb6a922..0000000000000000000000000000000000000000
--- a/lib/config.inc.php.example
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-// VMSone 2.5.0 Von designerscripte
-header("Cache-control: no-cache");
-// Datenbankserver
-$db_host = "localhost";
-// Mysql User
-$db_user = "mysql-user";
-// Mysql PW
-$db_pass = "mysql-password";
-// Datenbank
-$db_base = "vmsone";
-// Tabellenpräfix (wichtig wenn mehrere VMS in einer DB liegen)
-$db_prefix = "vms";
-// Domain (ohne Slash am Ende)
-$domain = "http://designerscripte.net";
-// Seitenname
-$seitenname = "VMSOne 2.5.0 Demo";
-// Seitenwährung
-$waehrung = "Coins";
-// ID vom Admin
-$admin_id = 1;
-// Adminmail
-$betreibermail = "admin@localhost.com";
-// Passwort für Crons
-$cron_pw = "cronpw";
-// beliebiger Alphanumerischer String hilft beim Schutz vor Autoklickern
-$percode = '551c3d4318d668cc2b00d02b40d1e6cd282817c2be65d401ed0cff2e6b';
-// Komprimierung der Ausgabe zwischen 0 & 10 wobei 0 die Komprimierung der Ausgabe deaktiviert Empfohlener Wert: 1
-$gzip_rate = 0;
-/* Globale Variablen nichts ändern */
-$ip = $_SERVER['REMOTE_ADDR'];
diff --git a/lib/config.ini.example b/lib/config.ini.example
new file mode 100644
index 0000000000000000000000000000000000000000..f161c829a1222148c65d8193609b8452a20a02da
--- /dev/null
+++ b/lib/config.ini.example
@@ -0,0 +1,32 @@
+
+# Datenbankserver
+db_host = "localhost"
+# MDatabase Type
+db_type = "mysql"
+# Mysql User
+db_user = "mysql-user"
+# Mysql PW
+db_pass = "mysql-password"
+# Datenbank
+db_base = "vmsone"
+# Tabellenpräfix (wichtig wenn mehrere VMS in einer DB liegen)
+db_prefix = "vms"
+# Domain (ohne Slash am Ende)
+domain = "http:#designerscripte.net"
+# Seitenname
+seitenname = "VMSOne 3.0 Demo"
+# Seitenwährung
+waehrung = "Coins"
+# ID vom Admin
+admin_id = 1
+# Adminmail
+betreibermail = "admin@localhost.com"
+# Passwort für Crons
+cron_pw = "cronpw"
+# beliebiger Alphanumerischer String hilft beim Schutz vor Autoklickern
+percode = '551c3d4318d668cc2b00d02b40d1e6cd282817c2be65d401ed0cff2e6b'
+# Komprimierung der Ausgabe zwischen 0 & 10 wobei 0 die Komprimierung der Ausgabe deaktiviert Empfohlener Wert: 1
+gzip_rate = 0
+# Wer ist Online
+wer-ist-online_inaktive-zeit = 600
+wer-ist-online_nickpage-url = '/?content=/nickpage&amp;nick='
diff --git a/lib/extras.init.php b/lib/extras.init.php
index 52cc2732267001cdef2bcec3e7660878675a7246..4f64bbdcca53cd81eef2de1c9bc9ba08d403adff 100644
--- a/lib/extras.init.php
+++ b/lib/extras.init.php
@@ -1,7 +1,27 @@
 <?php
-// Datei: lib/extras.init.php
-// Datei um Funktionen aus der Extras-Erweiterung aufzurufen
-// Variablen absichern !
+header("Cache-control: no-cache");
+
+// Include benötigte class dateien
+set_include_path( 'lib/class/' );
+spl_autoload_extensions( '.class.php' );
+spl_autoload_register();
+
+// Load Global Config
+$system = parse_ini_file('config.ini', true);
+$system['ip'] = $_SERVER['REMOTE_ADDR'];
+define('_VMS_' , (ctype_alnum($system['db_prefix']) ? $system['db_prefix'] : 'vms'));
+
+if ($system['gzip_rate'] > 0) {
+    ini_set('zlib.output_compression_level', $system['gzip_rate']);
+    if (ereg("gzip", getenv("HTTP_ACCEPT_ENCODING"))) ob_start("ob_gzhandler");
+    else ob_start();
+}
+
+require_once ('functions.lib.php');
+require_once ('session.lib.php');
+require_once ('layout.lib.php');
+require_once ('extras.lib.php');
+
 $_GET = extra_securevars($_GET);
 $_POST = extra_securevars($_POST);
 $_SERVER = extra_securevars($_SERVER);
diff --git a/lib/extras.lib.php b/lib/extras.lib.php
index 8d95e83c701ad7bb15a9726aa1da5f1e17f0718e..ef6a5b845246a11210b97a639edcbeff244fbda0 100644
--- a/lib/extras.lib.php
+++ b/lib/extras.lib.php
@@ -29,8 +29,8 @@ function extra_phpversion () {
  * @return keine
  */
 function extra_cleantable ($table, $row) {
-  global $db_prefix;
-	return db_query ('DELETE x FROM '.$table.' AS x LEFT JOIN '.$db_prefix.'_kontodaten AS u ON (u.uid = x.'.$row.') WHERE u.uid IS NULL');
+  global $system;
+	return sql::$db->query ('DELETE `x` FROM `'.$table.'` AS `x` LEFT JOIN `'._VMS_.'_kontodaten` AS `u` ON (`u`.`uid` = `x`.`'.$row.'`) WHERE `u`.`uid` IS NULL');
 }
 
 
@@ -138,5 +138,3 @@ $Header .= "From: ".$von."\n";
 return mail($an, $betreff, $html_nachricht, $Header);
 }
 
-
-require (dirname (realpath (__FILE__)) . '/extras.init.php');
\ No newline at end of file
diff --git a/lib/functions.lib.php b/lib/functions.lib.php
index d51376368a342f2002478b42a72049fa0f96b963..eada90356dced78c5abaceeb94658243b4119a2a 100644
--- a/lib/functions.lib.php
+++ b/lib/functions.lib.php
@@ -1,66 +1,5 @@
 <?php
 
-/**
- * db_connect()
- *
- * @author designerscripte.net
- * @category system Database
- * @version 2.5.0
- * @example db_connect();
- * @return die('') bei Fehler ohne return bei erfolg.
- *
- */
-function db_connect() {
-    global $db_host, $db_user, $db_pass, $db_base, $sql_open;
-    $sql_open = @mysql_connect($db_host, $db_user, $db_pass) or die('Verbindung zum Mysql Server fehlgeschlagen! <br>Tipp: <a href="http://www.vms-tutorial.de/wiki//Lib/Functions">http://www.vms-tutorial.de/wiki//Lib/Functions</a>');
-    $sql_base = @mysql_select_db($db_base) or die("Keine oder falsche Datenbank gewählt! Tipp: <br><a href='http://www.vms-tutorial.de/wiki//Lib/Functions'>http://www.vms-tutorial.de/wiki//Lib/Functions</a>");
-}
-
-/**
- * db_connect()
- *
- * @author designerscripte.net
- * @category system Database
- * @version 2.5.0
- * @example db_query("SELECT `field` FROM `table` WHERE `field` = `value` ");
- * @param mixed $sql_tag
- * @return 0 bei Fehler Mysql_resource.
- *
- */
-function db_query($sql_tag) {
-    global $count_query;
-    $count_query++;
-    $fargs = func_get_args();
-
-    if (!empty($fargs)) {
-        $vargs = array();
-        foreach($fargs as $key => $arg) {
-            $vargs[$key] = mysql_real_escape_string($arg);
-        }
-        array_shift($vargs);
-        if (!empty($vargs))$sql_tag = vsprintf($sql_tag, $vargs);
-    }
-    if ($ret = mysql_query($sql_tag)) {
-        return $ret;
-    }else {
-        return 0;
-    }
-}
-
-/**
- * db_close()
- *
- * @author designerscripte.net
- * @category system Database
- * @version 2.5.0
- * @example db_close();
- * @return die(''); bei fehler nichts bei erfolg
- */
-function db_close() {
-    global $sql_open;
-    @mysql_close($sql_open) or die('Konnte die Verbindung mit Datenbank nicht schliessen!');
-}
-
 /**
  * create_code()
  *
@@ -96,8 +35,9 @@ function create_code($code_laenge) {
  * @return keine
  */
 function buchungsliste ($buchungs_id, $trans_menge, $verwendung, $fuer) {
-    global $db_prefix;
-    db_query("INSERT INTO " . $db_prefix . "_buchungen (uid,buchungszeit,buchungs_id,buchungsmenge,verwendungszweck) VALUES (" . $fuer . "," . time() . ",'" . $buchungs_id . "','" . $trans_menge . "','" . $verwendung . "')");
+    $sql = sql::$db->prepare ("INSERT INTO `" . _VMS_ . "_buchungen` (`uid`,`buchungszeit`,`buchungs_id`,`buchungsmenge`,`verwendungszweck`) VALUES (?,?,?,?,?)");
+    $sql ->execute( array( $fuer, time(), $buchungs_id, $trans_menge, $verwendung));
+    return $sql;
 }
 
 /**
@@ -113,8 +53,10 @@ function buchungsliste ($buchungs_id, $trans_menge, $verwendung, $fuer) {
  * @return keine
  */
 function kontobuchung ($art, $trans_menge, $fuer) {
-    global $db_prefix;
-    db_query("UPDATE " . $db_prefix . "_kontodaten SET `kontostand` = `kontostand` " . $art . " " . $trans_menge . " WHERE uid=" . $fuer . "");
+    if('+' !== $art) $art = '-';
+    $sql = sql::$db->prepare ("UPDATE `" . _VMS_ . "_kontodaten` SET `kontostand` = `kontostand` " . $art . " ?  WHERE `uid` = ? ");
+    $sql ->execute( array( $trans_menge, $fuer));
+    return $sql;
 }
 
 /**
@@ -127,21 +69,21 @@ function kontobuchung ($art, $trans_menge, $fuer) {
  * @return Leitet bei keinem zugriff auf die entsprechenden fehlerseiten weiter
  */
 function userstatus () {
-    global $_SESSION, $db_prefix;
+    global $_SESSION, $system;
     if ($_SESSION['login'] == 'true') {
-        $us = db_query("SELECT `uid`,`passwort`,`status`,`hinweis` FROM " . $db_prefix . "_kontodaten WHERE uid=" . $_SESSION['uid'] . " and passwort='" . $_SESSION['passwort'] . "' LIMIT 1");
-        $login_check = mysql_fetch_array($us);
+        $sql = sql::$db->prepare ("SELECT `uid`,`passwort`,`status`,`hinweis` FROM `" . _VMS_ . "_kontodaten` WHERE `uid` = ? AND `passwort` = ? LIMIT 1");
+        $sql -> execute (array($_SESSION['uid'], $_SESSION['passwort']));
+        $login_check = $sql -> fetch();
         // nicht aktiviert oder nicht angemeldet!
-        if (!mysql_num_rows($us) or $login_check['status'] == 0) {
+        if (!$sql -> rowCount() or $login_check['status'] == 0) {
             setCookie('uid', '', time() - 86400 * 30);
             setCookie('passwort', '', time() - 86400 * 30);
             setCookie('autologin', '', time() - 86400 * 30);
             $_SESSION['uid'] = "";
             $_SESSION['passwort'] = "";
             $_SESSION['login'] = "";
-            @include_once('content/error/kein_zutritt.php');
-            @include_once('lib/footer.php');
-            die();
+            header ("location: " . $system['domain'] . '/content/error/kein_zutritt');
+            die('foo');
         }
         // gesperrt
         if ($login_check['status'] == 2) {
@@ -151,15 +93,16 @@ function userstatus () {
             $_SESSION['uid'] = "";
             $_SESSION['passwort'] = "";
             $_SESSION['login'] = "";
-            @include_once('content/error/user_gesperrt.php');
-            @include_once('lib/footer.php');
+            include_once('content/error/user_gesperrt.php');
+            include_once('lib/footer.php');
             die();
         }
     }else {
-        @include_once('content/error/kein_zutritt.php');
-        @include_once('lib/footer.php');
+        include_once('content/error/kein_zutritt.php');
+        include_once('lib/footer.php');
         die();
     }
+    return true;
 }
 
 /**
@@ -174,8 +117,9 @@ function userstatus () {
  * @return keine
  */
 function refumsatz ($buchungssumme, $fuer) {
-    global $db_prefix;
-    db_query ('UPDATE ' . $db_prefix . '_werberdaten SET umsatz = umsatz + ' . $buchungssumme . ', aktivzeit=' . time() . ' WHERE uid = ' . $fuer . ' and werber != 0');
+    $sql = sql::$db->prepare ('UPDATE `' . _VMS_ . '_werberdaten` SET `umsatz` = `umsatz` + ?, `aktivzeit` = ? WHERE `uid` = ? and `werber` != 0');
+    $sql ->execute( array( $buchungssumme, time(), $fuer));
+    return $sql;
 }
 
 /**
@@ -192,20 +136,21 @@ function refumsatz ($buchungssumme, $fuer) {
  */
 function rallysystem ($uid,$was,$anzahl) {
     global $time;
-    db_query("UPDATE vms_kontodaten SET eintap = eintap + ".$anzahl."/100 WHERE uid= ".$uid." LIMIT 1");
-    $rallyorte=mysql_fetch_array(db_query("SELECT welche_rallys FROM vms_rallyorte WHERE id = '".$was."' LIMIT 1"));
-    $rally = db_query("SELECT * FROM `vms_rallydaten` WHERE `id` IN (".$rallyorte['welche_rallys'].") AND `status` = 'aktive' AND `start` <= UNIX_TIMESTAMP() AND ((`ende_art` = 'zeit' AND `ende_zeit` > UNIX_TIMESTAMP()) OR (`ende_art` = 'punkt' AND `ende_punkte` > `ende_punkte_aktuell`)) ");
-    while($rallys = mysql_fetch_array($rally)){
+    $anzahl = round($anzahl/100);
+    //sql::$db->prepare ("UPDATE `vms_kontodaten` SET `eintap` = `eintap` + ? WHERE `uid` = ? LIMIT 1") -> execute(array($anzahl,$uid));
+    $sql = sql::$db->prepare ("SELECT * FROM `vms_rallydaten` WHERE `id` IN (( SELECT `welche_rallys` FROM `vms_rallyorte` WHERE `id` = ? LIMIT 1 )) AND `status` = 'aktive' AND `start` <= UNIX_TIMESTAMP() AND ((`ende_art` = 'zeit' AND `ende_zeit` > UNIX_TIMESTAMP()) OR (`ende_art` = 'punkt' AND `ende_punkte` > `ende_punkte_aktuell`)) ");
+    $sql->execute(array($was));
+    while($rallys = $sql->fetch()){
         $gesperrt = explode(',',$rallys['sperruser']);
         if (!in_array($uid, $gesperrt)) {
             $anzahl2 = $anzahl.$rallys['ende_punkte_anzahl'];
             eval("\$anzahl2 = $anzahl2;");
             $steigerung = $anzahl.$rallys['gewinn_dyn_steigerung'];
             eval("\$steigerung = $steigerung;");
-            if ($rallys['gewinn_art'] == 'dynamisch') db_query ("UPDATE vms_rallydaten SET gewinn_topf=gewinn_topf+'".$steigerung."' WHERE id = '".$rallys['id']."' LIMIT 1");
-            if ($rallys['ende_art'] == 'punkt') db_query ("UPDATE vms_rallydaten SET ende_punkte_aktuell = ende_punkte_aktuell + '".$anzahl2."' WHERE id = ".$rallys['id']." LIMIT 1");
-            db_query ("UPDATE vms_rallyuser SET punkte = punkte + '".$anzahl2."' WHERE uid = '".$_SESSION['uid']."' AND rally = '".$rallys['name']."' AND ausgezahlt < '1'");
-            if (mysql_affected_rows () == 0) db_query ("INSERT INTO vms_rallyuser (rally,uid,punkte) VALUES ('".$rallys['name']."','".$uid."','".$anzahl2."')");
+            if ($rallys['gewinn_art'] == 'dynamisch') sql::$db->prepare ("UPDATE `vms_rallydaten` SET `gewinn_topf` = `gewinn_topf` + ? WHERE `id` = ? LIMIT 1")-> execute(array($steigerung,$rallys['id']));
+            if ($rallys['ende_art'] == 'punkt') sql::$db->prepare ("UPDATE `vms_rallydaten` SET `ende_punkte_aktuell` = `ende_punkte_aktuell` + ? WHERE `id` = ? LIMIT 1")-> execute(array($anzahl2,$rallys['id']));
+            $sqlu = sql::$db->prepare ("UPDATE `vms_rallyuser` SET `punkte` = `punkte` + ? WHERE `uid` = ? AND `rally` = ? AND `ausgezahlt` < '1'")-> execute(array($anzahl2,$_SESSION['uid'],$rallys['name']));
+            if (0 == $sqlu -> rowCount()) sql::$db->prepare ("INSERT INTO `vms_rallyuser` (`rally`,`uid`,`punkte`) VALUES (?, ?, ?)")-> execute(array($rallys['name'], $uid, $anzahl2));
         }
     }
 }
@@ -222,20 +167,48 @@ function rallysystem ($uid,$was,$anzahl) {
  * @return keine
  */
 function bilanz ($ein, $aus) {
-    global $db_prefix;
     $ein = round($ein, 2);
     $aus = round($aus, 2);
     $date_stamp = mktime(0, 0, 0, date(m), date(d), date(Y));
-    mysql_query('UPDATE ' . $db_prefix . '_bilanz SET ein=ein+"' . $ein . '", aus=aus+"' . $aus . '" WHERE date=' . $date_stamp . ' LIMIT 1');
-    if (mysql_affected_rows() == 0) db_query('INSERT INTO ' . $db_prefix . '_bilanz (ein,aus,date) VALUES ("' . $ein . '","' . $aus . '",' . $date_stamp . ')');
+    $sql = sql::$db->prepare ('UPDATE `' . _VMS_ . '_bilanz` SET `ein` = `ein` + ? , `aus` = `aus` + ? WHERE `date` = ? LIMIT 1');
+    $sql -> execute( array( $ein, $aus, $date_stamp));
+    if (0 == $sql ->rowCount()) $sql = sql::$db->query ('INSERT INTO `' . _VMS_ . '_bilanz` (`ein`, `aus`, `date`) VALUES ( ?, ?, ?)') ->execute( array( $ein, $aus, $date_stamp));
+    return $sql;
+}
+
+/**
+ * is_admin()
+ *
+ * @author designerscripte.net
+ * @category system
+ * @version 2.5.0
+ * @example is_admin();
+ * @return returnt true oder false je nach adminstatus
+ */
+function is_admin () {
+    global $_SESSION;
+    if (isset($_SESSION['admin']) AND $_SESSION['admin'] == 1) {
+        return true;
+    }
+    return false;
 }
 
+/**
+ * is_user()
+ *
+ * @author designerscripte.net
+ * @category system
+ * @version 2.5.0
+ * @example is_user();
+ * @return returnt true oder false je nach login status
+ */
+function is_user () {
+    global $_SESSION;
+    if (isset($_SESSION['login']) AND $_SESSION['login'] == 'true') {
+        return true;
+    }else{
+        return false;
+    }
 
-// GZip
-if ($gzip_rate > 0) {
-    ini_set('zlib.output_compression_level', $gzip_rate);
-    if (ereg("gzip", getenv("HTTP_ACCEPT_ENCODING"))) ob_start("ob_gzhandler");
-    else ob_start();
 }
 
-?>
\ No newline at end of file
diff --git a/lib/menue_links.php b/lib/menue_links.php
index 31b58df5bf4c1741cb84515dbc3b5b6b47be6678..8667b63e32790e6220cdce768ed05a243d42129e 100644
--- a/lib/menue_links.php
+++ b/lib/menue_links.php
@@ -23,9 +23,9 @@ if ($_SESSION['login'] == 'true') {
 
 menuehead('Rallysystem');
 echo '<dl>';
-$ralleydaten = db_query("SELECT status, start, ende_art, ende_zeit, ende_punkte, ende_punkte_aktuell, name FROM vms_rallydaten");
+$sql = sql::$db->query ("SELECT `status`, `start`, `ende_art`, `ende_zeit`, `ende_punkte`, `ende_punkte_aktuell`, `name` FROM `vms_rallydaten`");
 $times = time();
-while ($data = mysql_fetch_assoc($ralleydaten)) {
+while ($data = $sql -> fetch()) {
     echo'<dt> <a href="?content=/rallysystem&amp;rally=' . $data['name'] . '"><i>';
     if ($data['status'] == 'aktive' && $data['start'] <= $times && (($data['ende_art'] == 'zeit' && $data['ende_zeit'] > $times) OR ($data['ende_art'] == 'punkt' && $data['ende_punkte_aktuell'] < $data['ende_punkte']))) {
         echo'<span style="color:#1DA801;">';
diff --git a/lib/session.lib.php b/lib/session.lib.php
index bf4da75b652b407579408deb4d14bd40b1391dcb..6d1a51d27be9289cc93caacb51668d39041ec980 100644
--- a/lib/session.lib.php
+++ b/lib/session.lib.php
@@ -16,30 +16,29 @@ if (!isset($_GET['logout'])) $_GET['logout'] = "";
 if (!isset($_GET['ref'])) $_GET['ref'] = "0";
 
 if ($_SESSION['werber'] == "0") $_SESSION['werber'] = (int)$_GET['ref'];
+
 // Seiteneinstellungen laden...
-$pageconfig = mysql_fetch_array(db_query("SELECT * FROM " . $db_prefix . "_seitenkonfig LIMIT 1"));
+$pageconfig = sql::$db->prepare ("SELECT * FROM `" . _VMS_ . "_seitenkonfig` LIMIT 1")->fetch();
 
-if ($pageconfig['wartung'] == 1 && $_SESSION['uid'] != $admin_id) {
+if ($pageconfig['wartung'] == 1 && $_SESSION['uid'] != $system['admin_id']) {
     setCookie('uid', '', time() - 86400 * 30);
     setCookie('passwort', '', time() - 86400 * 30);
     setCookie('autologin', '', time() - 86400 * 30);
     $_SESSION['uid'] = "";
     $_SESSION['passwort'] = "";
     $_SESSION['login'] = "";
-    header ("location: " . $domain . "/wartung.php");
+    header ("location: " . $system['domain'] . "/wartung.php");
     die();
 }
+
 // Login
 if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {
     $_POST['nickname'] = addslashes($_POST['nickname']);
 
-    $login_check = db_query("SELECT k.uid,k.passwort,k.status,k.hinweis
-                                FROM " . $db_prefix . "_userdaten u
-                                LEFT JOIN " . $db_prefix . "_kontodaten k ON k.uid=u.uid
-                                WHERE u.nickname='" . $_POST['nickname'] . "' AND k.passwort='" . md5($_POST['passwort']) . "' LIMIT 1");
-
-    if (mysql_num_rows($login_check)) {
-        $login_check = mysql_fetch_array($login_check);
+    $sql = sql::$db->prepare ("SELECT `k`.`uid`, `k`.`passwort`, `k`.`status`, `k`.`hinweis` FROM `" . _VMS_ . "_userdaten` AS  `u` LEFT JOIN `" . _VMS_ . "_kontodaten`  AS `k` ON `k`.`uid` = `u`.`uid` WHERE `u`.`nickname` = ? AND `k`.`passwort` = ? LIMIT 1");
+    $sql -> execute(array($_POST['nickname'], md5($_POST['passwort'])));
+    if ($sql -> rowCount()) {
+        $login_check = $sql -> fetch();
         // Wenn User noch nicht freigeschaltet!
         if ($login_check['status'] == 0) {
             $_SESSION['uid'] = "";
@@ -48,8 +47,10 @@ if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {
             $_GET['content'] = '/error/kein_zutritt';
         }
         // Wenn beim User alles O.K. ist!
+        var_dump($login_check);
         if ($login_check['status'] == 1) {
-            db_query("UPDATE " . $db_prefix . "_kontodaten SET login_ip='" . $ip . "' , loginzeit='" . time() . "' WHERE uid=" . $login_check['uid'] . " and passwort='" . md5($_POST['passwort']) . "' LIMIT 1");
+            sql::$db->prepare ("UPDATE `" . _VMS_ . "_kontodaten` SET `login_ip` = ? , `loginzeit` = ? WHERE `uid` = ? and `passwort` = ? LIMIT 1")
+                -> execute( array( $system['ip'], time(), $login_check['uid'], md5($_POST['passwort'])));
             if ($_POST['autologin'] == 'true') {
                 setCookie('uid', $login_check['uid'], time() + 86400 * 30);
                 setCookie('passwort', $login_check['passwort'], time() + 86400 * 30);
@@ -58,7 +59,7 @@ if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {
             $_SESSION['uid'] = $login_check['uid'];
             $_SESSION['passwort'] = $login_check['passwort'];
             $_SESSION['login'] = "true";
-            header ("location: " . $domain);
+            header ("location: " . $system['domain']);
             die();
         }
         // Wenn User gesperrt wurde!
@@ -75,22 +76,26 @@ if ($_POST['checkid'] == 'Login' && $_POST['nickname'] && $_POST['passwort']) {
 } else {
     if ($_POST['checkid'] == 'Login') $_GET['content'] = '/error/kein_zutritt';
 }
+
 // Autologin
 if ($_SESSION['login'] != 'true' && isset($_COOKIE['autologin']) && isset($_COOKIE['uid']) && isset($_COOKIE['passwort'])) {
     $_COOKIE['uid'] = (int)$_COOKIE['uid'];
     $_COOKIE['passwort'] = addslashes ($_COOKIE['passwort']);
 
-    $login_check = db_query("SELECT `uid`,`passwort`,`status`,`hinweis` FROM " . $db_prefix . "_kontodaten WHERE uid=" . $_COOKIE['uid'] . " and passwort='" . $_COOKIE['passwort'] . "' LIMIT 1");
-    if (mysql_num_rows($login_check)) {
-        $login_check = mysql_fetch_array($login_check);
+    $sql = sql::$db->prepare ("SELECT `uid`,`passwort`,`status`,`hinweis` FROM `" . _VMS_ . "_kontodaten` WHERE `uid` = ? and `passwort` = ? LIMIT 1");
+    $sql -> execute( array( $_COOKIE['uid'], $_COOKIE['passwort']));
+    if ($sql -> rowCount()) {
+        $login_check = $sql -> fetch();
         if ($login_check['status'] == 1) {
-            db_query("UPDATE " . $db_prefix . "_kontodaten SET login_ip='" . $ip . "' , loginzeit='" . time() . "' WHERE uid=" . $_COOKIE['uid'] . " and passwort='" . $_COOKIE['passwort'] . "' LIMIT 1");
+            sql::$db->prepare ("UPDATE `" . _VMS_ . "_kontodaten` SET `login_ip` = ? , `loginzeit` = ? WHERE `uid` = ? and `passwort` = ? LIMIT 1")
+                -> execute( array( $system['ip'], time(), $login_check['uid'], md5($_COOKIE['passwort'])));
             $_SESSION['uid'] = $login_check['uid'];
             $_SESSION['passwort'] = $login_check['passwort'];
             $_SESSION['login'] = "true";
         }
     }
 }
+
 // Logout
 if ($_GET['logout'] == 'true') {
     setCookie('uid', '', time() - 86400 * 30);
@@ -99,11 +104,12 @@ if ($_GET['logout'] == 'true') {
     $_SESSION['uid'] = "";
     $_SESSION['passwort'] = "";
     $_SESSION['login'] = "";
-    header ("location: " . $domain);
+    header ("location: " . $system['domain']);
     die();
 }
 if (isset ($_SESSION['uid']) && isset ($_SESSION['passwort']) && !empty ($_SESSION['uid']) && !empty ($_SESSION['passwort'])) {
-    db_query ("UPDATE " . $db_prefix . "_kontodaten SET last_active = " . time() . " WHERE uid = " . $_SESSION['uid'] . " AND passwort = '" . $_SESSION['passwort'] . "' LIMIT 1");
+    sql::$db->prepare ("UPDATE `" . _VMS_ . "_kontodaten` SET `last_active` = ? WHERE `uid` = ? AND `passwort` = ? LIMIT 1")
+        -> execute( array( time(), $_SESSION['uid'], $_SESSION['passwort']));
 }
 
 ?>
\ No newline at end of file
diff --git a/lib/texte/bettelwerbung.txt b/lib/texte/bettelwerbung.txt
index c1bfaf3bd9ffa6d0f163abc80a85c83f11f6d327..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/lib/texte/bettelwerbung.txt
+++ b/lib/texte/bettelwerbung.txt
@@ -1 +0,0 @@
-<a href="http://kingbonus.de/?refid=2&subid=vmsBettel"><img src="http://kingbonus.de/banner/500x400_1.gif" alt=""></a>
\ No newline at end of file
diff --git a/lib/texte/startwerbung.txt b/lib/texte/startwerbung.txt
index a579d79f2994827ec98c36c0c1344887b3727362..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/lib/texte/startwerbung.txt
+++ b/lib/texte/startwerbung.txt
@@ -1,4 +0,0 @@
-<script src="http://www.fuco-ads.de/lose/zbanner.php?id=54&aid=89&size=468x60&only="></script>
-
-<IFRAME SRC="http://www.promotion4banner.de/cgi/p4b.cgi?dimplex" MARGINWIDTH="0" MARGINHEIGHT="0" HSPACE="0" SCROLLING="no" VSPACE="0" FRAMEBORDER="0" WIDTH="468" HEIGHT="60"></IFRAME>
-<!-- ENDE - (c) Promotion4Banner.de - HTML-Code -->
\ No newline at end of file
diff --git a/lib/weristonline.php b/lib/weristonline.php
index bc4ecced4d4ee31071b31838ad13ff34cf87693e..ba0ab755bdcdf503b5a6edd80f28c1085a7190cc 100644
--- a/lib/weristonline.php
+++ b/lib/weristonline.php
@@ -1,20 +1,18 @@
 <?php
-$zeit = (5 * 60); // Sekunden seit der letzten Aktivität
-$np = $domain . '/?content=/nickpage&amp;nick='; // Nickpagelink
-
 // verhindern, dass die Datei direkt aufgerufen wird
-if (!function_exists ("db_query")) die ("Kein Direktaufruf");
+if (!isset($system)) die ("Kein Direktaufruf");
 
-$sql = db_query ('SELECT k.uid, u.nickname FROM ' . $db_prefix . '_kontodaten k LEFT JOIN ' . $db_prefix . '_userdaten u ON u.uid = k.uid WHERE k.last_active >= ' . (time() - $zeit));
+$sql = sql::$db->prepare ("SELECT `k`.`uid`, `u`.`nickname` FROM `" . _VMS_ . "_kontodaten` AS `k` LEFT JOIN `" . _VMS_ . "_userdaten` AS `u` ON `u`.`uid` = `k`.`uid` WHERE `k`.`last_active` >= ? ");
+$sql ->execute(array(time() - $system['wer-ist-online_inaktive-zeit']));
 
-if (mysql_num_rows ($sql) == 0) echo '<span style="font-style: italic;">keiner</span>';
+if (0 == $sql -> rowCount()) echo '<span style="font-style: italic;">keiner</span>';
 else {
     $nr = 1;
-    while ($user = mysql_fetch_assoc ($sql)) {
-        if ($user['uid'] == $admin_id) echo '<a style="font-weight: bold;" href="' . $np . $user['nickname'] . '">' . $user['nickname'] . '</a>';
-        else echo '<a href="' . $np . $user['nickname'] . '">' . $user['nickname'] . '</a>';
+    while ($user = $sql->fetch()) {
+        if ($user['uid'] == $system['admin_id']) echo '<a style="font-weight: bold;" href="' . $system['domain'].$system['wer-ist-online_nickpage-url'] . $user['nickname'] . '">' . $user['nickname'] . '</a>';
+        else echo '<a href="' . $system['domain'].$system['wer-ist-online_nickpage-url'] . $user['nickname'] . '">' . $user['nickname'] . '</a>';
 
-        if ($nr < mysql_num_rows ($sql)) echo ', ';
+        if ($nr < $sql -> rowCount()) echo ', ';
         $nr++;
     }
 }
diff --git a/pcheck.php b/pcheck.php
deleted file mode 100644
index f5b826de7ea482a16837f80e77280b338db9cd9c..0000000000000000000000000000000000000000
--- a/pcheck.php
+++ /dev/null
@@ -1,66 +0,0 @@
-<?php
-require_once ('lib/config.inc.php');
-require_once ('lib/functions.lib.php');
-
-//Variablen vordefinieren
-if (!isset($headmsg))		       $headmsg			= "";
-if (!isset($wait))		       $wait			= "";
-if (!isset($_GET['auszahlen']))	       $_GET['auszahlen']	= "false";
-
-//Tan / UID Sichern
-$_GET['uid'] = (int)$_GET['uid'];
-$_GET['tan'] = addslashes ($_GET['tan']);
-
-//DB Verbindung herstellen
-db_connect();
-
-$user_mail =  db_query("SELECT e.start,e.aufendhalt,e.status,e.uid,v.verdienst FROM ".$db_prefix."_paidmails_empfaenger e
-                                                                              LEFT JOIN ".$db_prefix."_paidmails_versendet v ON v.tan = e.tan
-                                                                              WHERE e.tan='".$_GET['tan']."' AND e.uid=".$_GET['uid']." AND e.gueltig > ".time()." LIMIT 1");
-
-$mail =  mysql_fetch_assoc($user_mail);
-
-if ($_GET['auszahlen']!='true') {
-	if (mysql_num_rows($user_mail)) {
-		if ($mail['status'] != 0) {
-    		if ($mail['status'] == 1) $headmsg = 'Mail schon bestädigt!';
-    		if ($mail['status'] == 2) $headmsg = 'Fakeversuch!';
-		} else {
-    		$headmsg = 'Bitte warte '.$mail['aufendhalt'].' Sek.!';
-    		$wait = '<meta http-equiv="refresh" content="'.$mail['aufendhalt'].';url=pcheck.php?tan='.$_GET['tan'].'&auszahlen=true&uid='.$_GET['uid'].'">';
-    		db_query("UPDATE ".$db_prefix."_paidmails_empfaenger SET start=".time()." WHERE tan='".$_GET['tan']."' and uid=".$_GET['uid']."");
-		}
-	} else  $headmsg = 'Diese Mail ist nicht für Dich!';
-}else{
-	if (($mail['start']+$mail['aufendhalt']-1) <= time() AND $mail['status'] == 0) {
-    	kontobuchung ('+',$mail['verdienst'],$mail['uid']);
-    	buchungsliste (create_code(14),$mail['verdienst'],'Paidmailverdienst',$mail['uid']);
-    	refumsatz ($mail['verdienst'],$mail['uid']);
-    	rallysystem ($mail['uid'],'2',$mail['verdienst']);
-        bilanz(0,$mail['verdienst']);
-    	db_query("UPDATE ".$db_prefix."_paidmails_empfaenger SET status=1 WHERE tan='".$_GET['tan']."' and uid=".$_GET['uid']." LIMIT 1");
-    	db_query("UPDATE ".$db_prefix."_paidmails_versendet SET bestaedigt=bestaedigt+1 WHERE tan='".$_GET['tan']."'  LIMIT 1");
-    	$headmsg = $mail['verdienst'].' '.$waehrung.' gutgeschrieben!';
-	} else {
-        $headmsg = 'Wartezeit umgangen! Paidmail ungültig!';
-        db_query("UPDATE ".$db_prefix."_paidmails_empfaenger SET status=2 WHERE tan='".$_GET['tan']."' and uid=".$_GET['uid']." LIMIT 1");
-	}
-}
-
-echo '
-<!DOCTYPE>
-<html>
-    <head>';
-        if ($wait) echo $wait;
-        echo '<link rel="stylesheet" href="/css/bframe.css" type="text/css">
-    </head>
-    <body bgcolor="#c0c0c0" topmargin="0" leftmargin="0">
-        <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left">
-            <tr>
-            <td align="left" width="50%"><b>'.$seitenname.' ist für den Inhalt nicht verantwortlich.</b></td>
-            <td align="right" width="50%"><b>'.$headmsg.'</b>&nbsp;&nbsp;&nbsp;&nbsp;</td>
-            </tr>
-        </table>
-    </body>
-</html>';
-db_close();
\ No newline at end of file
diff --git a/pclick.php b/pclick.php
deleted file mode 100644
index 9bffb46a4e18ee7fd6d924210adf406531b5e51c..0000000000000000000000000000000000000000
--- a/pclick.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-require_once ('lib/config.inc.php');
-require_once ('lib/functions.lib.php');
-db_connect();
-
-$_GET['uid'] = (int)$_GET['uid'];
-$_GET['tan'] = addslashes ($_GET['tan']);
-
-$mail = mysql_fetch_assoc(db_query("SELECT `ziel` FROM ".$db_prefix."_paidmails_versendet WHERE tan='".$_GET['tan']."' LIMIT 1"));
-echo '
-<!DOCTYPE>
-<html>
-    <head>
-        <meta charset="UTF-8">
-        <title>Paidmail by '.$seitenname.'</title>
-    </head>
-        <frameset rows="30,*" border="0">
-            <frame name="abuse" src="pcheck.php?tan='.$_GET['tan'].'&uid='.$_GET['uid'].'" scrolling="no" frameborder="0">
-            <frame name="werbung" src="'.$mail['ziel'].'" scrolling="auto" frameborder="0">
-        </frameset>
-</html>';
-
-db_close();
\ No newline at end of file
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..f97f1f3fdce9ccbc5f39841cf5a0f8d661e68808
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,44 @@
+VMSone 
+======
+### Virtual Monetary System one
+
+Dies ist ein einfaches Log-in-Script mit Währungsverwaltung, Log-in-Verwaltung, Admin-Bereich und der Möglichkeit einer Anbindung an eine externe Seite.
+
+#### Inhalt
+
+1. [Anforderungen](#Anforderungen)
+1. [Installation](#Installation)
+1. [Support](#Support)
+1. [Lizenzbedingungen](#Lizenzbedingungen)
+
+
+## Anforderungen
+
+Um das Script zu nutzen, benötigen Sie:
+
+* PHP 5.2 - 5.6 mit mysql, curl sowie bcmath und diverse Standard Plugins
+* Mysql Version 5.4/5.5/5.6 (andere Versionen ungetestet)
+* allow_url_fopen auf TRUE (cronjob für sponsoren)_
+* Ein FTP / SFTP / etc Programm zum Upload der Scriptfiles
+
+
+## Installation
+
+1. Entpacken der Files.
+2. Upload der Files in das web Verzeichnis
+3. Anlegen einer Datenbank und Einspielung der .ressource/mysql/init.sql 
+(Die Migrations sind bereits darin enthalten und müssen NICHT eingespielt werden.)
+4. Kopieren der lib/config.inc.php.example zu lib/config.inc.php
+5. lib/config.inc.php anpassen mit den notwendigen Daten. 
+6. Ordner lib/texte braucht Schreibrechte für den www-User 
+
+
+## Support
+
+Sämtliche Supportanfragen und Weiterentwicklungen laufen via Community auf [Designerscripte](http://www.designerscripte.net/)
+
+
+## Lizenzbedingungen
+
+Die Nutzungsbedingungen sind zu finden unter 
+[http://www.designerscripte.net/index.php?pageid=nutzungsbedingungen](http://www.designerscripte.net/index.php?pageid=nutzungsbedingungen)
\ No newline at end of file
diff --git a/top_forced.php b/top_forced.php
new file mode 100644
index 0000000000000000000000000000000000000000..2f3b67de1b5f73cb4ceb899bca9ec87f90c1f5ad
--- /dev/null
+++ b/top_forced.php
@@ -0,0 +1,20 @@
+<?php
+require_once('lib/extras.init.php');
+if (!isset($_GET['art']))		$_GET['art']		= "";
+if (!isset($forced['tan']))		$forced['tan']		= "";
+if (!isset($forced['ziel']))	$forced['ziel']		= "";
+
+$sql = sql::$db->prepare ("SELECT `ziel`, `tan` FROM `"._VMS_."_gebuchte_werbung` WHERE `tan` = ? LIMIT 1");
+$sql -> execute(array($_GET['tan']));
+$forced = $sql -> fetch();
+
+echo '<!DOCTYPE>
+<html>
+<head>
+	<title>Forcedklick by '.$system['seitenname'].'</title>
+</head>
+<frameset rows="30,*" border="0">
+<frame src="topframe_forced.php?tan='.$forced['tan'].'" scrolling="no" frameborder="0">
+<frame src="'.$forced['ziel'].'" scrolling="auto" frameborder="0">
+</frameset>
+</html>';
diff --git a/top_forcedbanner.php b/top_forcedbanner.php
deleted file mode 100644
index 25db1932fe2addbfbd0477c5c6fd2a62edc81da1..0000000000000000000000000000000000000000
--- a/top_forcedbanner.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-require_once ('lib/config.inc.php');
-require_once ('lib/functions.lib.php');
-db_connect();
-require_once ('lib/session.lib.php');
-if (!isset($_GET['art']))		$_GET['art']		= "";
-if (!isset($forced['tan']))		$forced['tan']		= "";
-if (!isset($forced['ziel']))	        $forced['ziel']		= "";
-
-//Tan absichern
-$_GET['tan'] = addslashes ($_GET['tan']);
-
-$forced = mysql_fetch_assoc(db_query("SELECT ziel,tan FROM ".$db_prefix."_gebuchte_werbung WHERE tan='".$_GET['tan']."' LIMIT 1"));
-
-echo '<!DOCTYPE>
-<html>
-<head>
-	<title>Forcedklick by '.$seitenname.'</title>
-</head>
-<frameset rows="30,*" border="0">
-<frame src="topframe_forced.php?tan='.$forced['tan'].'" scrolling="no" frameborder="0">
-<frame src="'.$forced['ziel'].'" scrolling="auto" frameborder="0">
-</frameset>
-</html>';
-db_close();
\ No newline at end of file
diff --git a/top_paidmail.php b/top_paidmail.php
new file mode 100644
index 0000000000000000000000000000000000000000..a5032875fd0163de6eba36ed186b514143093909
--- /dev/null
+++ b/top_paidmail.php
@@ -0,0 +1,24 @@
+<?php
+require_once('lib/extras.init.php');
+if (!isset($_GET['uid']))		$_GET['uid']		= "";
+if (!isset($_GET['tan']))		$_GET['tan']		= "";
+
+$_GET['uid'] = (int)$_GET['uid'];
+
+$sql = sql::$db->prepare ("SELECT `ziel`, `tan` FROM `"._VMS_."_paidmails_versendet` WHERE `tan` = ? LIMIT 1");
+$sql -> execute(array($_GET['tan']));
+$mail = $sql -> fetch();
+
+echo '
+<!DOCTYPE>
+<html>
+    <head>
+        <meta charset="UTF-8">
+        <title>Paidmail by '.$system['seitenname'].'</title>
+    </head>
+        <frameset rows="30,*" border="0">
+            <frame name="abuse" src="topframe_paidmail.php?tan='.$mail['tan'].'&uid='.$_GET['uid'].'" scrolling="no" frameborder="0">
+            <frame name="werbung" src="'.$mail['ziel'].'" scrolling="auto" frameborder="0">
+        </frameset>
+</html>';
+
diff --git a/topframe_forced.php b/topframe_forced.php
index 67d977dcd08fe10deb03807e6cd91f3a2937d5a4..498fc6a2472265dac1755e70cdc969c70bea046a 100644
--- a/topframe_forced.php
+++ b/topframe_forced.php
@@ -1,7 +1,6 @@
 <?php
-require_once ('lib/config.inc.php');
-require_once ('lib/functions.lib.php');
-require_once ('lib/session.lib.php');
+require_once('lib/extras.init.php');
+
 // Variabeln definieren
 if (!isset($headmsg)) $headmsg = "";
 if (!isset($puk)) $puk = "";
@@ -16,25 +15,24 @@ if (!isset($forced['aufendhalt'])) $forced['aufendhalt'] = "";
 if (!isset($forced['tan'])) $forced['tan'] = "";
 
 // Nur weiter wenn eingeloggt
-if ($_SESSION['login'] != 'true' || $_SESSION['uid'] <= 0) die('Bitte einloggen!');
-
-//DB Verbindung herstellen
-db_connect();
+if (!is_user()) die('Bitte einloggen!');
 
 // Tan sichern
 $_GET['tan'] = mysql_real_escape_string ($_GET['tan']);
 
 // Werbedaten auslesen! Fixed
-$kamp = db_query ("SELECT t1.* FROM " . $db_prefix . "_gebuchte_werbung t1
-                               LEFT JOIN " . $db_prefix . "_reloads t2 ON (t1.tan=t2.tan AND (t2.uid=" . $_SESSION['uid'] . " or t2.ip='" . $ip . "') AND t2.bis > " . time() . ")
-                               WHERE t1.tan = '" . $_GET['tan'] . "' AND t2.tan IS NULL AND t1.werbeart = 'forcedbanner' AND t1.menge >=1 AND t1.status = 1 AND t1.sponsor != " . $_SESSION['uid'] . " LIMIT 1");
+$sql = sql::$db->prepare ("SELECT `t1`.* FROM `" . _VMS_ . "_gebuchte_werbung` AS `t1` 
+                            LEFT JOIN `" . _VMS_ . "_reloads` AS `t2` ON (`t1`.`tan` = `t2`.`tan` AND (`t2`.`uid` = ? or `t2`.`ip` = ? ) AND `t2`.`bis` > ?)
+                            WHERE `t1`.`tan` = ? AND `t2`.`tan` IS NULL AND `t1`.`werbeart` = 'forcedbanner' AND `t1`.`menge` >= 1 AND `t1`.`status` = 1 AND `t1`.`sponsor` != ? LIMIT 1");
+$sql -> execute(array($_SESSION['uid'], $system['ip'], time(), $_GET['tan'], $_SESSION['uid']));
+
 // Reloadprüfen
-if (mysql_num_rows($kamp)) {
-    $forced = mysql_fetch_assoc($kamp);
+if ($sql -> rowCount()) {
+    $forced = $sql -> fetch();;
     $wartezeit = $forced['aufendhalt'];
     $headmsg = 'Vergütung in ' . $forced['aufendhalt'] . ' Sek.!';
     if ($_GET['auszahlen'] != 'true') {
-        $puk = md5($_SESSION['uid'] . $forced['aufendhalt'] . date("d.m.Y", time()) . $percode);
+        $puk = md5($_SESSION['uid'] . $forced['aufendhalt'] . date("d.m.Y", time()) . $system['percode']);
         $_SESSION['earlies_payout' . $_GET['tan']] = time() + $wartezeit - 1;
     }
 } else {
@@ -42,24 +40,31 @@ if (mysql_num_rows($kamp)) {
     $force_error = 'true';
 }
 // User bezahlen und Reload schreiben
-if ($_GET['auszahlen'] == 'true' && $force_error != 'true' && $_GET['puk'] == md5($_SESSION['uid'] . $forced['aufendhalt'] . date("d.m.Y", time()) . $percode) && time() >= $_SESSION['earlies_payout' . $_GET['tan']]) {
+if ($_GET['auszahlen'] == 'true' && $force_error != 'true' && $_GET['puk'] == md5($_SESSION['uid'] . $forced['aufendhalt'] . date("d.m.Y", time()) . $system['percode']) && time() >= $_SESSION['earlies_payout' . $_GET['tan']]) {
+
+    $sql = sql::$db->prepare ("UPDATE `" . _VMS_ . "_kontodaten`  SET `klicks` = `klicks` + 1, `kv` = `kv` + :verdienst , `kontostand` = `kontostand` + :verdienst WHERE `uid` = :uid LIMIT 1");
+    $sql -> execute(array(':verdienst' => $forced['verdienst'], ':uid' => $_SESSION['uid']));
 
-    db_query("UPDATE " . $db_prefix . "_kontodaten  SET klicks = klicks + 1, kv = kv + " . $forced['verdienst'] . ", kontostand = kontostand + " . $forced['verdienst'] . " WHERE uid = " . $_SESSION['uid'] . "");
     refumsatz ($forced['verdienst'], $_SESSION['uid']);
     rallysystem ($_SESSION['uid'], '1', $forced['verdienst']);
     bilanz($forced['preis'], $forced['verdienst']);
     $new_reload = time() + $forced['reload'];
-    db_query("INSERT INTO " . $db_prefix . "_reloads (ip,uid,tan,bis) VALUES ('" . $ip . "'," . $_SESSION['uid'] . ",'" . $forced['tan'] . "'," . $new_reload . ")");
-    db_query("UPDATE " . $db_prefix . "_gebuchte_werbung SET menge = menge - 1 WHERE tan='" . $_GET['tan'] . "'");
+
+    $sql = sql::$db->prepare ("INSERT INTO `" . _VMS_ . "_reloads` (`ip`, `uid`, `tan`, `bis`) VALUES (?, ?, ?, ?)");
+    $sql -> execute(array($system['ip'], $_SESSION['uid'], $forced['tan'], $new_reload));
+
+    $sql = sql::$db->prepare ("UPDATE `" . _VMS_ . "_gebuchte_werbung` SET `menge` = `menge` - 1 WHERE `tan` = ?");
+    $sql -> execute($_GET['tan']);
+
     $_SESSION['earlies_payout' . $_GET['tan']] = '';
-    $headmsg = $forced['verdienst'] . ' ' . $waehrung . ' erhalten!';
+    $headmsg = $forced['verdienst'] . ' ' . $system['waehrung'] . ' erhalten!';
 } elseif ($_GET['auszahlen'] == 'true' && time() < $_SESSION['earlies_payout' . $_GET['tan']]) {
     $headmsg = 'Wartezeit umgangen.';
 } elseif ($_GET['auszahlen'] == 'true' && $force_error != 'true') {
     $headmsg = 'Pin abgelaufen';
 }
 
-db_close();
+
 
 echo'<!DOCTYPE HTML />
 <html>
@@ -72,7 +77,7 @@ echo'<!DOCTYPE HTML />
     <body>
         <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left">
             <tr>
-                <td align="left" width="50%"><b>'.$seitenname.' ist für den Inhalt nicht verantwortlich.</b></td>
+                <td align="left" width="50%"><b>'.$system['seitenname'].' ist für den Inhalt nicht verantwortlich.</b></td>
                 <td align="right" width="50%"><b>'.$headmsg.'</b>&nbsp;&nbsp;&nbsp;&nbsp;</td>
             </tr>
         </table>
diff --git a/topframe_paidmail.php b/topframe_paidmail.php
new file mode 100644
index 0000000000000000000000000000000000000000..3874b10260b8086ec51ae335347e9e842238654f
--- /dev/null
+++ b/topframe_paidmail.php
@@ -0,0 +1,67 @@
+<?php
+require_once('lib/extras.init.php');
+
+//Variablen vordefinieren
+if (!isset($headmsg))		       $headmsg			= "";
+if (!isset($wait))		       $wait			= "";
+if (!isset($_GET['auszahlen']))	       $_GET['auszahlen']	= "false";
+
+//Tan / UID Sichern
+$_GET['uid'] = (int)$_GET['uid'];
+$_GET['tan'] = addslashes ($_GET['tan']);
+
+
+$sql = sql::$db->prepare ("SELECT `e`.`start`,`e`.`aufendhalt`,`e`.`status`,`e`.`uid`,`v`.`verdienst` FROM `"._VMS_."_paidmails_empfaenger` AS `e`
+                            LEFT JOIN `"._VMS_."_paidmails_versendet` AS `v` ON `v`.`tan` = `e`.`tan`
+                            WHERE `e`.`tan` = ? AND `e`.`uid` = ? AND `e`.`gueltig` > ? LIMIT 1");
+$sql -> execute(array($_GET['tan'],$_GET['uid'],time()));
+
+$mail =  $sql-> fetch();
+
+if (!isset($_GET['auszahlen']) OR $_GET['auszahlen'] != 'true' ) {
+	if ($sql -> rowCount()) {
+		if ($mail['status'] != 0) {
+    		if ($mail['status'] == 1) $headmsg = 'Mail schon bestädigt!';
+    		if ($mail['status'] == 2) $headmsg = 'Fakeversuch!';
+		} else {
+    		$headmsg = 'Bitte warte '.$mail['aufendhalt'].' Sek.!';
+    		$wait = '<meta http-equiv="refresh" content="'.$mail['aufendhalt'].';url=topframe_paidmail.php?tan='.$_GET['tan'].'&auszahlen=true&uid='.$_GET['uid'].'">';
+    		$sql = sql::$db->prepare ("UPDATE `"._VMS_."_paidmails_empfaenger` SET `start` = ? WHERE `tan` = ? and `uid` = ? LIMIT 1");
+    		$sql -> execute(array(time(), $_GET['tan'], $_GET['uid']));
+		}
+	} else  $headmsg = 'Diese Mail ist nicht für Dich!';
+}else{
+	if (($mail['start']+$mail['aufendhalt']-1) <= time() AND $mail['status'] == 0) {
+    	kontobuchung ('+',$mail['verdienst'],$mail['uid']);
+    	buchungsliste (create_code(14),$mail['verdienst'],'Paidmailverdienst',$mail['uid']);
+    	refumsatz ($mail['verdienst'],$mail['uid']);
+    	rallysystem ($mail['uid'],'2',$mail['verdienst']);
+        bilanz(0,$mail['verdienst']);
+    	$sql = sql::$db->query ("UPDATE `"._VMS_."_paidmails_empfaenger` SET `status` = 1 WHERE `tan` = ? and `uid` = ? LIMIT 1");
+    	$sql -> execute(array($_GET['tan'], $_GET['uid']));
+    	$sql = sql::$db->query ("UPDATE `"._VMS_."_paidmails_versendet` SET `bestaedigt` = `bestaedigt` + 1 WHERE `tan` = ?  LIMIT 1");
+        $sql -> execute(array($_GET['tan']));
+    	$headmsg = $mail['verdienst'].' '.$system['waehrung'].' gutgeschrieben!';
+	} else {
+        $headmsg = 'Wartezeit umgangen! Paidmail ungültig!';
+        $sql = sql::$db->query ("UPDATE `"._VMS_."_paidmails_empfaenger` SET `status` = 2 WHERE `tan` = ? and `uid` = ? LIMIT 1");
+        $sql -> execute(array($_GET['tan'], $_GET['uid']));
+	}
+}
+
+echo '
+<!DOCTYPE>
+<html>
+    <head>';
+        if ($wait) echo $wait;
+        echo '<link rel="stylesheet" href="/css/bframe.css" type="text/css">
+    </head>
+    <body bgcolor="#c0c0c0" topmargin="0" leftmargin="0">
+        <table width="100%" cellpadding="0" cellspacing="0" border="0" align="left">
+            <tr>
+            <td align="left" width="50%"><b>'.$system['seitenname'].' ist für den Inhalt nicht verantwortlich.</b></td>
+            <td align="right" width="50%"><b>'.$headmsg.'</b>&nbsp;&nbsp;&nbsp;&nbsp;</td>
+            </tr>
+        </table>
+    </body>
+</html>';