From 110f754f9abdb7c40935ab08a611d2c7e1e7722e Mon Sep 17 00:00:00 2001 From: Lokutos <j.kuder@swissnwx.ch> Date: Wed, 16 Mar 2016 23:27:34 +0100 Subject: [PATCH] Add VMSone Files --- Anleitung.txt | 11 + Nutzungsbedingungen.pdf | Bin 0 -> 8319 bytes adminforce/content/bilanzsystem.php | 28 + adminforce/content/error/kein_zutritt.php | 14 + adminforce/content/error/keine_seite.php | 13 + adminforce/content/interfacebanner/admin.php | 33 + .../content/interfacebanner/blacklist.php | 35 + .../content/interfacebanner/fuco-ads.php | 35 + adminforce/content/interfacebanner/fucoex.php | 35 + .../content/interfacebanner/hp-lose.php | 35 + .../content/interfacebanner/lose-ads.php | 35 + .../content/interfacebanner/losebox.php | 35 + .../content/interfacebanner/webmasterlose.php | 35 + .../content/interfacedaten/betreiber.php | 55 ++ adminforce/content/interfacedaten/crons.php | 33 + .../content/interfacedaten/fuco-ads.php | 56 ++ adminforce/content/interfacedaten/fucoex.php | 49 + adminforce/content/interfacedaten/hp-lose.php | 46 + .../content/interfacedaten/lose-ads.php | 46 + adminforce/content/interfacedaten/losebox.php | 46 + .../content/interfacedaten/pageconfig.php | 78 ++ .../content/interfacedaten/webmasterlose.php | 50 + adminforce/content/module.php | 42 + adminforce/content/newssystem/news.php | 81 ++ adminforce/content/ralleysystem/aktiv.php | 255 +++++ adminforce/content/ralleysystem/klick.php | 288 ++++++ adminforce/content/ralleysystem/ref.php | 271 ++++++ adminforce/content/startseite.php | 31 + adminforce/content/texte/agb.php | 29 + adminforce/content/texte/aktivralley.php | 29 + .../content/texte/alternativwerbung.php | 100 ++ adminforce/content/texte/faq.php | 29 + adminforce/content/texte/klickralley.php | 29 + adminforce/content/texte/refralley.php | 29 + adminforce/content/texte/wartung.php | 29 + adminforce/content/usersystem/buchungen.php | 27 + adminforce/content/usersystem/doppelaccis.php | 83 ++ adminforce/content/usersystem/liste.php | 42 + .../content/usersystem/userbearbeiten.php | 263 ++++++ .../content/werbesystem/forcedbanner_468.php | 82 ++ adminforce/content/werbesystem/paidmail.php | 100 ++ .../content/werbesystem/paidmail_hist.php | 43 + adminforce/css/main.css | 78 ++ adminforce/images/gelb.gif | Bin 0 -> 147 bytes adminforce/images/gruen.gif | Bin 0 -> 149 bytes adminforce/images/rot.gif | Bin 0 -> 147 bytes adminforce/index.php | 52 ++ adminforce/lib/footer.php | 10 + adminforce/lib/header.php | 99 ++ adminforce/lib/layout.lib.php | 36 + adminforce/lib/menue_links.php | 33 + adminforce/lib/menue_rechts.php | 26 + adminforce/moduladmin.php | 35 + content/betteln.php | 54 ++ content/error/kein_ref.php | 6 + content/error/kein_zutritt.php | 12 + content/error/keine_seite.php | 12 + content/error/user_gesperrt.php | 7 + content/intern/agbs.php | 14 + content/intern/aktivieren.php | 43 + content/intern/anmelden.php | 188 ++++ content/intern/daten.php | 42 + content/intern/faqs.php | 14 + content/intern/impressum.php | 20 + content/intern/mediadaten.php | 102 ++ content/intern/startseite.php | 42 + content/intern/werbemittel.php | 39 + content/konto/auszahlen.php | 79 ++ content/konto/buchungen.php | 34 + content/konto/einzahlen.php | 71 ++ content/konto/refdetails.php | 107 +++ content/konto/refuebersicht.php | 136 +++ content/konto/uebersicht.php | 65 ++ content/konto/userprofil.php | 193 ++++ content/module.php | 38 + content/nickpage.php | 15 + content/ralleys/aktiv.php | 63 ++ content/ralleys/klick.php | 71 ++ content/ralleys/ref.php | 59 ++ content/verdienen/betteln4.php | 39 + content/verdienen/klick4.php | 22 + content/verdienen/paidmails.php | 34 + cron.php | 22 + crons/fuco-ads.int.php | 129 +++ crons/fucoex.int.php | 50 + crons/hp-lose.int.php | 50 + crons/lose-ads.int.php | 53 ++ crons/losebox.int.php | 53 ++ crons/refzahlungen.knt.php | 58 ++ crons/webmasterlose.int.php | 53 ++ css/bframe.css | 34 + css/main.css | 119 +++ fc.php | 27 + images/Thumbs.db | Bin 0 -> 9216 bytes images/banner/2.gif | Bin 0 -> 36704 bytes images/banner/3.gif | Bin 0 -> 33000 bytes images/banner/Thumbs.db | Bin 0 -> 10240 bytes images/gelb.gif | Bin 0 -> 147 bytes images/gruen.gif | Bin 0 -> 149 bytes images/header.gif | Bin 0 -> 29232 bytes images/pfeil.gif | Bin 0 -> 254 bytes images/rand.gif | Bin 0 -> 475 bytes images/rot.gif | Bin 0 -> 147 bytes index.php | 11 + lib/extras.init.php | 11 + lib/extras.lib.php | 95 ++ lib/footer.php | 13 + lib/functions.lib.php | 156 ++++ lib/header.php | 82 ++ lib/layout.lib.php | 53 ++ lib/mail/LICENSE | 278 ++++++ lib/mail/RFC822.php | 872 ++++++++++++++++++ lib/mail/background.gif | Bin 0 -> 1321 bytes lib/mail/klasse.php | 795 ++++++++++++++++ lib/mail/mimePart.php | 333 +++++++ lib/mail/smtp.php | 359 +++++++ lib/menue_links.php | 73 ++ lib/menue_rechts.php | 31 + lib/module.lib.php | 54 ++ lib/schnittstellen/ebesucher.php | 125 +++ lib/schnittstellen/funcoins.php | 114 +++ lib/schnittstellen/klamm.php | 138 +++ lib/schnittstellen/nickey.php | 95 ++ lib/session.lib.php | 121 +++ lib/texte/agb.txt | 1 + lib/texte/aktivralley.txt | 7 + lib/texte/alt_bettelseitenpopup.txt | 1 + lib/texte/alt_headerbanner.txt | 1 + lib/texte/alt_startseitenpopup.txt | 1 + lib/texte/bettelwerbung.txt | 1 + lib/texte/box1.txt | 1 + lib/texte/box2.txt | 1 + lib/texte/faq.txt | 1 + lib/texte/klickralley.txt | 0 lib/texte/refralley.txt | 1 + lib/texte/startwerbung.txt | 4 + lib/texte/wartung.txt | 1 + lib/weristonline.php | 21 + module/testmodul/admin.php | 16 + module/testmodul/files/mysql.sql | 1 + module/testmodul/icon.png | Bin 0 -> 2162 bytes module/testmodul/module.php | 19 + module/testmodul/pref.ini | 20 + pcheck.php | 71 ++ pclick.php | 24 + topframe_forced.php | 87 ++ vms.sql | 271 ++++++ wartung.php | 42 + 148 files changed, 9725 insertions(+) create mode 100644 Anleitung.txt create mode 100644 Nutzungsbedingungen.pdf create mode 100644 adminforce/content/bilanzsystem.php create mode 100644 adminforce/content/error/kein_zutritt.php create mode 100644 adminforce/content/error/keine_seite.php create mode 100644 adminforce/content/interfacebanner/admin.php create mode 100644 adminforce/content/interfacebanner/blacklist.php create mode 100644 adminforce/content/interfacebanner/fuco-ads.php create mode 100644 adminforce/content/interfacebanner/fucoex.php create mode 100644 adminforce/content/interfacebanner/hp-lose.php create mode 100644 adminforce/content/interfacebanner/lose-ads.php create mode 100644 adminforce/content/interfacebanner/losebox.php create mode 100644 adminforce/content/interfacebanner/webmasterlose.php create mode 100644 adminforce/content/interfacedaten/betreiber.php create mode 100644 adminforce/content/interfacedaten/crons.php create mode 100644 adminforce/content/interfacedaten/fuco-ads.php create mode 100644 adminforce/content/interfacedaten/fucoex.php create mode 100644 adminforce/content/interfacedaten/hp-lose.php create mode 100644 adminforce/content/interfacedaten/lose-ads.php create mode 100644 adminforce/content/interfacedaten/losebox.php create mode 100644 adminforce/content/interfacedaten/pageconfig.php create mode 100644 adminforce/content/interfacedaten/webmasterlose.php create mode 100644 adminforce/content/module.php create mode 100644 adminforce/content/newssystem/news.php create mode 100644 adminforce/content/ralleysystem/aktiv.php create mode 100644 adminforce/content/ralleysystem/klick.php create mode 100644 adminforce/content/ralleysystem/ref.php create mode 100644 adminforce/content/startseite.php create mode 100644 adminforce/content/texte/agb.php create mode 100644 adminforce/content/texte/aktivralley.php create mode 100644 adminforce/content/texte/alternativwerbung.php create mode 100644 adminforce/content/texte/faq.php create mode 100644 adminforce/content/texte/klickralley.php create mode 100644 adminforce/content/texte/refralley.php create mode 100644 adminforce/content/texte/wartung.php create mode 100644 adminforce/content/usersystem/buchungen.php create mode 100644 adminforce/content/usersystem/doppelaccis.php create mode 100644 adminforce/content/usersystem/liste.php create mode 100644 adminforce/content/usersystem/userbearbeiten.php create mode 100644 adminforce/content/werbesystem/forcedbanner_468.php create mode 100644 adminforce/content/werbesystem/paidmail.php create mode 100644 adminforce/content/werbesystem/paidmail_hist.php create mode 100644 adminforce/css/main.css create mode 100644 adminforce/images/gelb.gif create mode 100644 adminforce/images/gruen.gif create mode 100644 adminforce/images/rot.gif create mode 100644 adminforce/index.php create mode 100644 adminforce/lib/footer.php create mode 100644 adminforce/lib/header.php create mode 100644 adminforce/lib/layout.lib.php create mode 100644 adminforce/lib/menue_links.php create mode 100644 adminforce/lib/menue_rechts.php create mode 100644 adminforce/moduladmin.php create mode 100644 content/betteln.php create mode 100644 content/error/kein_ref.php create mode 100644 content/error/kein_zutritt.php create mode 100644 content/error/keine_seite.php create mode 100644 content/error/user_gesperrt.php create mode 100644 content/intern/agbs.php create mode 100644 content/intern/aktivieren.php create mode 100644 content/intern/anmelden.php create mode 100644 content/intern/daten.php create mode 100644 content/intern/faqs.php create mode 100644 content/intern/impressum.php create mode 100644 content/intern/mediadaten.php create mode 100644 content/intern/startseite.php create mode 100644 content/intern/werbemittel.php create mode 100644 content/konto/auszahlen.php create mode 100644 content/konto/buchungen.php create mode 100644 content/konto/einzahlen.php create mode 100644 content/konto/refdetails.php create mode 100644 content/konto/refuebersicht.php create mode 100644 content/konto/uebersicht.php create mode 100644 content/konto/userprofil.php create mode 100644 content/module.php create mode 100644 content/nickpage.php create mode 100644 content/ralleys/aktiv.php create mode 100644 content/ralleys/klick.php create mode 100644 content/ralleys/ref.php create mode 100644 content/verdienen/betteln4.php create mode 100644 content/verdienen/klick4.php create mode 100644 content/verdienen/paidmails.php create mode 100644 cron.php create mode 100644 crons/fuco-ads.int.php create mode 100644 crons/fucoex.int.php create mode 100644 crons/hp-lose.int.php create mode 100644 crons/lose-ads.int.php create mode 100644 crons/losebox.int.php create mode 100644 crons/refzahlungen.knt.php create mode 100644 crons/webmasterlose.int.php create mode 100644 css/bframe.css create mode 100644 css/main.css create mode 100644 fc.php create mode 100644 images/Thumbs.db create mode 100644 images/banner/2.gif create mode 100644 images/banner/3.gif create mode 100644 images/banner/Thumbs.db create mode 100644 images/gelb.gif create mode 100644 images/gruen.gif create mode 100644 images/header.gif create mode 100644 images/pfeil.gif create mode 100644 images/rand.gif create mode 100644 images/rot.gif create mode 100644 index.php create mode 100644 lib/extras.init.php create mode 100644 lib/extras.lib.php create mode 100644 lib/footer.php create mode 100644 lib/functions.lib.php create mode 100644 lib/header.php create mode 100644 lib/layout.lib.php create mode 100644 lib/mail/LICENSE create mode 100644 lib/mail/RFC822.php create mode 100644 lib/mail/background.gif create mode 100644 lib/mail/klasse.php create mode 100644 lib/mail/mimePart.php create mode 100644 lib/mail/smtp.php create mode 100644 lib/menue_links.php create mode 100644 lib/menue_rechts.php create mode 100644 lib/module.lib.php create mode 100644 lib/schnittstellen/ebesucher.php create mode 100644 lib/schnittstellen/funcoins.php create mode 100644 lib/schnittstellen/klamm.php create mode 100644 lib/schnittstellen/nickey.php create mode 100644 lib/session.lib.php create mode 100644 lib/texte/agb.txt create mode 100644 lib/texte/aktivralley.txt create mode 100644 lib/texte/alt_bettelseitenpopup.txt create mode 100644 lib/texte/alt_headerbanner.txt create mode 100644 lib/texte/alt_startseitenpopup.txt create mode 100644 lib/texte/bettelwerbung.txt create mode 100644 lib/texte/box1.txt create mode 100644 lib/texte/box2.txt create mode 100644 lib/texte/faq.txt create mode 100644 lib/texte/klickralley.txt create mode 100644 lib/texte/refralley.txt create mode 100644 lib/texte/startwerbung.txt create mode 100644 lib/texte/wartung.txt create mode 100644 lib/weristonline.php create mode 100644 module/testmodul/admin.php create mode 100644 module/testmodul/files/mysql.sql create mode 100644 module/testmodul/icon.png create mode 100644 module/testmodul/module.php create mode 100644 module/testmodul/pref.ini create mode 100644 pcheck.php create mode 100644 pclick.php create mode 100644 topframe_forced.php create mode 100644 vms.sql create mode 100644 wartung.php diff --git a/Anleitung.txt b/Anleitung.txt new file mode 100644 index 0000000..cb03d36 --- /dev/null +++ b/Anleitung.txt @@ -0,0 +1,11 @@ +1) Alle Dateien aus dem Ordner files hochladen +2) vms.sql in phpMyAdmin importieren +3) Datei lib/functions.lib.php anpassen neben allen Variablen die angepasst werden müssen ist eine Beschreibung +4) www.ihre-domain.de/adminforce/ öffnen und unter + » Seiteneinstell. + alle Einstellungen vornehmen das gleiche unter + » Betreiberdaten + + +Weitere Fragen zur Einrichtung oder zum Betrieb des VMS bitte im Forum http://www.designerscripte.net stellen, +eine Ausführliche Dokumentation ist in Arbeit. \ No newline at end of file diff --git a/Nutzungsbedingungen.pdf b/Nutzungsbedingungen.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2334e3ed3dc96184221c41e9bc8608b5e2a9f65e GIT binary patch literal 8319 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 literal 0 HcmV?d00001 diff --git a/adminforce/content/bilanzsystem.php b/adminforce/content/bilanzsystem.php new file mode 100644 index 0000000..2f53010 --- /dev/null +++ b/adminforce/content/bilanzsystem.php @@ -0,0 +1,28 @@ +<? +head("Bilanzsystem");?> +Hier eine übersicht über die Einnahmen und Ausgaben der Seite +<?foot();?> + +<?head("Letzten 14 Tage");?> +<table border="0" width="100%"> +<tr> + <td align="center">Datum</td> + <td align="center">Einnahmen</td> + <td align="center">Ausgaben</td> + <td align="center">Bilanz</td> +</tr> +<? +$sql = db_query("SELECT ein,aus,date FROM ".$db_prefix."_bilanz ORDER BY date DESC"); +while ($bilanz = mysql_fetch_assoc($sql)){ + echo ' + <tr> + <td align="center">'.date("d.m.Y",$bilanz['date']).'</td> + <td align="center">'.$bilanz['ein'].'</td> + <td align="center">'.$bilanz['aus'].'</td> + <td align="center">'.round($bilanz['ein']-$bilanz['aus'],2).' + </tr> + '; +} +?> +</table> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/error/kein_zutritt.php b/adminforce/content/error/kein_zutritt.php new file mode 100644 index 0000000..a954a35 --- /dev/null +++ b/adminforce/content/error/kein_zutritt.php @@ -0,0 +1,14 @@ +<?head("Zutritt verweigert");?> +Der Zutritt zu diesem Bereich wurde Dir verweigert!<br> +Bevor Du dich an den Support wendest, prüfe bitte erst die unten aufgezählten Möglichkeiten +um so unnötige Supportanfragen zu vermeiden!<br> +<br> +<b>Mögliche Gründe</b><br> +<ul> +<li>Du bist nicht eingeloggt (bitte erst einloggen)</li> +<li>Die Kontonummer/Passwortkombination stimmt nicht (Loginfehler)</li> +<li>Du hast deinen Account noch nicht freigeschaltet (bitte Email prüfen)</li> +<li>Die Session ist abgelaufen (verwende doch den Autologin)</li> +</ul> +<?foot();?> + diff --git a/adminforce/content/error/keine_seite.php b/adminforce/content/error/keine_seite.php new file mode 100644 index 0000000..1f35823 --- /dev/null +++ b/adminforce/content/error/keine_seite.php @@ -0,0 +1,13 @@ +<?head("Seite nicht gefunden");?> +Die von Dir angeforderte Seite ist nicht erreichbar.<br> +Bitte wähle aus dem Menü einen gültigen Link, sollte weiterhin das Problem bestehen informiere +bitte den Webmaster darüber.<br> +<br> +<b>Mögliche Gründe</b><br> +<ul> +<li>Die Seite wurde aus Wartungsgründen entfernt</li> +<li>Ein Link im Menü wurde falsch gesetzt</li> +<li>Du hast eine falsche oder ungültige URL erhalten (extern)</li> +</ul> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/admin.php b/adminforce/content/interfacebanner/admin.php new file mode 100644 index 0000000..84c5a0b --- /dev/null +++ b/adminforce/content/interfacebanner/admin.php @@ -0,0 +1,33 @@ +<?head("Admin ForcedBanner");?> +<? +if (!isset($_GET['tan'])) $_GET['tan'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['tan']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE tan='".$_GET['tan']."' and sponsor='administrator' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='administrator' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' + +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/admin&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + + diff --git a/adminforce/content/interfacebanner/blacklist.php b/adminforce/content/interfacebanner/blacklist.php new file mode 100644 index 0000000..8482503 --- /dev/null +++ b/adminforce/content/interfacebanner/blacklist.php @@ -0,0 +1,35 @@ +<?head("ForcedBanner Blacklist");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and status = '2' and sponsor='".$_GET['sponsor']."' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1' WHERE kid='".$_GET['kid']."' and sponsor='".$_GET['sponsor']."' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE werbeart = 'forcedbanner' and status = '2' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> +<td align="center" width="50%">TAN: '.$anzeigen['tan'].'<br>KID: '.$anzeigen['kid'].' ('.$anzeigen['sponsor'].')</td> +<td align="center" width="50%">Bet: '.number_format($anzeigen['preis'],2,",",".").' / User: '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="center" colspan="2"><a href="'.$anzeigen['ziel'].'" target="_blank"><img alt="Sponsorenbanner" src="'.$anzeigen['banner'].'" border="0" width="468" height="60"></a></td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="center" width="50%">Reload: '. $anzeigen['reload']/3600 .' Std. / Rest: '.number_format($anzeigen['menge'],0,",",".").'</td> +<td align="center" width="50%"><a href="?content=/interfacebanner/blacklist&sponsor='.$anzeigen['sponsor'].'&loeschen=true&kid='.$anzeigen['kid'].'" target="_self">Löschen</a> <a href="?content=/interfacebanner/blacklist&sponsor='.$anzeigen['sponsor'].'&blacklist=true&kid='.$anzeigen['kid'].'" target="_self">Löschen-Blacklist</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/fuco-ads.php b/adminforce/content/interfacebanner/fuco-ads.php new file mode 100644 index 0000000..7644ef7 --- /dev/null +++ b/adminforce/content/interfacebanner/fuco-ads.php @@ -0,0 +1,35 @@ +<?head("FuCo-Ads ForcedBanner");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and sponsor='fuco-ads' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '2' WHERE kid='".$_GET['kid']."' and sponsor='fuco-ads' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='fuco-ads' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/fuco-ads&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/fucoex.php b/adminforce/content/interfacebanner/fucoex.php new file mode 100644 index 0000000..0b93fba --- /dev/null +++ b/adminforce/content/interfacebanner/fucoex.php @@ -0,0 +1,35 @@ +<?head("FuCoEx ForcedBanner");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and sponsor='fucoex' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '2' WHERE kid='".$_GET['kid']."' and sponsor='fucoex' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='fucoex' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/fucoex&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/hp-lose.php b/adminforce/content/interfacebanner/hp-lose.php new file mode 100644 index 0000000..5a8c25f --- /dev/null +++ b/adminforce/content/interfacebanner/hp-lose.php @@ -0,0 +1,35 @@ +<?head("HP-Lose ForcedBanner");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and sponsor='hp-lose' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '2' WHERE kid='".$_GET['kid']."' and sponsor='hp-lose' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='hp-lose' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/hp-lose&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/lose-ads.php b/adminforce/content/interfacebanner/lose-ads.php new file mode 100644 index 0000000..3cb8c03 --- /dev/null +++ b/adminforce/content/interfacebanner/lose-ads.php @@ -0,0 +1,35 @@ +<?head("Lose-Ads ForcedBanner");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and sponsor='lose-ads' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '2' WHERE kid='".$_GET['kid']."' and sponsor='lose-ads' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='lose-ads' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/lose-ads&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/losebox.php b/adminforce/content/interfacebanner/losebox.php new file mode 100644 index 0000000..4bad69d --- /dev/null +++ b/adminforce/content/interfacebanner/losebox.php @@ -0,0 +1,35 @@ +<?head("Losebox ForcedBanner");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and sponsor='losebox' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '2' WHERE kid='".$_GET['kid']."' and sponsor='losebox' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='losebox' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/losebox&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacebanner/webmasterlose.php b/adminforce/content/interfacebanner/webmasterlose.php new file mode 100644 index 0000000..c4a1d16 --- /dev/null +++ b/adminforce/content/interfacebanner/webmasterlose.php @@ -0,0 +1,35 @@ +<?head("Webmasterlose ForcedBanner");?> +<? +if (!isset($_GET['kid'])) $_GET['kid'] = ''; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ''; +if (!isset($_GET['blacklist'])) $_GET['blacklist'] = ''; + +if ($_GET['loeschen']=='true' && $_GET['kid']) { +db_query("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE kid='".$_GET['kid']."' and sponsor='webmasterlose' LIMIT 1"); +} +if ($_GET['blacklist']=='true' && $_GET['kid']) { +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '2' WHERE kid='".$_GET['kid']."' and sponsor='webmasterlose' LIMIT 1"); +} + +$forcedbanner = db_query("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor='webmasterlose' and werbeart = 'forcedbanner' and status = '1' ORDER BY kid ASC"); +while ($anzeigen = mysql_fetch_array($forcedbanner)) { +echo ' +<table width="100%" cellpadding="0" cellspacing="1" border="0" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>TAN:</b> '.$anzeigen['tan'].'</td> + <td align="center" width="50%"><b>Vergütung:</b> '.number_format($anzeigen['verdienst'],2,",",".").'</td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="left" colspan="2"><br><b>Ziel:</b> <a href="'.$anzeigen['ziel'].'">'.$anzeigen['ziel'].'</a> <br><b>Banner:</b> <a href="'.$anzeigen['banner'].'">'.$anzeigen['banner'].'</a><br><br></td> +</tr> +<tr bgcolor="#f0f0f0"> + <td align="center" width="50%"><b>Reload:</b> '. $anzeigen['reload']/3600 .'h <b>Rest:</b> '.number_format($anzeigen['menge'],0,",",".").' Klicks</td> + <td align="center" width="50%"><a href="?content=/interfacebanner/webmasterlose&loeschen=true&tan='.$anzeigen['tan'].'" target="_self">Löschen</a></td> +</tr> +</table> +<br> +'; +} +?> +<?foot();?> + diff --git a/adminforce/content/interfacedaten/betreiber.php b/adminforce/content/interfacedaten/betreiber.php new file mode 100644 index 0000000..5d9d959 --- /dev/null +++ b/adminforce/content/interfacedaten/betreiber.php @@ -0,0 +1,55 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber_id'])) $_POST['betreiber_id'] = ''; +if (!isset($_POST['betreiber_passwort'])) $_POST['betreiber_passwort'] = ''; +if (!isset($_POST['betreiber_kennung'])) $_POST['betreiber_kennung'] = ''; +if (!isset($_POST['schnittstelle'])) $_POST['schnittstelle'] = ''; +if (!isset($_POST['einzahltext'])) $_POST['einzahltext'] = ''; +if (!isset($_POST['auszahltext'])) $_POST['auszahltext'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_schnittstelle SET betreiber_id='".$_POST['betreiber_id']."', betreiber_passwort='".$_POST['betreiber_passwort']."', betreiber_kennung='".$_POST['betreiber_kennung']."', schnittstelle='".$_POST['schnittstelle']."', einzahltext='".$_POST['einzahltext']."', auszahltext='".$_POST['auszahltext']."', einzahlsumme='".$_POST['einzahlsumme']."', auszahlsumme='".$_POST['auszahlsumme']."', anfragen_tag='".$_POST['anfragen_tag']."', anfragen_user='".$_POST['anfragen_user']."' LIMIT 1"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_schnittstelle LIMIT 1")); +?> +<? head("Interfacedaten Betreiber (EF²,FuCoEx² usw.)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> + <td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber_id" value="<?=$interface['betreiber_id'];?>" style="width:180px;"></td> +</tr> +<tr> + <td align="left">Betreiberpasswort</td><td align="left"><input type="Text" name="betreiber_passwort" value="<?=$interface['betreiber_passwort'];?>" style="width:180px;"></td> +</tr> +<tr> + <td align="left">Betreiberkennung<br><i>Kennung nur bei EF²</i></td><td align="left"><input type="Text" name="betreiber_kennung" value="<?=$interface['betreiber_kennung'];?>" style="width:180px;"></td> +</tr> +<tr> + <td align="left">Schnittstelle<br><i>Dateiname der Schnittstelle</i></td><td align="left"><input type="Text" name="schnittstelle" value="<?=$interface['schnittstelle'];?>" style="width:180px;">.php +</td> +</tr> +<tr> + <td align="left">Einzahltext<br><i>Max. 40 Zeichen</i></td><td align="left"><input type="Text" name="einzahltext" value="<?=$interface['einzahltext'];?>" style="width:180px;" maxlength="40"></td> +</tr> +<tr> + <td align="left">Auszahltext<br><i>Max. 40 Zeichen</i></td><td align="left"><input type="Text" name="auszahltext" value="<?=$interface['auszahltext'];?>" style="width:180px;" maxlength="40"></td> +</tr> +<tr> + <td align="left">Minimum Einzahlsumme<br><i>0 = Ohne Einschränkung</i></td><td align="left"><input type="Text" name="einzahlsumme" value="<?=$interface['einzahlsumme'];?>" style="width:180px;" maxlength="40"></td> +</tr> +<tr> + <td align="left">Minimum Auszahlsumme<br><i>0 = Ohne Einschränkung</i></td><td align="left"><input type="Text" name="auszahlsumme" value="<?=$interface['auszahlsumme'];?>" style="width:180px;" maxlength="40"></td> +</tr> +<tr> + <td align="left">Max. Schnittstellenanfragen (Tag)<br><i>0 = Ohne Einschränkung<br>Nur für Anmeldungen</i></td><td align="left"><input type="Text" name="anfragen_tag" value="<?=$interface['anfragen_tag'];?>" style="width:180px;" maxlength="40"></td> +</tr> +<tr> + <td align="left">Max. Schnittstellenanfragen (User)<br><i>0 = Ohne Einschränkung<br>Nur Ein./Auszahlungen</i></td><td align="left"><input type="Text" name="anfragen_user" value="<?=$interface['anfragen_user'];?>" style="width:180px;" maxlength="40"></td> +</tr> +<tr> + <td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/crons.php b/adminforce/content/interfacedaten/crons.php new file mode 100644 index 0000000..d83dc70 --- /dev/null +++ b/adminforce/content/interfacedaten/crons.php @@ -0,0 +1,33 @@ +<? head("Crons (Übersicht und manuell Start)");?> +<table width="100%" border="0" cellpadding="1" cellspacing="1" bgcolor="#c0c0c0"> +<tr class="tr_head"> + <td align="center"><b>Cron</b></td> + <td align="center"><b>Laufzeit</b></td> + <td align="center">URL</td> +</tr> +<? +$crons = db_query("SELECT * FROM ".$db_prefix."_crons"); +while ($crontabelle = mysql_fetch_array($crons)) { +$i++; +$row = ($i % 2 == 0) ? 0 : 1; + +echo ' +<tr class="tr_row'.$row.'"> + <td valign="middle"><b>'.$crontabelle['bezeichnung'].'</b><br> + <i>ID: '.$crontabelle['id'].'</i> + </td> + + <td align="center" valign="middle"> + <font color="#000080">'.date("d.m.Y - H:i:s",$crontabelle['laufzeit']).'</font> + </td> + + <td align="center" valign="middle"> + <a href="../cron.php?id='.$crontabelle['id'].'&pw='.$cron_pw.'" target="_blank"><img src="images/gruen.gif" width="15" height="15" border="0" alt="Ausführen"></a> + </td> + +</tr> +'; +} +?> +</table> +<? foot(); ?> diff --git a/adminforce/content/interfacedaten/fuco-ads.php b/adminforce/content/interfacedaten/fuco-ads.php new file mode 100644 index 0000000..d6dc470 --- /dev/null +++ b/adminforce/content/interfacedaten/fuco-ads.php @@ -0,0 +1,56 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber'])) $_POST['betreiber'] = ''; +if (!isset($_POST['seite'])) $_POST['seite'] = ''; +if (!isset($_POST['pass'])) $_POST['pass'] = ''; +if (!isset($_POST['eigenverdienst'])) $_POST['eigenverdienst'] = ''; +if (!isset($_POST['min_verguetung'])) $_POST['min_verguetung'] = ''; +if (!isset($_POST['restklicks'])) $_POST['restklicks'] = ''; +if (!isset($_POST['umrechnung'])) $_POST['umrechnung'] = ''; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_interface SET surfview='".$_POST['surfview']."',surfklick='".$_POST['surfklick']."',betreiber='".$_POST['betreiber']."', seite='".$_POST['seite']."', pass='".$_POST['pass']."', eigenverdienst='".$_POST['eigenverdienst']."', mindestverguetung='".$_POST['min_verguetung']."', restklicks='".$_POST['restklicks']."', umrechnung='".$_POST['umrechnung']."', aufendhalt='".$_POST['aufendhalt']."' WHERE interface='fuco-ads'"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface='fuco-ads' LIMIT 1")); +?> +<? head("Interfacedaten (FuCo-Ads.de)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber" value="<?=$interface['betreiber'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Seiten-ID</td><td align="left"><input type="Text" name="seite" value="<?=$interface['seite'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Schnittstellen Passwort</td><td align="left"><input type="Text" name="pass" value="<?=$interface['pass'];?>" style="width:150px;"></td> +</tr> +<tr> +<td align="left">Eigenverdienst in Prozent<br><i>Bitte Refverdienste bedenken</i></td><td align="left"><input type="Text" name="eigenverdienst" value="<?=$interface['eigenverdienst'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="min_verguetung" value="<?=$interface['mindestverguetung'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i><b>Surfview</b> (0=deaktiv)</i></td><td align="left"><input type="Text" name="surfview" value="<?=$interface['surfview'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i><b>Surfklick</b> (0=deaktiv)</i></td><td align="left"><input type="Text" name="surfklick" value="<?=$interface['surfklick'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Wieviel % sollen eingebucht werden?</td><td align="left"><input type="Text" name="restklicks" value="<?=$interface['restklicks'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Umrechnung<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="umrechnung" value="<?=$interface['umrechnung'];?>" style="width:50px;"> <b>Punkt statt Komma</b></td> +</tr> +<tr> +<td align="left">Aufendhalt in Sek. für den User</td><td align="left"><input type="Text" name="aufendhalt" value="<?=$interface['aufendhalt'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/fucoex.php b/adminforce/content/interfacedaten/fucoex.php new file mode 100644 index 0000000..35a87ec --- /dev/null +++ b/adminforce/content/interfacedaten/fucoex.php @@ -0,0 +1,49 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber'])) $_POST['betreiber'] = ''; +if (!isset($_POST['seite'])) $_POST['seite'] = ''; +if (!isset($_POST['eigenverdienst'])) $_POST['eigenverdienst'] = ''; +if (!isset($_POST['min_verguetung'])) $_POST['min_verguetung'] = ''; +if (!isset($_POST['restklicks'])) $_POST['restklicks'] = ''; +if (!isset($_POST['umrechnung'])) $_POST['umrechnung'] = ''; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_interface SET betreiber='".$_POST['betreiber']."',pass='".$_POST['pass']."', seite='".$_POST['seite']."', eigenverdienst='".$_POST['eigenverdienst']."', mindestverguetung='".$_POST['min_verguetung']."', restklicks='".$_POST['restklicks']."', umrechnung='".$_POST['umrechnung']."', aufendhalt='".$_POST['aufendhalt']."' WHERE interface='fucoex'"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface='fucoex' LIMIT 1")); +?> +<? head("Interfacedaten (Fucoex)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber" value="<?=$interface['betreiber'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Seiten-ID</td><td align="left"><input type="Text" name="seite" value="<?=$interface['seite'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Schnittstellen Passwort</td><td align="left"><input type="Text" name="pass" value="<?=$interface['pass'];?>" style="width:150px;"></td> +</tr> +<tr> +<td align="left">Eigenverdienst in Prozent<br><i>Bitte Refverdienste bedenken</i></td><td align="left"><input type="Text" name="eigenverdienst" value="<?=$interface['eigenverdienst'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="min_verguetung" value="<?=$interface['mindestverguetung'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Wieviel % sollen eingebucht werden?</td><td align="left"><input type="Text" name="restklicks" value="<?=$interface['restklicks'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Umrechnung<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="umrechnung" value="<?=$interface['umrechnung'];?>" style="width:50px;"> <b>Punkt statt Komma</b></td> +</tr> +<tr> +<td align="left">Aufendhalt in Sek. für den User</td><td align="left"><input type="Text" name="aufendhalt" value="<?=$interface['aufendhalt'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/hp-lose.php b/adminforce/content/interfacedaten/hp-lose.php new file mode 100644 index 0000000..62bdd3d --- /dev/null +++ b/adminforce/content/interfacedaten/hp-lose.php @@ -0,0 +1,46 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber'])) $_POST['betreiber'] = ''; +if (!isset($_POST['seite'])) $_POST['seite'] = ''; +if (!isset($_POST['eigenverdienst'])) $_POST['eigenverdienst'] = ''; +if (!isset($_POST['min_verguetung'])) $_POST['min_verguetung'] = ''; +if (!isset($_POST['restklicks'])) $_POST['restklicks'] = ''; +if (!isset($_POST['umrechnung'])) $_POST['umrechnung'] = ''; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_interface SET betreiber='".$_POST['betreiber']."', seite='".$_POST['seite']."', eigenverdienst='".$_POST['eigenverdienst']."', mindestverguetung='".$_POST['min_verguetung']."', restklicks='".$_POST['restklicks']."', umrechnung='".$_POST['umrechnung']."', aufendhalt='".$_POST['aufendhalt']."' WHERE interface='hp-lose'"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface='hp-lose' LIMIT 1")); +?> +<? head("Interfacedaten (HP-Lose.de)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber" value="<?=$interface['betreiber'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Seiten-ID</td><td align="left"><input type="Text" name="seite" value="<?=$interface['seite'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Eigenverdienst in Prozent<br><i>Bitte Refverdienste bedenken</i></td><td align="left"><input type="Text" name="eigenverdienst" value="<?=$interface['eigenverdienst'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="min_verguetung" value="<?=$interface['mindestverguetung'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Wieviel % sollen eingebucht werden?</td><td align="left"><input type="Text" name="restklicks" value="<?=$interface['restklicks'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Umrechnung<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="umrechnung" value="<?=$interface['umrechnung'];?>" style="width:50px;"> <b>Punkt statt Komma</b></td> +</tr> +<tr> +<td align="left">Aufendhalt in Sek. für den User</td><td align="left"><input type="Text" name="aufendhalt" value="<?=$interface['aufendhalt'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/lose-ads.php b/adminforce/content/interfacedaten/lose-ads.php new file mode 100644 index 0000000..78fde2b --- /dev/null +++ b/adminforce/content/interfacedaten/lose-ads.php @@ -0,0 +1,46 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber'])) $_POST['betreiber'] = ''; +if (!isset($_POST['seite'])) $_POST['seite'] = ''; +if (!isset($_POST['eigenverdienst'])) $_POST['eigenverdienst'] = ''; +if (!isset($_POST['min_verguetung'])) $_POST['min_verguetung'] = ''; +if (!isset($_POST['restklicks'])) $_POST['restklicks'] = ''; +if (!isset($_POST['umrechnung'])) $_POST['umrechnung'] = ''; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_interface SET betreiber='".$_POST['betreiber']."', seite='".$_POST['seite']."', eigenverdienst='".$_POST['eigenverdienst']."', mindestverguetung='".$_POST['min_verguetung']."', restklicks='".$_POST['restklicks']."', umrechnung='".$_POST['umrechnung']."', aufendhalt='".$_POST['aufendhalt']."' WHERE interface='lose-ads'"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface='lose-ads' LIMIT 1")); +?> +<? head("Interfacedaten (Lose-Ads.de)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber" value="<?=$interface['betreiber'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Seiten-ID</td><td align="left"><input type="Text" name="seite" value="<?=$interface['seite'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Eigenverdienst in Prozent<br><i>Bitte Refverdienste bedenken</i></td><td align="left"><input type="Text" name="eigenverdienst" value="<?=$interface['eigenverdienst'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="min_verguetung" value="<?=$interface['mindestverguetung'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Wieviel % sollen eingebucht werden?</td><td align="left"><input type="Text" name="restklicks" value="<?=$interface['restklicks'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Umrechnung<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="umrechnung" value="<?=$interface['umrechnung'];?>" style="width:50px;"> <b>Punkt statt Komma</b></td> +</tr> +<tr> +<td align="left">Aufendhalt in Sek. für den User</td><td align="left"><input type="Text" name="aufendhalt" value="<?=$interface['aufendhalt'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/losebox.php b/adminforce/content/interfacedaten/losebox.php new file mode 100644 index 0000000..a059680 --- /dev/null +++ b/adminforce/content/interfacedaten/losebox.php @@ -0,0 +1,46 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber'])) $_POST['betreiber'] = ''; +if (!isset($_POST['seite'])) $_POST['seite'] = ''; +if (!isset($_POST['eigenverdienst'])) $_POST['eigenverdienst'] = ''; +if (!isset($_POST['min_verguetung'])) $_POST['min_verguetung'] = ''; +if (!isset($_POST['restklicks'])) $_POST['restklicks'] = ''; +if (!isset($_POST['umrechnung'])) $_POST['umrechnung'] = ''; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_interface SET betreiber='".$_POST['betreiber']."', seite='".$_POST['seite']."', eigenverdienst='".$_POST['eigenverdienst']."', mindestverguetung='".$_POST['min_verguetung']."', restklicks='".$_POST['restklicks']."', umrechnung='".$_POST['umrechnung']."', aufendhalt='".$_POST['aufendhalt']."' WHERE interface='losebox'"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface='losebox' LIMIT 1")); +?> +<? head("Interfacedaten (Losebox.de)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber" value="<?=$interface['betreiber'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Seiten-ID</td><td align="left"><input type="Text" name="seite" value="<?=$interface['seite'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Eigenverdienst in Prozent<br><i>Bitte Refverdienste bedenken</i></td><td align="left"><input type="Text" name="eigenverdienst" value="<?=$interface['eigenverdienst'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="min_verguetung" value="<?=$interface['mindestverguetung'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Wieviel % sollen eingebucht werden?</td><td align="left"><input type="Text" name="restklicks" value="<?=$interface['restklicks'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Umrechnung<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="umrechnung" value="<?=$interface['umrechnung'];?>" style="width:50px;"> <b>Punkt statt Komma</b></td> +</tr> +<tr> +<td align="left">Aufendhalt in Sek. für den User</td><td align="left"><input type="Text" name="aufendhalt" value="<?=$interface['aufendhalt'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/pageconfig.php b/adminforce/content/interfacedaten/pageconfig.php new file mode 100644 index 0000000..826e736 --- /dev/null +++ b/adminforce/content/interfacedaten/pageconfig.php @@ -0,0 +1,78 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_seitenkonfig SET + denied_domains='".$_POST['denied_domains']."', + wartung='".$_POST['wartung']."', + einzahlgrenze='".$_POST['einzahlgrenze']."', + re1='".$_POST['re1']."', + re2='".$_POST['re2']."', + re3='".$_POST['re3']."', + min_betteln = '".$_POST['min_betteln']."', + max_betteln = '".$_POST['max_betteln']."', + reload_betteln = '".$_POST['reload_betteln']."' + admin_name='".$_POST['admin_name']."', + admin_pass='".$_POST['admin_pass']."' +LIMIT 1"); +} +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_seitenkonfig LIMIT 1")); +?> + +<? head("Webseiteneinstellungen"); ?> +<form action="" method="post"> +<table width="100%" align="center" border="0" cellpadding="1" cellspacing="1" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Wartungsmodus</b><br><i>Wartungstext muss bearbeitet werden!</i></td> +<td align="left"> <select name="wartung"> + <option value="0" <?if ($interface['wartung'] == 0) echo 'SELECTED';?>>Deaktiviert </option> + <option value="1" <?if ($interface['wartung'] == 1) echo 'SELECTED';?>>Aktiviert</option> +</select> +</td> +</tr> +<tr bgcolor="#f5f5f5"> +<td align="left"><b>Einzahlgrenze</b><br><i>Max. Guthaben pro User!</i></td> +<td align="left"> <input type="Text" name="einzahlgrenze" value="<?=$interface['einzahlgrenze'];?>"> Nur Ganzzahlen</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Refebene 1</b><br><i>Angaben in Prozent!</i></td> +<td align="left"> <input type="Text" name="re1" value="<?=$interface['re1'];?>"> Punkt statt Komma</td> +</tr> +<tr bgcolor="#f5f5f5"> +<td align="left"><b>Refebene 2</b><br><i>Angaben in Prozent!</i></td> +<td align="left"> <input type="Text" name="re2" value="<?=$interface['re2'];?>"> Punkt statt Komma</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Refebene 3</b><br><i>Angaben in Prozent!</i></td> +<td align="left"> <input type="Text" name="re3" value="<?=$interface['re3'];?>"> Punkt statt Komma</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>min. Verdienst (Bettelaufruf)</b></td> +<td align="left"> <input type="Text" name="min_betteln" value="<?=$interface['min_betteln'];?>"> Punkt statt Komma</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>max. Verdienst (Bettelaufruf)</b></td> +<td align="left"> <input type="Text" name="max_betteln" value="<?=$interface['max_betteln'];?>"> Punkt statt Komma</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Reloadzeit (Bettelaufruf)</b><br><i>Angaben in Sekunden (3600 = 1 Stunde) (0 = Bettellink deaktiviert)</i></td> +<td align="left"> <input type="Text" name="reload_betteln" value="<?=$interface['reload_betteln'];?>"> Nur Ganzzahlen</td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Nicht erlaubte eMail-Domains</b><br><i>(Durch ; getrennt)</i></td> +<td align="left"> <input type="Text" name="denied_domains" value="<?=$interface['denied_domains'];?>"></td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Loginname (Adminforce)</b></td> +<td align="left"> <input type="Text" name="admin_name" value="<?=$interface['admin_name'];?>"></td> +</tr> +<tr bgcolor="#f0f0f0"> +<td align="left"><b>Passwort (Adminforce)</b></td> +<td align="left"> <input type="Text" name="admin_pass" value="<?=$interface['admin_pass'];?>"></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/interfacedaten/webmasterlose.php b/adminforce/content/interfacedaten/webmasterlose.php new file mode 100644 index 0000000..c8d00ae --- /dev/null +++ b/adminforce/content/interfacedaten/webmasterlose.php @@ -0,0 +1,50 @@ +<? +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['betreiber'])) $_POST['betreiber'] = ''; +if (!isset($_POST['pass'])) $_POST['pass'] = ''; +if (!isset($_POST['seite'])) $_POST['seite'] = ''; +if (!isset($_POST['eigenverdienst'])) $_POST['eigenverdienst'] = ''; +if (!isset($_POST['min_verguetung'])) $_POST['min_verguetung'] = ''; +if (!isset($_POST['restklicks'])) $_POST['restklicks'] = ''; +if (!isset($_POST['umrechnung'])) $_POST['umrechnung'] = ''; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +db_query("UPDATE ".$db_prefix."_interface SET betreiber='".$_POST['betreiber']."', seite='".$_POST['seite']."',pass='".$_POST['pass']."', eigenverdienst='".$_POST['eigenverdienst']."', mindestverguetung='".$_POST['min_verguetung']."', restklicks='".$_POST['restklicks']."', umrechnung='".$_POST['umrechnung']."', aufendhalt='".$_POST['aufendhalt']."' WHERE interface='webmasterlose'"); +} + +$interface = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface='webmasterlose' LIMIT 1")); +?> +<? head("Interfacedaten (Webmasterlose.de)"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Betreiber-ID</td><td align="left"><input type="Text" name="betreiber" value="<?=$interface['betreiber'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Seiten-ID</td><td align="left"><input type="Text" name="seite" value="<?=$interface['seite'];?>" style="width:50px;"></td> +</tr> +<tr> +<td align="left">Schnittstellen Passwort</td><td align="left"><input type="Text" name="pass" value="<?=$interface['pass'];?>" style="width:150px;"></td> +</tr> +<tr> +<td align="left">Eigenverdienst in Prozent<br><i>Bitte Refverdienste bedenken</i></td><td align="left"><input type="Text" name="eigenverdienst" value="<?=$interface['eigenverdienst'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Mindestvergütung bei den Sponsoren<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="min_verguetung" value="<?=$interface['mindestverguetung'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Wieviel % sollen eingebucht werden?</td><td align="left"><input type="Text" name="restklicks" value="<?=$interface['restklicks'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="left">Umrechnung<br><i>Basierend auf die Sponsorenwährung</i></td><td align="left"><input type="Text" name="umrechnung" value="<?=$interface['umrechnung'];?>" style="width:50px;"> <b>Punkt statt Komma</b></td> +</tr> +<tr> +<td align="left">Aufendhalt in Sek. für den User</td><td align="left"><input type="Text" name="aufendhalt" value="<?=$interface['aufendhalt'];?>" style="width:50px;"> <b>Ganzzahlen</b></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="updaten" value="Updaten !"></td> +</tr> +</table> +</form> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/module.php b/adminforce/content/module.php new file mode 100644 index 0000000..6ed80bc --- /dev/null +++ b/adminforce/content/module.php @@ -0,0 +1,42 @@ +<? +$dir = '../module/'; + +if (is_dir($dir) && $dh = opendir($dir)) { + head ('Modulübersicht'); +?> +Sie sehen hier eine Auflistung aller verfügbaren Module. Um die Verwaltung der jeweiligen Module zu gelanden klicken Sie bitte auf das entsprechende Icon.<br /> +<br /> +<table width="100%" cellspacing=0 cellpadding=5 border=1 bordercolor="#4a4a4a" style="border-collapse: collapse;"> +<? + $i = 1; + while (($file = readdir ($dh)) !== false) { + if (is_dir ($dir.$file) && file_exists ($dir.$file.'/pref.ini') && $file != '.' && $file != '..') { + $modul = parse_ini_file ($dir.$file.'/pref.ini', TRUE); + $ico_endung = (file_exists ($dir.$file.'/icon.png')) ? 'png' : 'gif'; + if ($i == 1 || ( $i % 4 ) == 0) echo ' <tr>'."\n"; + echo ' <td width="25%" style="text-align: center;"><a href="javascript:ShowWindow(\'moduladmin.php?mod='.$file.'\');"><img src="'.$dir.$file.'/icon.'.$ico_endung.'" border="0" width="32" height="32" alt="" /><br />'.$modul['modul']['name'].'</a></td>'."\n"; + if ( ( ( $i + 1 ) % 4 ) == 0 ) echo ' </tr>'."\n"; + $i++; + } + } + closedir ($dh); + + $uebrig = ( ( $i -1 ) % 4 ); + if ( $uebrig != 0 ) { + for ($i=0;$i<(4-$uebrig);$i++) echo ' <td> </td>'."\n"; + echo ' </tr>'."\n"; + } ?> +</table> +<br /> +<br /> +<span style="font-weight: bold;">Nützlichens:</span><br /> +<a href="http://www.totaltoll.de/shop/docs/modulsystem.pdf" target="_blank">Manual zum Modulsystem (Für Entwickler, Mirror 1)</a><br /> +<a href="http://www.designerscripte.net/downloads/docs/modulsystem.pdf" target="_blank">Manual zum Modulsystem (Für Entwickler, Mirror 2)</a><br /> +<? + foot (); +} else { + head ('Fataler Fehler'); + echo 'Fehler: Modulverzeichnis '.$dir.' ist ungültig !'; + foot (); +} +?> \ No newline at end of file diff --git a/adminforce/content/newssystem/news.php b/adminforce/content/newssystem/news.php new file mode 100644 index 0000000..cb9f6c2 --- /dev/null +++ b/adminforce/content/newssystem/news.php @@ -0,0 +1,81 @@ +<? +if (!isset($titel)) $titel = ''; +if (!isset($news)) $news = ''; +if (!isset($id)) $id = '0'; +if (!isset($_POST['auffuehren'])) $_POST['auffuehren'] = '0'; +if (!isset($_POST['load'])) $_POST['load'] = '0'; +if (!isset($_POST['loader'])) $_POST['loader'] = ''; +if (!isset($_POST['newsletter'])) $_POST['newsletter'] = ''; + +if ($_POST['auffuehren'] == 'Ausführen') { + if ($_POST['id'] == 0 ){ + if ($_POST['art'] == 1 || $_POST['art'] == 2) db_query("INSERT INTO ".$db_prefix."_news (zeit,titel,news) VALUES ('".time()."','".$_POST['titel']."','".$_POST['news']."')"); + + if ($_POST['art'] == 1 || $_POST['art'] == 3) { + $empfaenger = db_query('SELECT emailadresse FROM '.$db_prefix.'_emaildaten WHERE freigabe_fuer = 1 OR freigabe_fuer = 3 GROUP BY emailadresse'); + while ($user = mysql_fetch_assoc($empfaenger)) usermail ($user['emailadresse'], $_POST['titel'], $_POST['news'], '"'.$seitenname.'" <'.$betreibermail.'>'); + } + } else db_query("UPDATE ".$db_prefix."_news SET titel='".$_POST['titel']."',news='".$_POST['news']." WHERE id='".$_POST['id']."'"); +} + +if ($_POST['load'] == 'Editieren') { + $edit = mysql_fetch_array(db_query("SELECT titel,news,id,zeit FROM ".$db_prefix."_news WHERE id=".(int)$_POST['loader']." LIMIT 1")); + $titel = $edit['titel']; + $news = $edit['news']; + $id = $edit['id']; +} + +if ($_POST['load'] == 'Löschen') { + db_query("DELETE FROM ".$db_prefix."_news WHERE id='".(int)$_POST['loader']."' LIMIT 1"); +} + +$old_news = db_query("SELECT * FROM ".$db_prefix."_news ORDER BY id DESC"); +?> + +<? +if (mysql_num_rows($old_news)){ +head("News editieren / löschen");?> +<form action="" method="post"> +<table> +<tr> + <td> + <select name="loader" size="1"> + <? + while ($load = mysql_fetch_array($old_news)) echo '<option value="'.$load['id'].'">('.$load['id'].') - '.$load['titel'].' ('.date("d.m.Y - H:i",$load['zeit']).')</option>'; + ?> + </select> + </td> + <td> + <input type="Submit" name="load" value="Editieren"> + </td> + <td> + <input type="Submit" name="load" value="Löschen"> + </td> +</tr> +</table> +</form> +<?foot(); +} +?> + +<?head("News schreiben");?> +<form action="" method="post"> +<div align="center"> +<b>Newstitel</b><br> +<input type="Text" name="titel" value="<?=$titel;?>"><br> +<br> +<b>News</b> <i>(HTML)</i><br> +<textarea name="news" style="width:500px; height:80px;"><?=$news;?></textarea><br> +<br> +<b>Art</b><br> +<select name="art"> + <option value="1">News + Newsletter</option> + <option value="2">News</option> + <option value="3">Newsletter</option> +</select> +<br> +<input type="Submit" name="auffuehren" value="Ausführen"> +<input type="Hidden" name="id" value="<?=$id;?>"> +</div> +</form> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/ralleysystem/aktiv.php b/adminforce/content/ralleysystem/aktiv.php new file mode 100644 index 0000000..f944f9e --- /dev/null +++ b/adminforce/content/ralleysystem/aktiv.php @@ -0,0 +1,255 @@ +<? +// Variabeln definieren +if (!isset($_POST['speichern'])) $_POST['speichern'] = ''; +if (!isset($_POST['reset'])) $_POST['reset'] = ''; +if (!isset($_POST['auswerten'])) $_POST['auswerten'] = ''; +$rp = 0; + +$ralleydaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_ralleydaten WHERE ralley='aktivralley' LIMIT 1")); + +// Ralleystand reseten +if ($_POST['reset'] == 'Reseten') { +db_query ("DELETE FROM ".$db_prefix."_aktivralley"); +} + +// Ralley auswerten +if ($_POST['auswerten'] == 'Auswerten') { +$platz = db_query("SELECT * FROM ".$db_prefix."_aktivralley WHERE punkte > '".$ralleydaten['pro']."' ORDER BY punkte DESC LIMIT ".$ralleydaten['plaetze'].""); + while ($pa = mysql_fetch_array($platz)) { + $rp++; + $buchungssumme = $ralleydaten['p'.$rp]; + // Buchungen durchführen + db_query("UPDATE ".$db_prefix."_aktivralley SET ausgezahlt = '".time()."' WHERE uid='".$pa['uid']."'"); + $buchungs_id = create_code(14); + kontobuchung ('+',$buchungssumme,$pa['uid']); + buchungsliste ($buchungs_id,'konto',$buchungssumme,'Aktivralley (Platz '.$rp.')',$pa['uid']); + bilanz (0,$buchungssumme); + } +} + +// Ralleydaten speichern +if ($_POST['speichern'] == 'Speichern') { +$ralleystart = strtotime("".$_POST['start_monat']."/".$_POST['start_tag']."/".$_POST['start_jahr']." ".$_POST['start_stunde']." hours ".$_POST['start_minute']." minutes 0 seconds"); +$ralleyende = strtotime("".$_POST['ende_monat']."/".$_POST['ende_tag']."/".$_POST['ende_jahr']." ".$_POST['ende_stunde']." hours ".$_POST['ende_minute']." minutes 0 seconds"); +db_query ("UPDATE ".$db_prefix."_ralleydaten SET start = '".$ralleystart."', ende = '".$ralleyende."', pro = '".$_POST['pro']."', plaetze = '".$_POST['plaetze']."', p1 = '".$_POST['p1']."', p2 = '".$_POST['p2']."', p3 = '".$_POST['p3']."', p4 = '".$_POST['p4']."', p5 = '".$_POST['p5']."', p6 = '".$_POST['p6']."', p7 = '".$_POST['p7']."', p8 = '".$_POST['p8']."', p9 = '".$_POST['p9']."', p10 = '".$_POST['p10']."' WHERE ralley = 'aktivralley'"); +} + +$ralleydaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_ralleydaten WHERE ralley='aktivralley' LIMIT 1")); +?> + +<?head("Aktivralley bearbeiten");?> +<form action="" method="post"> +<table cellpadding="2" cellspacing="2" border="0" align="center"> +<tr> +<td align="left" valign="middle"><b>Start der Ralley</b> (<i>HH/MM. - TT/MM/JJJJ</i>)</td> +<td align="left" valign="middle"> +<select name="start_stunde" size="1"> +<? +for($x=0;$x<24;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("H",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_minute" size="1"> +<? +for($x=0;$x<60;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("i",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + - +<select name="start_tag" size="1"> +<? +for($x=1;$x<32;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("d",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_monat" size="1"> +<? +for($x=1;$x<13;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("m",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_jahr" size="1"> +<? +for($x=2005;$x<2011;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("Y",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +</td> +</tr> +<tr> +<td align="right" valign="middle"><b>Ende der Ralley</b> (<i>HH/MM. - TT/MM/JJJJ</i>)</td> +<td align="left" valign="middle"> +<select name="ende_stunde" size="1"> +<? +for($x=0;$x<24;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("H",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_minute" size="1"> +<? +for($x=0;$x<60;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("i",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + - +<select name="ende_tag" size="1"> +<? +for($x=1;$x<32;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("d",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_monat" size="1"> +<? +for($x=1;$x<13;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("m",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_jahr" size="1"> +<? +for($x=2005;$x<2011;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("Y",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +</td> +</tr> +<tr> +<td align="left" valign="middle" colspan="2"> +<b>Anzahl der Plätze</b> +<select name="plaetze" size="1"> +<? +for($x=0;$x<11;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if ($ralleydaten['plaetze'] == $x) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + +<b>Punkte die User min. braucht</b> +<input type="Text" name="pro" value="<?=$ralleydaten['pro'];?>" style="width:100px;"> +</td> +</tr> +</table> +<br> +<table cellpadding="2" cellspacing="2" border="0" align="center"> +<tr> +<td align="center" valign="middle">Gewinn Platz 01</td> +<td align="center" valign="middle">Gewinn Platz 02</td> +<td align="center" valign="middle">Gewinn Platz 03</td> +<td align="center" valign="middle">Gewinn Platz 04</td> +<td align="center" valign="middle">Gewinn Platz 05</td> +</tr> +<tr> +<td align="center" valign="middle"><input type="Text" name="p1" value="<?=$ralleydaten['p1'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p2" value="<?=$ralleydaten['p2'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p3" value="<?=$ralleydaten['p3'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p4" value="<?=$ralleydaten['p4'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p5" value="<?=$ralleydaten['p5'];?>" style="width:80px;"></td> +</tr> +<tr> +<td align="center" valign="middle">Gewinn Platz 06</td> +<td align="center" valign="middle">Gewinn Platz 07</td> +<td align="center" valign="middle">Gewinn Platz 08</td> +<td align="center" valign="middle">Gewinn Platz 09</td> +<td align="center" valign="middle">Gewinn Platz 10</td> +</tr> +<tr> +<td align="center" valign="middle"><input type="Text" name="p6" value="<?=$ralleydaten['p6'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p7" value="<?=$ralleydaten['p7'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p8" value="<?=$ralleydaten['p8'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p9" value="<?=$ralleydaten['p9'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p10" value="<?=$ralleydaten['p10'];?>" style="width:80px;"></td> +</tr> +<tr> +<td align="center" valign="middle" colspan="5"><input type="Submit" name="speichern" value="Speichern" style="width:100px;"></td> +</tr> +</table> +</form> +<?foot();?> + +<?head("Platzierungen und Preise");?> +Dieses Aktivralley läuft von <b><?=date("d.m.Y - H:i:s",$ralleydaten['start']);?></b> bis <b><?=date("d.m.Y - H:i:s",$ralleydaten['ende']);?></b>.<br> +Für diese Ralley sind <b><?=number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung;?></b> ausgelobt die auf die Plätze <b>1</b> bis <b><?=$ralleydaten['plaetze'];?></b> verteilt werden. +<? if ($ralleydaten['pro'] > 0.00) { +echo 'Es müssen mindestens <b>'.number_format($ralleydaten['pro'],0,",",".").' Punkte</b> erreicht werden um gewertet zu werden'; +}?> +<br> +<br> +<table cellpadding="1" cellspacing="1" border="0" bgcolor="#c0c0c0" align="center"> +<tr bgcolor="#d0d0d0"> +<td align="center"> <b>User</b> </td> +<td align="center"> <b>Punkte</b> </td> +<td align="center"> <b>möglicher Gewinn</b> </td> +<td align="center"> <b>Ausgewertet</b> </td> +</tr> + +<? +$platz = db_query("SELECT * FROM ".$db_prefix."_aktivralley WHERE punkte > '".$ralleydaten['pro']."' ORDER BY punkte DESC LIMIT 10"); +while ($pa = mysql_fetch_array($platz)) { +$rp++; +$mg = number_format($ralleydaten['p'.$rp],2,",","."); +if ($rp > $ralleydaten['plaetze']) $mg = '----'; +if ($pa['ausgezahlt'] >= 1) {$ausg = date("d.m.Y - H:i:s",$pa['ausgezahlt']);} else {$ausg = '<b>Nein</b>';} +echo ' +<tr bgcolor="#f0f0f0"> +<td align="center">'.$pa['uid'].'</td> +<td align="right">'.number_format($pa['punkte'],2,",",".").' </td> +<td align="right">'.$mg.' </td> +<td align="center"> '.$ausg.' </td> +</tr> +'; +} +for($x=$rp+1;$x<11;$x++){ +$mg = number_format($ralleydaten['p'.$x],2,",","."); +if ($x > $ralleydaten['plaetze']) $mg = '----'; +if ($pa['ausgezahlt'] >= 1) {$ausg = date("d.m.Y - H:i:s",$pa['ausgezahlt']);} else {$ausg = '<b>Nein</b>';} +echo ' +<tr bgcolor="#f0f0f0"> +<td align="center">N/A</td> +<td align="right">0 </td> +<td align="right">'.$mg.' </td> +<td align="center"> '.$ausg.' </td> +</tr> +'; +} +?> +</table> +<br><br> +<div align="center"> +<form action="" method="POST"> +<input type="Submit" name="reset" value="Reseten"> + +<input type="Submit" name="auswerten" value="Auswerten"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/ralleysystem/klick.php b/adminforce/content/ralleysystem/klick.php new file mode 100644 index 0000000..d83586e --- /dev/null +++ b/adminforce/content/ralleysystem/klick.php @@ -0,0 +1,288 @@ +<? +// Variabeln definieren +if (!isset($_POST['speichern'])) $_POST['speichern'] = ''; +if (!isset($_POST['reset'])) $_POST['reset'] = ''; +if (!isset($_POST['auswerten'])) $_POST['auswerten'] = ''; +$rp = 0; + +$ralleydaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_ralleydaten WHERE ralley='klickralley' LIMIT 1")); + +// Ralleystand reseten +if ($_POST['reset'] == 'Reseten') { +db_query ("DELETE FROM ".$db_prefix."_klickralley"); +db_query ("UPDATE ".$db_prefix."_ralleydaten SET jackpot='0' WHERE ralley='klickralley'"); +} + +// Ralley auswerten +if ($_POST['auswerten'] == 'Auswerten') { +$platz = db_query("SELECT * FROM ".$db_prefix."_klickralley WHERE klicks >= 1 ORDER BY klicks DESC LIMIT ".$ralleydaten['plaetze'].""); + while ($pa = mysql_fetch_array($platz)) { + $rp++; + if ($ralleydaten['art'] == 'statisch') { + $buchungssumme = $ralleydaten['p'.$rp]; + } else { + $buchungssumme = $ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp]; + } + // Buchungen durchführen + db_query("UPDATE ".$db_prefix."_klickralley SET ausgezahlt = '".time()."' WHERE uid='".$pa['uid']."'"); + $buchungs_id = create_code(14); + kontobuchung ('+',$buchungssumme,$pa['uid']); + buchungsliste ($buchungs_id,'konto',$buchungssumme,'Klickralley (Platz '.$rp.')',$pa['uid']); + bilanz (0,$buchungssumme); + } +} + +// Ralleydaten speichern +if ($_POST['speichern'] == 'Speichern') { +$ralleystart = strtotime("".$_POST['start_monat']."/".$_POST['start_tag']."/".$_POST['start_jahr']." ".$_POST['start_stunde']." hours ".$_POST['start_minute']." minutes 0 seconds"); +$ralleyende = strtotime("".$_POST['ende_monat']."/".$_POST['ende_tag']."/".$_POST['ende_jahr']." ".$_POST['ende_stunde']." hours ".$_POST['ende_minute']." minutes 0 seconds"); +db_query ("UPDATE ".$db_prefix."_ralleydaten SET start = '".$ralleystart."', ende = '".$ralleyende."', art = '".$_POST['art']."', pro = '".$_POST['pro']."', plaetze = '".$_POST['plaetze']."', p1 = '".$_POST['p1']."', p2 = '".$_POST['p2']."', p3 = '".$_POST['p3']."', p4 = '".$_POST['p4']."', p5 = '".$_POST['p5']."', p6 = '".$_POST['p6']."', p7 = '".$_POST['p7']."', p8 = '".$_POST['p8']."', p9 = '".$_POST['p9']."', p10 = '".$_POST['p10']."' WHERE ralley = 'klickralley'"); +} + +$ralleydaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_ralleydaten WHERE ralley='klickralley' LIMIT 1")); +?> + +<?head("Klickralley bearbeiten");?> +<form action="" method="post"> +<table cellpadding="2" cellspacing="2" border="0" align="center"> +<tr> +<td align="left" valign="middle"><b>Start der Ralley</b> (<i>HH/MM. - TT/MM/JJJJ</i>)</td> +<td align="left" valign="middle"> +<select name="start_stunde" size="1"> +<? +for($x=0;$x<24;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("H",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_minute" size="1"> +<? +for($x=0;$x<60;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("i",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + - +<select name="start_tag" size="1"> +<? +for($x=1;$x<32;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("d",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_monat" size="1"> +<? +for($x=1;$x<13;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("m",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_jahr" size="1"> +<? +for($x=2005;$x<2011;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("Y",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +</td> +</tr> +<tr> +<td align="right" valign="middle"><b>Ende der Ralley</b> (<i>HH/MM. - TT/MM/JJJJ</i>)</td> +<td align="left" valign="middle"> +<select name="ende_stunde" size="1"> +<? +for($x=0;$x<24;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("H",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_minute" size="1"> +<? +for($x=0;$x<60;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("i",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + - +<select name="ende_tag" size="1"> +<? +for($x=1;$x<32;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("d",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_monat" size="1"> +<? +for($x=1;$x<13;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("m",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_jahr" size="1"> +<? +for($x=2005;$x<2011;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("Y",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +</td> +</tr> +<tr> +<td align="left" valign="middle" colspan="2"> +<b>Anzahl der Plätze</b> +<select name="plaetze" size="1"> +<? +for($x=0;$x<11;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if ($ralleydaten['plaetze'] == $x) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + +<b>Ralleyart</b> +<select name="art" size="1"> +<option value="statisch"<?if ($ralleydaten['art'] == 'statisch') echo' selected';?>>Statisch</option> +<option value="dynamisch"<?if ($ralleydaten['art'] == 'dynamisch') echo' selected';?>>Dynamisch</option> +</select> + +<b>Pro Klick</b> +<input type="Text" name="pro" value="<?=$ralleydaten['pro'];?>" style="width:50px;"> +</td> +</tr> +</table> +<br> +<table cellpadding="2" cellspacing="2" border="0" align="center"> +<tr> +<td align="center" valign="middle">Gewinn Platz 01</td> +<td align="center" valign="middle">Gewinn Platz 02</td> +<td align="center" valign="middle">Gewinn Platz 03</td> +<td align="center" valign="middle">Gewinn Platz 04</td> +<td align="center" valign="middle">Gewinn Platz 05</td> +</tr> +<tr> +<td align="center" valign="middle"><input type="Text" name="p1" value="<?=$ralleydaten['p1'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p2" value="<?=$ralleydaten['p2'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p3" value="<?=$ralleydaten['p3'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p4" value="<?=$ralleydaten['p4'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p5" value="<?=$ralleydaten['p5'];?>" style="width:80px;"></td> +</tr> +<tr> +<td align="center" valign="middle">Gewinn Platz 06</td> +<td align="center" valign="middle">Gewinn Platz 07</td> +<td align="center" valign="middle">Gewinn Platz 08</td> +<td align="center" valign="middle">Gewinn Platz 09</td> +<td align="center" valign="middle">Gewinn Platz 10</td> +</tr> +<tr> +<td align="center" valign="middle"><input type="Text" name="p6" value="<?=$ralleydaten['p6'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p7" value="<?=$ralleydaten['p7'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p8" value="<?=$ralleydaten['p8'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p9" value="<?=$ralleydaten['p9'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p10" value="<?=$ralleydaten['p10'];?>" style="width:80px;"></td> +</tr> +<tr> +<td align="center" valign="middle" colspan="5"><input type="Submit" name="speichern" value="Speichern" style="width:100px;"></td> +</tr> +</table> +</form> +<?foot();?> + +<?head("Platzierungen und Preise");?> +<? +if ($ralleydaten['art'] != 'statisch') { +echo' +<div align="left"> +Dieses Klickralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis <b>'.date("d.m.Y - H:i:s",$ralleydaten['ende']).'</b>.<br> +Dabei handelt es sich um eine dynamische Klickralley wo pro Klick <b>'.number_format($ralleydaten['pro'],2,",",".").' '.$waehrung.'</b> in den Jackpot fliesen. +Im Jackpot befinden sicher gerade <b>'.number_format($ralleydaten['jackpot'],2,",",".").' '.$waehrung.'</b> die wie unten aufgeführt auf die Plätze <b>1 +bis '.$ralleydaten['plaetze'].'</b> verteilt werden. +</div><br> +'; +} else { +echo' +<div align="left"> +Dieses Klickralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis <b>'.date("d.m.Y - H:i:s",$ralleydaten['ende']).'</b>.<br> +Für diese Klickralley sind <b>'.number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung.'</b> ausgelobt und werden wie unten angezeigt auf die +Plätze <b>1</b> bis <b>'.$ralleydaten['plaetze'].'</b> verteilt. +</div><br> +'; +} +?> +<table cellpadding="1" cellspacing="1" border="0" bgcolor="#c0c0c0" align="center"> +<tr bgcolor="#d0d0d0"> +<td align="center"> <b>User</b> </td> +<td align="center"> <b>Klicks</b> </td> +<td align="center"> <b>möglicher Gewinn</b> </td> +<td align="center"> <b>Ausgewertet</b> </td> +</tr> + +<? +$platz = db_query("SELECT * FROM ".$db_prefix."_klickralley ORDER BY klicks DESC LIMIT 10"); +while ($pa = mysql_fetch_array($platz)) { +$rp++; +if ($ralleydaten['art'] == 'statisch') { +$mg = number_format($ralleydaten['p'.$rp],2,",","."); +} else { +$mg = number_format($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp],2,",","."); +} +if ($rp > $ralleydaten['plaetze']) $mg = '----'; +if ($pa['ausgezahlt'] >= 1) {$ausg = date("d.m.Y - H:i:s",$pa['ausgezahlt']);} else {$ausg = '<b>Nein</b>';} +echo ' +<tr bgcolor="#f0f0f0"> +<td align="center">'.$pa['uid'].'</td> +<td align="right">'.number_format($pa['klicks'],0,",",".").' </td> +<td align="right">'.$mg.' </td> +<td align="center"> '.$ausg.' </td> +</tr> +'; +} +for($x=$rp+1;$x<11;$x++){ +if ($ralleydaten['art'] == 'statisch') { +$mg = number_format($ralleydaten['p'.$x],2,",","."); +} else { +$mg = number_format($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$x],2,",","."); +} +if ($x > $ralleydaten['plaetze']) $mg = '----'; +if ($pa['ausgezahlt'] >= 1) {$ausg = date("d.m.Y - H:i:s",$pa['ausgezahlt']);} else {$ausg = '<b>Nein</b>';} +echo ' +<tr bgcolor="#f0f0f0"> +<td align="center">N/A</td> +<td align="right">0 </td> +<td align="right">'.$mg.' </td> +<td align="center"> '.$ausg.' </td> +</tr> +'; +} +?> +</table> +<br><br> +<form action="" method="POST"> +<div align="center"> +<input type="Submit" name="reset" value="Reseten"> + +<input type="Submit" name="auswerten" value="Auswerten"> +</div> +</form> +<?foot();?> + diff --git a/adminforce/content/ralleysystem/ref.php b/adminforce/content/ralleysystem/ref.php new file mode 100644 index 0000000..957c8f7 --- /dev/null +++ b/adminforce/content/ralleysystem/ref.php @@ -0,0 +1,271 @@ +<? +// Variabeln definieren +if (!isset($_POST['speichern'])) $_POST['speichern'] = ''; +if (!isset($_POST['auswerten'])) $_POST['auswerten'] = ''; +if (!isset($rp)) $rp = ""; +if (!isset($rpy)) $rpy = ""; +if (!isset($count)) $count = ""; +if (!isset($platz1)) $platz1 = ""; +if (!isset($platz2)) $platz2 = ""; +if (!isset($platz3)) $platz3 = ""; +if (!isset($platz4)) $platz4 = ""; +if (!isset($platz5)) $platz5 = ""; +if (!isset($platz6)) $platz6 = ""; +if (!isset($platz7)) $platz7 = ""; +if (!isset($platz8)) $platz8 = ""; +if (!isset($platz9)) $platz9 = ""; +if (!isset($platz10)) $platz10 = ""; + +if ($_POST['speichern'] == 'Speichern') { +$ralleystart = strtotime("".$_POST['start_monat']."/".$_POST['start_tag']."/".$_POST['start_jahr']." ".$_POST['start_stunde']." hours ".$_POST['start_minute']." minutes 0 seconds"); +$ralleyende = strtotime("".$_POST['ende_monat']."/".$_POST['ende_tag']."/".$_POST['ende_jahr']." ".$_POST['ende_stunde']." hours ".$_POST['ende_minute']." minutes 0 seconds"); +db_query ("UPDATE ".$db_prefix."_ralleydaten SET start = '".$ralleystart."', ende = '".$ralleyende."', pro = '".$_POST['pro']."', plaetze = '".$_POST['plaetze']."', p1 = '".$_POST['p1']."', p2 = '".$_POST['p2']."', p3 = '".$_POST['p3']."', p4 = '".$_POST['p4']."', p5 = '".$_POST['p5']."', p6 = '".$_POST['p6']."', p7 = '".$_POST['p7']."', p8 = '".$_POST['p8']."', p9 = '".$_POST['p9']."', p10 = '".$_POST['p10']."' WHERE ralley = 'refralley'"); +} + +$ralleydaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_ralleydaten WHERE ralley='refralley' LIMIT 1")); + +$refs = mysql_query("SELECT werber , COUNT(werber)AS total FROM ".$db_prefix."_werberdaten WHERE werber != 0 and zuordnungszeit >= '".$ralleydaten['start']."' and zuordnungszeit <= '".$ralleydaten['ende']."' and gesamt >= '".$ralleydaten['pro']."' GROUP BY werber ORDER BY total DESC LIMIT 10"); +$count = 1; +while ($row = mysql_fetch_array($refs)) { +$user = mysql_fetch_array(mysql_query("SELECT uid FROM ".$db_prefix."_kontodaten WHERE `uid`='$row[0]'")); +if ($count == 1) {$users[1] = $user[0]; $ref[1] = $row[1];} +if ($count == 2) {$users[2] = $user[0]; $ref[2] = $row[1];} +if ($count == 3) {$users[3] = $user[0]; $ref[3] = $row[1];} +if ($count == 4) {$users[4] = $user[0]; $ref[4] = $row[1];} +if ($count == 5) {$users[5] = $user[0]; $ref[5] = $row[1];} +if ($count == 6) {$users[6] = $user[0]; $ref[6] = $row[1];} +if ($count == 7) {$users[7] = $user[0]; $ref[7] = $row[1];} +if ($count == 8) {$users[8] = $user[0]; $ref[8] = $row[1];} +if ($count == 9) {$users[9] = $user[0]; $ref[9] = $row[1];} +if ($count == 10) {$users[10] = $user[0]; $ref[10] = $row[1];} +$count = $count + 1; +} + +// Ralley auswerten +if ($_POST['auswerten'] == 'Auswerten') { + for($y=1;$y<11;$y++){ + $rpy++; + if (!isset($users[$rpy])) $users[$rpy] = "0"; + if (!isset($ref[$rpy])) $ref[$rpy] = "0"; + if ($ref[$rpy] != 0 and $users[$rpy] != 0) { + // Buchungen durchführen + $buchungs_id = create_code(14); + kontobuchung ('+',$ralleydaten['p'.$rpy],$users[$rpy]); + buchungsliste ($buchungs_id,'konto',$ralleydaten['p'.$rpy],'Refralley (Platz '.$rpy.')',$users[$rpy]); + bilanz (0,$ralleydaten['p'.$rpy]); + } + } +} +?> + +<?head("Refralley bearbeiten");?> +<form action="" method="post"> +<table cellpadding="2" cellspacing="2" border="0" align="center"> +<tr> +<td align="left" valign="middle"><b>Start der Ralley</b> (<i>HH/MM. - TT/MM/JJJJ</i>)</td> +<td align="left" valign="middle"> +<select name="start_stunde" size="1"> +<? +for($x=0;$x<24;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("H",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_minute" size="1"> +<? +for($x=0;$x<60;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("i",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + - +<select name="start_tag" size="1"> +<? +for($x=1;$x<32;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("d",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_monat" size="1"> +<? +for($x=1;$x<13;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("m",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="start_jahr" size="1"> +<? +for($x=2005;$x<2011;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("Y",$ralleydaten['start']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +</td> +</tr> +<tr> +<td align="right" valign="middle"><b>Ende der Ralley</b> (<i>HH/MM. - TT/MM/JJJJ</i>)</td> +<td align="left" valign="middle"> +<select name="ende_stunde" size="1"> +<? +for($x=0;$x<24;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("H",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_minute" size="1"> +<? +for($x=0;$x<60;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("i",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + - +<select name="ende_tag" size="1"> +<? +for($x=1;$x<32;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("d",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_monat" size="1"> +<? +for($x=1;$x<13;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("m",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +<select name="ende_jahr" size="1"> +<? +for($x=2005;$x<2011;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if (date("Y",$ralleydaten['ende']) == $y) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> +</td> +</tr> +<tr> +<td align="left" valign="middle" colspan="2"> +<b>Anzahl der Plätze</b> +<select name="plaetze" size="1"> +<? +for($x=0;$x<11;$x++){ +if ($x <= 9) {$y = '0'.$x;} else {$y = $x;} +if ($ralleydaten['plaetze'] == $x) {$select = ' selected';} else {$select = '';} +echo '<option value="'.$x.'"'.$select.'>'.$y.'</option>'; +} +?> +</select> + +<b>Punkte die Ref min. braucht</b> +<input type="Text" name="pro" value="<?=$ralleydaten['pro'];?>" style="width:100px;"> +</td> +</tr> +</table> +<br> +<table cellpadding="2" cellspacing="2" border="0" align="center"> +<tr> +<td align="center" valign="middle">Gewinn Platz 01</td> +<td align="center" valign="middle">Gewinn Platz 02</td> +<td align="center" valign="middle">Gewinn Platz 03</td> +<td align="center" valign="middle">Gewinn Platz 04</td> +<td align="center" valign="middle">Gewinn Platz 05</td> +</tr> +<tr> +<td align="center" valign="middle"><input type="Text" name="p1" value="<?=$ralleydaten['p1'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p2" value="<?=$ralleydaten['p2'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p3" value="<?=$ralleydaten['p3'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p4" value="<?=$ralleydaten['p4'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p5" value="<?=$ralleydaten['p5'];?>" style="width:80px;"></td> +</tr> +<tr> +<td align="center" valign="middle">Gewinn Platz 06</td> +<td align="center" valign="middle">Gewinn Platz 07</td> +<td align="center" valign="middle">Gewinn Platz 08</td> +<td align="center" valign="middle">Gewinn Platz 09</td> +<td align="center" valign="middle">Gewinn Platz 10</td> +</tr> +<tr> +<td align="center" valign="middle"><input type="Text" name="p6" value="<?=$ralleydaten['p6'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p7" value="<?=$ralleydaten['p7'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p8" value="<?=$ralleydaten['p8'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p9" value="<?=$ralleydaten['p9'];?>" style="width:80px;"></td> +<td align="center" valign="middle"><input type="Text" name="p10" value="<?=$ralleydaten['p10'];?>" style="width:80px;"></td> +</tr> +<tr> +<td align="center" valign="middle" colspan="5"><input type="Submit" name="speichern" value="Speichern" style="width:100px;"></td> +</tr> +</table> +</form> +<?foot();?> + +<?head("Platzierungen und Preise");?> +<? if ($ralleydaten['ende']<= time()) echo '<font color="#000000">'; ?> +<? if ($ralleydaten['start']>= time()) echo '<font color="#000000">'; ?> +<? +echo' +<div align="left"> +Dieses Refralley läuft von <b>'.date("d.m.Y - H:i:s",$ralleydaten['start']).'</b> bis <b>'.date("d.m.Y - H:i:s",$ralleydaten['ende']).'</b>.<br> +Für diese Refralley sind <b>'.number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung.'</b> ausgelobt und werden wie unten angezeigt auf die +Plätze <b>1</b> bis <b>'.$ralleydaten['plaetze'].'</b> verteilt. +<br> +<br> +</div> +'; +if ($ralleydaten['pro'] == 0) { +echo '<div align="center"><b>Es werden alle Refs gezählt!</b></div>'; +} else { +echo '<div align="center"><b>Es werden nur Refs gezählt ab '.number_format($ralleydaten['pro'],2,',','.').' '.$waehrung.' Umsatz!</b></div><br>'; +} +?> +<br> +<table width="70%" cellpadding="1" cellspacing="1" border="0" bgcolor="#c0c0c0" align="center"> +<tr bgcolor="#d0d0d0"> +<td align="center"><b>Platz</b></td> +<td align="center"><b>User</b></td> +<td align="center"><b>Refs</b></td> +<td align="center"><b>Gewinn</b></td> +</tr> +<? +for($x=1;$x<11;$x++){ +$rp++; +if (!isset($users[$rp])) $users[$rp] = "N/A"; +if (!isset($ref[$rp])) $ref[$rp] = "0"; +?> +<tr bgcolor="#f0f0f0"> +<td align="center"><b><?=$x;?></b></td> +<td align="center"><b><?=$users[$rp];?></b></td> +<td align="center"><b><?=$ref[$rp];?></b></td> +<td align="center"><b><?=number_format($ralleydaten['p'.$rp],0,',','.');?></b></td> +</tr> +<? +} +?> +</table> +<br><br> +<form action="" method="POST"> +<div align="center"> +<input type="Submit" name="auswerten" value="Auswerten"> +</div> +</form> +<?foot();?> + diff --git a/adminforce/content/startseite.php b/adminforce/content/startseite.php new file mode 100644 index 0000000..42e2f9c --- /dev/null +++ b/adminforce/content/startseite.php @@ -0,0 +1,31 @@ +<table width="100%" cellpadding="0" cellspacing="0" border="0"><tr> +<td width="100%" valign="top"> +<?head("Userstatistik");?> +<? +$kontostats = mysql_fetch_array(db_query("SELECT COUNT(uid) AS kd_uid , SUM(kontostand) AS kd_kontostand FROM ".$db_prefix."_kontodaten")); +?> +<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#c0c0c0"> +<tr bgcolor="#f0f0f0"> + <td width="55%">Angemeldete User</td> + <td align="right"><?=@number_format($kontostats['kd_uid'],0,",",".");?> </td> +</tr> +<tr bgcolor="#f5f5f5"> + <td>Gesamtguthaben</td> + <td align="right"><?=@number_format($kontostats['kd_kontostand'],2,",",".");?> </td> +</tr> +<tr bgcolor="#f0f0f0"> + <td width="55%">Guth. pro User</td> + <td align="right"><?=@number_format($kontostats['kd_kontostand'] / $kontostats['kd_uid'],2,",",".");?> </td> +</tr> +</table> +<?foot();?> +</td> +</tr></table> + + +<?head("VMS Links");?> +» <a href="http://www.designerscripte.net/in.php?to=home" target="_blank">VMS Supportforum</a><br> +» <a href="http://www.designerscripte.net/in.php?to=dl" target="_blank">VMS Downloads</a><br> +<?foot();?> + + diff --git a/adminforce/content/texte/agb.php b/adminforce/content/texte/agb.php new file mode 100644 index 0000000..a9115b0 --- /dev/null +++ b/adminforce/content/texte/agb.php @@ -0,0 +1,29 @@ +<? +// Variabeln +$filename = '../lib/texte/agb.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['text'])) $_POST['text'] = ''; + +// Datei schreiben +if ($_POST['updaten'] == 'Updaten !') { +$_POST['text'] = str_replace('\\', '', $_POST['text']); +$fp = fopen ($filename, "w"); +fwrite ($fp, $_POST['text']); +fclose ($fp); +} + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = @fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("AGB's bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<textarea name="text" style="width:500px; height:300px;"><?=$inhalt;?></textarea><br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/texte/aktivralley.php b/adminforce/content/texte/aktivralley.php new file mode 100644 index 0000000..0734ccd --- /dev/null +++ b/adminforce/content/texte/aktivralley.php @@ -0,0 +1,29 @@ +<? +// Variabeln +$filename = '../lib/texte/aktivralley.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['text'])) $_POST['text'] = ''; + +// Datei schreiben +if ($_POST['updaten'] == 'Updaten !') { +$_POST['text'] = str_replace('\\', '', $_POST['text']); +$fp = fopen ($filename, "w"); +fwrite ($fp, $_POST['text']); +fclose ($fp); +} + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = @fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("Aktivralleyeinleitung bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<textarea name="text" style="width:500px; height:300px;"><?=$inhalt;?></textarea><br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/texte/alternativwerbung.php b/adminforce/content/texte/alternativwerbung.php new file mode 100644 index 0000000..700bd45 --- /dev/null +++ b/adminforce/content/texte/alternativwerbung.php @@ -0,0 +1,100 @@ +<? +// Variabeln +$alt_head = '../lib/texte/alt_headerbanner.txt'; +$alt_pops = '../lib/texte/alt_bettelseitenpopup.txt'; +$alt_start = '../lib/texte/alt_startseitenpopup.txt'; +$alt_bettel = '../lib/texte/bettelwerbung.txt'; +$alt_box1 = '../lib/texte/box1.txt'; +$alt_box2 = '../lib/texte/box2.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; + +if ($_POST['updaten'] == 'Updaten !') { +// Alternativ Header schreiben +$_POST['head'] = str_replace('\\', '', $_POST['head']); +$fp = @fopen ($alt_head, "w"); +fwrite ($fp, $_POST['head']); +fclose ($fp); +// Alternativ Popups schreiben +$_POST['pops'] = str_replace('\\', '', $_POST['pops']); +$fp = @fopen ($alt_pops, "w"); +fwrite ($fp, $_POST['pops']); +fclose ($fp); +// Alternativ Start-Popups schreiben +$_POST['start'] = str_replace('\\', '', $_POST['start']); +$fp = @fopen ($alt_start, "w"); +fwrite ($fp, $_POST['start']); +fclose ($fp); +// Bettelseite Werbung schreiben +$_POST['bettelwerbung'] = str_replace('\\', '', $_POST['bettelwerbung']); +$fp = @fopen ($alt_bettel, "w"); +fwrite ($fp, $_POST['bettelwerbung']); +fclose ($fp); +// Box 1 schreiben +$_POST['box1'] = str_replace('\\', '', $_POST['box1']); +$fp = @fopen ($alt_box1, "w"); +fwrite ($fp, $_POST['box1']); +fclose ($fp); +// Box 2 schreiben +$_POST['box2'] = str_replace('\\', '', $_POST['box2']); +$fp = @fopen ($alt_box2, "w"); +fwrite ($fp, $_POST['box2']); +fclose ($fp); +} + +// Dateien auslesen +$fp = fopen ($alt_head, "r"); +$head = @fread ($fp, filesize ($alt_head)); +fclose ($fp); +$head = str_replace('\\', '', $head); +// +$fp = fopen ($alt_pops, "r"); +$pops = @fread ($fp, filesize ($alt_pops)); +fclose ($fp); +$pops = str_replace('\\', '', $pops); +// +$fp = fopen ($alt_start, "r"); +$start = @fread ($fp, filesize ($alt_start)); +fclose ($fp); +$start = str_replace('\\', '', $start); +// Bettelwerbung Banner +$fp = fopen ($alt_bettel, "r"); +$binhalt = @fread ($fp, filesize ($alt_bettel)); +fclose ($fp); +$binhalt = str_replace('\\', '', $binhalt); +// Box 1 +$fp = fopen ($alt_box1, "r"); +$box1 = @fread ($fp, filesize ($alt_box1)); +fclose ($fp); +$box1 = str_replace('\\', '', $box1); +// Box 2 +$fp = fopen ($alt_box2, "r"); +$box2 = @fread ($fp, filesize ($alt_box2)); +fclose ($fp); +$box2 = str_replace('\\', '', $box2); +?> + +<?head("Alternativwerbung bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<b>Headerwerbung (Banner)</b><br> +<textarea name="head" style="width:500px; height:120px;"><?=$head;?></textarea><br> +<br> +<b>Startseitenpopup</b><br> +<textarea name="start" style="width:500px; height:120px;"><?=$start;?></textarea><br> +<br> +<b>Bettelseitenpopup</b><br> +<textarea name="pops" style="width:500px; height:120px;"><?=$pops;?></textarea><br> +<br> +<b>Bettelwerbung</b><br> +<textarea name="bettelwerbung" style="width:500px; height:120px;"><?=$binhalt;?></textarea><br> +<br> +<b>Menübox I</b><br> +<textarea name="box1" style="width:500px; height:120px;"><?=$box1;?></textarea><br> +<br> +<b>Menübox II</b><br> +<textarea name="box2" style="width:500px; height:120px;"><?=$box2;?></textarea><br> +<br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/texte/faq.php b/adminforce/content/texte/faq.php new file mode 100644 index 0000000..807631f --- /dev/null +++ b/adminforce/content/texte/faq.php @@ -0,0 +1,29 @@ +<? +// Variabeln +$filename = '../lib/texte/faq.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['text'])) $_POST['text'] = ''; + +// Datei schreiben +if ($_POST['updaten'] == 'Updaten !') { +$_POST['text'] = str_replace('\\', '', $_POST['text']); +$fp = fopen ($filename, "w"); +fwrite ($fp, $_POST['text']); +fclose ($fp); +} + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = @fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("FAQ's bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<textarea name="text" style="width:500px; height:300px;"><?=$inhalt;?></textarea><br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> diff --git a/adminforce/content/texte/klickralley.php b/adminforce/content/texte/klickralley.php new file mode 100644 index 0000000..7c96376 --- /dev/null +++ b/adminforce/content/texte/klickralley.php @@ -0,0 +1,29 @@ +<? +// Variabeln +$filename = '../lib/texte/klickralley.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['text'])) $_POST['text'] = ''; + +// Datei schreiben +if ($_POST['updaten'] == 'Updaten !') { +$_POST['text'] = str_replace('\\', '', $_POST['text']); +$fp = fopen ($filename, "w"); +fwrite ($fp, $_POST['text']); +fclose ($fp); +} + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = @fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("Klickralleyeinleitung bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<textarea name="text" style="width:500px; height:300px;"><?=$inhalt;?></textarea><br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/texte/refralley.php b/adminforce/content/texte/refralley.php new file mode 100644 index 0000000..2aad6ca --- /dev/null +++ b/adminforce/content/texte/refralley.php @@ -0,0 +1,29 @@ +<? +// Variabeln +$filename = '../lib/texte/refralley.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['text'])) $_POST['text'] = ''; + +// Datei schreiben +if ($_POST['updaten'] == 'Updaten !') { +$_POST['text'] = str_replace('\\', '', $_POST['text']); +$fp = fopen ($filename, "w"); +fwrite ($fp, $_POST['text']); +fclose ($fp); +} + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = @fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("Refralleyeinleitung bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<textarea name="text" style="width:500px; height:300px;"><?=$inhalt;?></textarea><br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/texte/wartung.php b/adminforce/content/texte/wartung.php new file mode 100644 index 0000000..5d95e26 --- /dev/null +++ b/adminforce/content/texte/wartung.php @@ -0,0 +1,29 @@ +<? +// Variabeln +$filename = '../lib/texte/wartung.txt'; +if (!isset($_POST['updaten'])) $_POST['updaten'] = ''; +if (!isset($_POST['text'])) $_POST['text'] = ''; + +// Datei schreiben +if ($_POST['updaten'] == 'Updaten !') { +$_POST['text'] = str_replace('\\', '', $_POST['text']); +$fp = fopen ($filename, "w"); +fwrite ($fp, $_POST['text']); +fclose ($fp); +} + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = @fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("Wartungstext bearbeiten (html erlaubt!)");?> +<div align="center"> +<form action="" method="post"> +<textarea name="text" style="width:500px; height:300px;"><?=$inhalt;?></textarea><br> +<input type="Submit" name="updaten" value="Updaten !"> +</form> +</div> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/usersystem/buchungen.php b/adminforce/content/usersystem/buchungen.php new file mode 100644 index 0000000..2b9d029 --- /dev/null +++ b/adminforce/content/usersystem/buchungen.php @@ -0,0 +1,27 @@ +<?head("Buchungsübersicht - Konto ".$_GET['uid']);?> +<table border="0" width="100%" cellpadding="0" cellspacing="1" bgcolor="#303030"> +<tr bgcolor="#f2f2f2"> +<td align="center"><b>Buchungs Id</b></td> +<td align="center"><b>Datum</b></td> +<td align="center"><b>Zeit</b></td> +<td align="center"><b>FuCos</b></td> +<td align="center"><b>Verwendungszweck</b></td> +</tr> +<? +$buchungen_lesen = db_query("SELECT * FROM ".$db_prefix."_buchungen WHERE uid=".$_GET['uid']." ORDER BY buchungszeit DESC LIMIT 250"); +while ($buchung_schreiben = mysql_fetch_array($buchungen_lesen)) { +$buchcolor = '#000000'; +if ($buchung_schreiben['buchungsmenge'] < 0) $buchcolor='#cc0000'; +?> +<tr bgcolor="#fafafa"> +<td align="left"> <?=$buchung_schreiben['buchungs_id'];?></td> +<td align="center"> <?=date("d.m.Y",$buchung_schreiben['buchungszeit']);?> </td> +<td align="center"> <?=date("H:i",$buchung_schreiben['buchungszeit']);?> </td> +<td align="right"> <font color="<?=$buchcolor;?>"><?=number_format($buchung_schreiben['buchungsmenge'],2,",",".");?></font> </td> +<td align="left"> <?=$buchung_schreiben['verwendungszweck'];?></td> +</tr> +<? +} +?> +</table> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/usersystem/doppelaccis.php b/adminforce/content/usersystem/doppelaccis.php new file mode 100644 index 0000000..94331ff --- /dev/null +++ b/adminforce/content/usersystem/doppelaccis.php @@ -0,0 +1,83 @@ +<?head("Doppelte IP Adressen");?> +<table border="0" width="100%"> +<tr> + <td align="center"><b>Anzahl</b></td> + <td align="center"><b>IP-Adresse</b></td> +</tr> +<? +$sql = db_query("SELECT `login_ip`, COUNT(*) AS `anzahl` FROM `".$db_prefix."_kontodaten` GROUP BY `login_ip` HAVING COUNT(*) > 1 ORDER BY COUNT(*) DESC") or die(mysql_error()); +if (!mysql_num_rows($sql)){ + echo ' + <tr> + <td colspan="2" align="center"><font color="green">Keine Doppelten IP-Adressen im System</font></td> + </tr>'; +}else{ + while ($fake1 = mysql_fetch_assoc($sql)){ + echo ' + <tr> + <td>'.$fake1['anzahl'].'</td> + <td><a href="?content=/usersystem/doppelaccis&ip='.$fake1['login_ip'].'">'.$fake1['login_ip'].'</a></td> + </tr> + '; + } +} +?> +</table> +<? +if($_GET['ip']){ +$ip = db_query("SELECT k.uid,u.nickname FROM + ".$db_prefix."_kontodaten AS k + LEFT JOIN ".$db_prefix."_userdaten AS u ON u.uid=k.uid +WHERE k.login_ip='".addslashes($_GET['ip'])."'"); + + echo "<p>User mit der IP ".$_GET['ip'].":</p>"; + while($doppelt = mysql_fetch_assoc($ip)){ + echo "<a href='?content=/usersystem/userbearbeiten&uid=".$doppelt['uid']."'>".$doppelt['nickname']."</a><br>"; + } +} + +foot();?> + + + +<?head("Doppelte Passwörter");?> +<table border="0" width="100%"> +<tr> + <td align="center"><b>Anzahl</b></td> + <td align="center"><b>md5Hash</b></td> +</tr> +<? +$sql2 = db_query("SELECT `passwort`, COUNT(*) AS `anzahl` FROM `".$db_prefix."_kontodaten` GROUP BY `passwort` HAVING COUNT(*) > 1 ORDER BY COUNT(*) DESC") or die(mysql_error()); +if (!mysql_num_rows($sql)){ + echo ' + <tr> + <td colspan="2" align="center"><font color="green">Keine Doppelten Passwörter im System</font></td> + </tr>'; +}else{ + while ($fake2= mysql_fetch_assoc($sql2)){ + echo ' + <tr> + <td>'.$fake2['anzahl'].'</td> + <td><a href="?content=/usersystem/doppelaccis&md5='.$fake2['passwort'].'">'.$fake2['passwort'].'</a></td> + </tr> + '; + } +} + +?> +</table> + +<? +if($_GET['md5']){ +$md5 = db_query("SELECT k.uid,u.nickname FROM + ".$db_prefix."_kontodaten AS k + LEFT JOIN ".$db_prefix."_userdaten AS u ON u.uid=k.uid +WHERE k.passwort='".addslashes($_GET['md5'])."'"); + + echo "<p>User mit dem Passworthash ".$_GET['md5'].":</p>"; + while($doppelt = mysql_fetch_assoc($md5)){ + echo "<a href='?content=/usersystem/userbearbeiten&uid=".$doppelt['uid']."'>".$doppelt['nickname']."</a><br>"; + } +} + +foot();?> \ No newline at end of file diff --git a/adminforce/content/usersystem/liste.php b/adminforce/content/usersystem/liste.php new file mode 100644 index 0000000..03c0bf4 --- /dev/null +++ b/adminforce/content/usersystem/liste.php @@ -0,0 +1,42 @@ +<? +$gfx_status[0] = '<img src="images/gelb.gif" width="15" height="15" border="0" alt="Nicht freigeschaltet">'; +$gfx_status[1] = '<img src="images/gruen.gif" width="15" height="15" border="0" alt="O.K.">'; +$gfx_status[2] = '<img src="images/rot.gif" width="15" height="15" border="0" alt="Gesperrt">'; + +head("Userliste"); ?> +<table border="0" cellpadding="3" cellspacing="0" width="100%"> +<tr class="tr_head"> + <td align="center"></td> + <td align="center"><b>UID</b></td> + <td align="center"><b>Kontostand</b></td> + <td align="center"><b>Nickname</b></td> + <td align="center"><b>Name</b></td> + <td align="center"><b>Emailadresse</b></td> + <td align="center"><b>Angemeldet</b></td> +</tr> +<? +$userliste = db_query("SELECT k.uid,k.status,k.kontostand,u.nickname,u.vorname,u.angemeldet_seit,e.emailadresse + FROM ".$db_prefix."_kontodaten AS k + LEFT JOIN ".$db_prefix."_userdaten AS u ON u.uid=k.uid + LEFT JOIN ".$db_prefix."_emaildaten AS e ON e.uid=k.uid +ORDER BY k.uid ASC"); + +while ($ausgabe = mysql_fetch_array($userliste)) { +$i++; +$row = ($i % 2 == 0) ? 0 : 1; + +echo' +<tr class="tr_row'.$row.'"> + <td align="center"><a href="?content=/usersystem/userbearbeiten&uid='.$ausgabe['uid'].'" target="_self">'.$gfx_status[$ausgabe['status']].'</a></td> + <td align="center"><a href="../?content=/nickpage&id='.$ausgabe['uid'].'" target="_blank">'.$ausgabe['uid'].'</a></td> + <td align="center">'.number_format($ausgabe['kontostand'],2,",",".").'</td> + <td align="center">'.$ausgabe['nickname'].'</td> + <td align="center">'.$ausgabe['vorname'].' '.$ausgabe['nachname'].'</td> + <td align="center"><a href="mailto:'.$ausgabe['emailadresse'].'">Mail</a></td> + <td align="center">'.date("d.m.y - H:i",$ausgabe['angemeldet_seit']).'</td> +</tr> +'; +} +?> +</table> +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/usersystem/userbearbeiten.php b/adminforce/content/usersystem/userbearbeiten.php new file mode 100644 index 0000000..abe9f03 --- /dev/null +++ b/adminforce/content/usersystem/userbearbeiten.php @@ -0,0 +1,263 @@ +<? +// Variable _GET['uid'] pruefen +if (!empty ($_GET['uid'])) $_POST['uid'] = $_GET['uid']; +$_POST['uid'] = (int)$_POST['uid']; +if (empty ($_POST['uid'])) die ('Keine korrekte User-ID übergeben!'); + +// Allgemeine Daten speichern +if (isset ($_POST['profile'])) { + db_query ('UPDATE '.$db_prefix.'_userdaten SET vorname = "'.$_POST['vorname'].'", nachname = "'.$_POST['nachname'].'" WHERE uid = '.$_POST['uid']); + db_query ('UPDATE '.$db_prefix.'_emaildaten SET emailadresse = "'.$_POST['emailadresse'].'", freigabe_fuer = "'.$_POST['freigabe_fuer'].'" WHERE uid = '.$_POST['uid']); + if ($_POST['werber'] != $_POST['alt_werber'] && $_POST['werber'] != $_POST['uid']) db_query ('UPDATE '.$db_prefix.'_werberdaten SET werber = "'.$_POST['werber'].'", umsatz = 0, zuordnungszeit = 0, reset = 0, resetzeit = 0, gesamt = 0, refback = 0, aktivzeit = 0 WHERE uid = '.$_POST['uid']); +} + +// Betrag verbuchen +if (isset ($_POST['finanze'])) { + if ($_POST['buchungssumme'] > 0 && $_POST['buchungssumme']) { + $buchungs_id = create_code (14); + buchungsliste ($buchungs_id, $_POST['buchungsart'].$_POST['buchungssumme'], $_POST['buchungstext'].' (Admin)', $_POST['uid']); + kontobuchung ($_POST['buchungsart'], $_POST['buchungssumme'], $_POST['uid']); + +if ($_POST['art'] == '+'){ +$ausgabe = $_POST['buchungsmenge']; +}else{ +$einnahme = $_POST['buchungsmenge']; +} + + bilanz($einnahme,$ausgabe); + $nachricht = 'Hallo,'."\n\n".'Es wurde soeben eine Buchung auf dein Userkonto ausgeführt:'."\n\n".$_POST['buchungsart'].' '.number_format($_POST['buchungssumme'], 2, ',', '.').' '.$waehrung.' '.$_POST['buchungstext']."\n\n\n".'Mit freundlichen Grüßen, dein '.$seitenname.'-Team'; + if (isset ($_POST['send_mail']) && $_POST['send_mail'] == 'ja') usermail ($_POST['email'],$seitenname.' Kontobuchung', $nachricht, '"'.$seitenname.'" <'.$betreibermail.'>'); + } +} + +// Zugangsberechtigungen aendern +if (isset ($_POST['access'])) { + if (isset ($_POST['send_mail']) && $_POST['send_mail'] == 'ja') { + if ($_POST['status'] == 0) $desc = 'Wartend'; + elseif ($_POST['status'] == 1) $desc = 'Freigeschaltet'; + elseif ($_POST['status'] == 2) $desc = 'Gesperrt'; + elseif ($_POST['status'] == 'loeschen') $desc = 'Gelöscht'; + $grund = (empty ($_POST['hinweis'])) ? 'Keine Angabe' : $_POST['hinweis']; + $nachricht = 'Hallo,'."\n\n".'Dein Userstatus auf '.$seitenname.' wurde so ebend geändert.'."\n\n".'Neuer Status: '.$desc.''."\n\n".'Grund:'."\n".$grund."\n\n\n".'Mit freundlichen Grüßen, dein '.$seitenname.'-Team'; + usermail ($_POST['email'], 'Dein Account auf '.$seitenname, $nachricht, '"'.$seitenname.'" <'.$betreibermail.'>'); + } + + if ($_POST['status'] != 'loeschen') { + $_POST['status'] = (int)$_POST['status']; + db_query ('UPDATE '.$db_prefix.'_kontodaten SET status = '.$_POST['status'].', hinweis = "'.$_POST['hinweis'].'" WHERE uid = '.$_POST['uid']); + } else { + $sperrzeit = ( time() + ( 86400 * 365 ) ); + db_query ('INSERT INTO '.$db_prefix.'_userblacklist (uid,zeit) VALUES ('.$_POST['uid'].','.$sperrzeit.')'); + db_query ('DELETE FROM '.$db_prefix.'_kontodaten WHERE uid = '.$_POST['uid']); + db_query ('DELETE FROM '.$db_prefix.'_emaildaten WHERE uid = '.$_POST['uid']); + db_query ('DELETE FROM '.$db_prefix.'_userdaten WHERE uid = '.$_POST['uid']); + db_query ('DELETE FROM '.$db_prefix.'_werberdaten WHERE uid = '.$_POST['uid']); + db_query ('UPDATE '.$db_prefix.'_werberdaten SET werber = 0 WHERE werber = '.$_POST['uid']); + echo '<meta http-equiv="refresh" content="0; URL=index.php?content=/usersystem/liste">'; + } +} + +// Notizen speichern +if (isset ($_POST['notice'])) { + db_query ('UPDATE '.$db_prefix.'_userdaten SET notizen = "'.$_POST['notizen'].'" WHERE uid = '.$_POST['uid']); +} + +// Daten einlesen +$sql = db_query ('SELECT * FROM '.$db_prefix.'_kontodaten t1, '.$db_prefix.'_userdaten t2, '.$db_prefix.'_emaildaten t3, '.$db_prefix.'_werberdaten t4 WHERE t1.uid = '.$_POST['uid'].' AND t2.uid = '.$_POST['uid'].' AND t3.uid = '.$_POST['uid'].' AND t4.uid = '.$_POST['uid'].' LIMIT 1'); +if (mysql_num_rows ($sql) == 0) die ('Die angegebene User-ID existiert nicht!'); +$alledaten = mysql_fetch_assoc ($sql); +?> + +<? head ('Bearbeiten des Users <i>'.$alledaten['nickname'].'</i> ('.$alledaten['uid'].')'); ?> +<div style="text-align: center;"> +<a href="javascript:ShowUserInfo(1);">Allgemeines</a> · +<a href="javascript:ShowUserInfo(2);">Statistik</a> · +<a href="javascript:ShowUserInfo(3);">Konto</a> · +<a href="javascript:ShowUserInfo(4);">Zugang</a> · +<a href="javascript:ShowUserInfo(5);">Buchungen</a> · +<a href="javascript:ShowUserInfo(6);">Notizen</a> +</div><hr size=1 style="color:#c0c0c0;"> + +<div id="Userinfo1" style="display: block;"> +<form action="" method="POST"> +<input type="hidden" name="uid" value="<?=$alledaten['uid'];?>"> +<input type="hidden" name="alt_werber" value="<?=$alledaten['werber'];?>"> +<table width="350" border="0" cellpadding="1" cellspacing="1" align="center" bgcolor="#000000"> + <tr bgcolor="#fafafa"> + <td align="right"><b>User-ID</b>: </td> + <td align="left"> <?=$alledaten['uid'];?></td> + </tr> + <tr bgcolor="#ededed"> + <td align="right"><b>Nickname</b>: </td> + <td align="left"> <?=$alledaten['nickname'];?></td> + </tr> + <tr bgcolor="#fafafa"> + <td align="right"><b>Werber-ID</b>: </td> + <td align="left"> <input type="text" name="werber" value="<?=$alledaten['werber'];?>"></td> + </tr> + <tr bgcolor="#ededed"> + <td align="right"><b>Vorname</b>: </td> + <td align="left"> <input type="text" name="vorname" value="<?=$alledaten['vorname'];?>"></td> + </tr> + <tr bgcolor="#fafafa"> + <td align="right"><b>Nachname</b>: </td> + <td align="left"> <input type="text" name="nachname" value="<?=$alledaten['nachname'];?>"></td> + </tr> + <tr bgcolor="#ededed"> + <td align="right"><b>eMailadresse</b>: </td> + <td align="left"> <input type="text" name="emailadresse" value="<?=$alledaten['emailadresse'];?>"></td> + </tr> + <tr bgcolor="#fafafa"> + <td align="right"><b>eMail-Empfang</b>: </td> + <td align="left"> <select name="freigabe_fuer" size="1"> + <option value="0" <?if ($alledaten['freigabe_fuer'] == 0) echo'SELECTED';?>>Kein Empfang</option> + <option value="1" <?if ($alledaten['freigabe_fuer'] == 1) echo'SELECTED';?>>Nur Newsletter</option> + <option value="2" <?if ($alledaten['freigabe_fuer'] == 2) echo'SELECTED';?>>Nur Paidmails</option> + <option value="3" <?if ($alledaten['freigabe_fuer'] == 3) echo'SELECTED';?>>Newsletter / Paidmails</option> + </select></td> + </tr> + <tr bgcolor="#ededed"> + <td align="center" colspan="2"><br /><input type="submit" name="profile" value="» Updaten"><br /> </td> + </tr> +</table> +</form> +</div> + +<div id="Userinfo2" style="display: none;"> +<table width="350" border="0" cellpadding="1" cellspacing="1" align="center" bgcolor="#000000"> + <tr bgcolor="#fafafa"> + <td> <b>Refback</b>:</td> + <td colspan="2" align="right"><?=$alledaten['refback'];?> % </td> + </tr> + <tr bgcolor="#ededed"> + <td> <b>Angemeldet</b>:</td> + <td colspan="2" align="right"><?=date('d.m.Y H:i', $alledaten['angemeldet_seit']);?> </td> + </tr> + <tr bgcolor="#fafafa"> + <td> <b>Letzter Login</b>:</td> + <td colspan="2" align="right"><?=date('d.m.Y H:i', $alledaten['loginzeit']);?> </td> + </tr> + <tr bgcolor="#ededed"> + <td> <b>Letzte Aktivität</b>:</td> + <td colspan="2" align="right"><?=date('d.m.Y H:i', $alledaten['last_active']);?> </td> + </tr> + <tr bgcolor="#fafafa"> + <td> <b>Letzte IP</b>:</td> + <td colspan="2" align="right"><?=$alledaten['login_ip'];?> </td> + </tr> + <tr bgcolor="#ededed"> + <td> <b>ForcedKlicks</b>:</td> + <td width=50 align="right"><?=$alledaten['klicks'];?> </td> + <td align="right"><?=number_format ($alledaten['kv'], 2, ',', '.').' '.$waehrung;?> </td> + </tr> + <tr bgcolor="#fafafa"> + <td> <b>Betteln</b>:</td> + <td align="right"><?=$alledaten['angebettelt'];?> </td> + <td align="right"><?=number_format ($alledaten['bv'], 2, ',', '.').' '.$waehrung;?> </td> + </tr> +</table> +</div> + +<div id="Userinfo3" style="display: none;"> +<form action="" method="POST"> +<input type="hidden" name="uid" value="<?=$alledaten['uid'];?>"> +<input type="hidden" name="email" value="<?=$alledaten['emailadresse'];?>"> +<table align="center" border="0" cellpadding="0" cellspacing="2"> + <tr> + <td><b>Kontostand</b>:<br /> + <?=number_format($alledaten['kontostand'],2,",",".").' '.$waehrung;?></td> + </tr> + <tr> + <td><br /><b>Summe</b>:<br /> + <select style="width: 40px" name="buchungsart" size="1"><option value="+" SELECTED>+</option><option value="-">-</option></select><input style="width: 100px; height: 19px;" type="Text" name="buchungssumme" value=""></td> + </tr> + <tr> + <td><br /><b>Grund</b> (max. 30 Zeichen):<br /> + <input style="width: 140px" type="text" name="buchungstext" value="" maxlength="30"></td> + </tr> + <tr> + <td><br /><b>Mail an User</b>:<br /> + <input type="radio" name="send_mail" value="ja" /> Ja <input checked="checked" type="radio" name="send_mail" value="nein" /> Nein</td> + </tr> + <tr> + <td align="center"><br /><input type="submit" name="finanze" value="» Buchen" /></td> + </tr> +</table> +</form> +</div> + +<div id="Userinfo4" style="display: none;"> +<form action="" method="POST"> +<input type="hidden" name="uid" value="<?=$alledaten['uid'];?>"> +<input type="hidden" name="email" value="<?=$alledaten['emailadresse'];?>"> +<table align="center" border="0" cellpadding="0" cellspacing="2"> + <tr> + <td><b>Status</b>:<br /> + <select name="status" size="1" style="width: 140px;"> + <option value="0" <?if ($alledaten['status'] == 0) echo'SELECTED';?>>Wartend</option> + <option value="1" <?if ($alledaten['status'] == 1) echo'SELECTED';?>>Freigeschaltet</option> + <option value="2" <?if ($alledaten['status'] == 2) echo'SELECTED';?>>Gesperrt</option> + <option value="<?=$alledaten['status'];?>">--------------</option> + <option value="loeschen">User löschen</option> +</select></td> + </tr> + <tr> + <td><br /><b>Hinweistext</b>:<br /> + <textarea name="hinweis" style="width: 140px; height: 100px;"><?=$alledaten['hinweis'];?></textarea></td> + </tr> + <tr> + <td><br /><b>Mail an User</b>:<br /> + <input checked="checked" type="radio" name="send_mail" value="ja" /> Ja <input type="radio" name="send_mail" value="nein" /> Nein</td> + </tr> + <tr> + <td align="center"><br /><input type="submit" name="access" value="» Ändern" /></td> + </tr> +</table> +</form> +</div> + +<div id="Userinfo5" style="display: none;"> +<table border="0" width="100%" cellpadding="0" cellspacing="1" bgcolor="#303030"> +<tr class="tr_head"> +<td align="center"><b>Buchungs Id</b></td> +<td align="center"><b>Datum</b></td> +<td align="center"><b>Zeit</b></td> +<td align="center"><b><?=$waehrung;?></b></td> +<td align="center"><b>Verwendungszweck</b></td> +</tr> +<? +$buchungen_lesen = db_query('SELECT * FROM '.$db_prefix.'_buchungen WHERE uid = '.$alledaten['uid'].' ORDER BY buchungszeit DESC LIMIT 250'); +while ($buchung_schreiben = mysql_fetch_array($buchungen_lesen)) { +$i++; + $buchcolor = ($buchung_schreiben['buchungsmenge'] > 0) ? '#000000' : '#cc0000'; + $linecolor = ($i %2 == 0) ? 1 : 0; +?> +<tr class="tr_row<?=$linecolor;?>"> +<td align="left"> <?=$buchung_schreiben['buchungs_id'];?></td> +<td align="center"> <?=date("d.m.Y",$buchung_schreiben['buchungszeit']);?> </td> +<td align="center"> <?=date("H:i",$buchung_schreiben['buchungszeit']);?> </td> +<td align="right"> <font color="<?=$buchcolor;?>"><?=number_format($buchung_schreiben['buchungsmenge'],2,",",".");?></font> </td> +<td align="left"> <?=$buchung_schreiben['verwendungszweck'];?></td> +</tr> +<? +} +?> +</table> +</div> + +<div id="Userinfo6" style="display: none;"> +<form action="" method="POST"> +<input type="hidden" name="uid" value="<?=$alledaten['uid'];?>"> +<table align="center" border="0" cellpadding="0" cellspacing="2"> + <tr> + <td><b>Notizen</b>:<br /> + <textarea name="notizen" style="width: 340px; height: 150px;"><?=$alledaten['notizen'];?></textarea></td> + </tr> + <tr> + <td align="center"><br /><input type="submit" name="notice" value="» Speichern" /></td> + </tr> +</table> +</form> +</div> + +<? foot(); ?> \ No newline at end of file diff --git a/adminforce/content/werbesystem/forcedbanner_468.php b/adminforce/content/werbesystem/forcedbanner_468.php new file mode 100644 index 0000000..cb69296 --- /dev/null +++ b/adminforce/content/werbesystem/forcedbanner_468.php @@ -0,0 +1,82 @@ +<? +// Variabeln definieren +if (!isset($_POST['buchen'])) $_POST['buchen'] = ""; +if (!isset($_POST['verdienst'])) $_POST['verdienst'] = ""; +if (!isset($_POST['menge'])) $_POST['menge'] = "0"; +if (!isset($_POST['ziel'])) $_POST['ziel'] = ""; +if (!isset($_POST['banner_url'])) $_POST['banner_url'] = ""; +if (!isset($_POST['reload'])) $_POST['reload'] = "1"; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = "0"; +if (!isset($buchungsfehler)) $buchungsfehler = ""; +if (!isset($buchung)) $buchung = ""; + + +if ($_POST['buchen'] == 'Jetzt Buchen') { + + // Fehlerprüfung + if (!$_POST['menge'] or ereg("[^0-9]", $_POST['menge'])) $buchungsfehler .= 'Bei Menge nur Zahlen!<br>'; + if (!$_POST['banner_url'] or !$_POST['menge'] or !$_POST['ziel'] or !$_POST['reload']) $buchungsfehler .= 'Bitte alle Felder ausfüllen!<br>'; + if ($_POST['reload'] < 1 or $_POST['reload'] > 24 or ereg("[^0-9]", $_POST['reload'])) $buchungsfehler .= 'Bei Reloadzeit nur Zahlen und zwischen 1 und 24 Stunden!<br>'; + if ($_POST['aufendhalt'] < 0 or $_POST['aufendhalt'] > 30 or ereg("[^0-9]", $_POST['aufendhalt'])) $buchungsfehler .= 'Bei dem Aufendhalt nur Zahlen und zwischen 0 und 30 Sekunden!<br>'; + if ($_POST['aufendhalt']>30 or $_POST['aufendhalt']<0 or ereg("[^0-9]",$_POST['aufendhalt'])) $buchungsfehler .= 'Aufendhalt nur Zahlen und zwischen 1 und 30 Sek.!<br>'; + + // Buchung durchführen + if (!$buchungsfehler) { + $buchungs_id = create_code(32); + $reload = $_POST['reload']*60*60; + db_query("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,ziel,banner,aufendhalt,menge,preis,verdienst,werbeart,status,reload,sponsor) VALUES ('".$buchungs_id."','".$_POST['ziel']."','".$_POST['banner_url']."','".$_POST['aufendhalt']."','".$_POST['menge']."','0','".$_POST['verdienst']."','forcedbanner','1','".$reload."','administrator')"); + $buchung = 'true'; + } +} +?> + + +<? +if ($buchungsfehler) { +head("Eingabefehler"); +echo '<b><font color="#FF0000">'.$buchungsfehler.'</font></b>'; +foot(); +} +?> + +<? +if ($buchung == 'true'){ +head("Buchung erfolgreich..."); +echo '<font color="#000080">Deine Buchung war erfolgreich und wurde dem System hinzugefügt.</font>'; +foot(); +} +?> + +<?head("Formular Forcedbanner 468*60");?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> + <td>Menge</td> + <td><input type="Text" name="menge" value="<?=$_POST['menge'];?>" style="width:60px" maxlength="6"></td> +</tr> +<tr> + <td>Userverdienst</td> + <td><input type="Text" name="verdienst" value="<?=$_POST['verdienst'];?>" style="width:60px" maxlength="6"></td> +</tr> +<tr> + <td>Ziel URL (mit http://)</td> + <td><input type="Text" name="ziel" value="<?=$_POST['ziel'];?>" style="width:330px"></td> +</tr> +<tr> + <td>Banner URL (mit http://)</td> + <td><input type="Text" name="banner_url" value="<?=$_POST['banner_url'];?>" style="width:330px"></td> +</tr> +<tr> + <td>Reloadzeit (Stunden)</td> + <td><input type="Text" name="reload" value="<?=$_POST['reload'];?>" style="width:40px" maxlength="2"> max. 24 Stunden</td> +</tr> +<tr> + <td>Aufendhalt (Sekunden)</td> + <td><input type="Text" name="aufendhalt" value="<?=$_POST['aufendhalt'];?>" style="width:40px" maxlength="2"> max. 30</td> +</tr> +<tr> + <td align="center" valign="middle" colspan="2"><input type="Submit" name="buchen" value="Jetzt Buchen"></td> +</tr> +</table> +</form> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/werbesystem/paidmail.php b/adminforce/content/werbesystem/paidmail.php new file mode 100644 index 0000000..cb81ee4 --- /dev/null +++ b/adminforce/content/werbesystem/paidmail.php @@ -0,0 +1,100 @@ +<? +if (!isset($_POST['versenden'])) $_POST['versenden'] = ""; +if (!isset($_POST['verdienst'])) $_POST['verdienst'] = ""; +if (!isset($_POST['menge'])) $_POST['menge'] = "0"; +if (!isset($_POST['ziel'])) $_POST['ziel'] = ""; +if (!isset($_POST['mailtext'])) $_POST['mailtext'] = ""; +if (!isset($_POST['beschreibung'])) $_POST['beschreibung'] = ""; +if (!isset($_POST['aufendhalt'])) $_POST['aufendhalt'] = "0"; +if (!isset($_POST['gueltig'])) $_POST['gueltig'] = "1"; +if (!isset($tan)) $tan = ""; + + $empfaenger = db_query("SELECT e.uid,e.emailadresse FROM + ".$db_prefix."_emaildaten e + LEFT JOIN ".$db_prefix."_kontodaten k ON k.uid=e.uid +WHERE (e.freigabe_fuer = '3' or e.freigabe_fuer = '2') AND k.status=1"); + $maxempf = mysql_num_rows($empfaenger); + +if ($_POST['versenden'] == 'Paidmail versenden!') { + + + if ($_POST['menge'] == 0) $_POST['menge'] = 5000; + if ( $_POST['menge'] >= $maxempf ) $_POST['menge'] = $maxempf; + + $tan = create_code(14); + $bis = time() + (86400*$_POST['gueltig']); + db_query("INSERT INTO ".$db_prefix."_paidmails_versendet (tan,menge,verdienst,ziel,beschreibung,mailtext,aufendhalt,gesendet,gueltig) VALUES ('".$tan."','".$_POST['menge']."','".$_POST['verdienst']."','".$_POST['ziel']."','".$_POST['beschreibung']."','".$_POST['mailtext']."','".$_POST['aufendhalt']."','".time()."','".$bis."')"); + + $senden = db_query("SELECT e.uid,e.emailadresse FROM + ".$db_prefix."_emaildaten e + LEFT JOIN ".$db_prefix."_kontodaten k ON k.uid=e.uid +WHERE (e.freigabe_fuer = '3' or e.freigabe_fuer = '2') AND k.status=1 ORDER BY RAND() LIMIT ".$_POST['menge'].""); + + while ($versendet = mysql_fetch_array($senden)) { + db_query("INSERT INTO ".$db_prefix."_paidmails_empfaenger (uid,gueltig,tan,status,aufendhalt) VALUES ('".$versendet['uid']."','".$bis."','".$tan."','0','".$_POST['aufendhalt']."')"); + $message='Hallo, + dieses ist eine neue '.$seitenname.' Paidmail, für dessen Bestätigung + Du '.$_POST['verdienst'].' '.$waehrung.' für '.$_POST['aufendhalt'].' Sek. aufenthalt erhälst! + Diese Paidmail ist gültig bis '.date("d.m.Y - H:i:s",$bis).' + +'.$_POST['beschreibung'].' + +'.$_POST['mailtext'].' +-------------------------------------------------------------------- + +Die Betreiber von '.$seitenname.' distanzieren sich vom Inhalt dieser Mail! + +Diese Mail ist kein Spam da der Empfänger als Mitglied von +'.$seitenname.' dem Empfang zugestimmt hat. + +Bestätigungslink: +'.$domain.'/pclick.php?tan='.$tan.'&uid='.$versendet["uid"].' + +Mit freundlichen Grüßen +Das '.$seitenname.' Team'; +usermail($versendet['emailadresse'], 'Neue '.$seitenname.' Paidmail', $message, '"'.$seitenname.'" <'.$betreibermail.'>') or die('Versandfehler'); + + } +$msg_send = '<b><div align="center"><font color="#800000">Diese Paidmail wurd an '.$_POST['menge'].' User versendet</font></div></b>'; +} + +?> + +<? head("Paidmail einbuchen und versenden"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> + <td>Anzahl der Empfänger</td> + <td><input type="Text" name="menge" value="<?=$_POST['menge'];?>" style="width:60px" maxlength="6"> (0 = an alle, max: <?=$maxempf;?>)</td> +</tr> +<tr> + <td>Userverdienst</td> + <td><input type="Text" name="verdienst" value="<?=$_POST['verdienst'];?>" style="width:60px" maxlength="6"></td> +</tr> +<tr> + <td>Ziel URL (mit http://)</td> + <td><input type="Text" name="ziel" value="<?=$_POST['ziel'];?>" style="width:330px"></td> +</tr> +<tr> + <td>Beschreibung</td> + <td><input type="Text" name="beschreibung" value="<?=$_POST['beschreibung'];?>" style="width:215px" maxlength="30"> (max. 30 Zeichen)</td> +</tr> +<tr> + <td valign="top">Mailtext</td> + <td><textarea cols="50" rows="10" name="mailtext"><?=$_POST['mailtext'];?></textarea></td> +</tr> +<tr> + <td>Aufendhalt (Sekunden)</td> + <td><input type="Text" name="aufendhalt" value="<?=$_POST['aufendhalt'];?>" style="width:40px" maxlength="2"></td> +</tr> +<tr> + <td>Gültig (TAGE)</td> + <td><input type="Text" name="gueltig" value="<?=$_POST['gueltig'];?>" style="width:40px" maxlength="2"></td> +</tr> +<tr> + <td align="center" valign="middle" colspan="2"><input type="Submit" name="versenden" value="Paidmail versenden!"></td> +</tr> +</table> +</form> +<?=$msg_send;?> +<?foot();?> \ No newline at end of file diff --git a/adminforce/content/werbesystem/paidmail_hist.php b/adminforce/content/werbesystem/paidmail_hist.php new file mode 100644 index 0000000..97d3cb9 --- /dev/null +++ b/adminforce/content/werbesystem/paidmail_hist.php @@ -0,0 +1,43 @@ +<? +if (!isset($_GET['tan'])) $_GET['tan'] = ""; +if (!isset($_GET['loeschen'])) $_GET['loeschen'] = ""; + +if ($_GET['loeschen'] == 'true') { +db_query("DELETE FROM ".$db_prefix."_paidmails_versendet WHERE tan='".$_GET['tan']."'"); +db_query("DELETE FROM ".$db_prefix."_paidmails_empfaenger WHERE tan='".$_GET['tan']."'"); +} +?> + + +<? +$mails = db_query("SELECT * FROM ".$db_prefix."_paidmails_versendet ORDER BY gesendet DESC"); + + +while ($history = mysql_fetch_array($mails)) { + head('Paidmail: '.$history['beschreibung']); +?> + <b>Tan:</b> <?=$history['tan'];?><br> + <b>Menge:</b> <?=$history['menge'];?><br> + <b>Bestätigt:</b> <?=$history['bestaedigt'];?> (<?=@round($history['bestaedigt']/$history['menge']*100,2);?> %)<br> + <b>Userverdienst:</b> <?=$history['verdienst'];?><br> + <b>Gültig bis:</b> <?=date("d.m.Y - H:i",$history['gueltig']);?><br> + <b>Gesendet am:</b> <?=date("d.m.Y - H:i",$history['gesendet']);?> <br> + <b>Aufenthalt:</b> <?=$history['aufendhalt'];?> Sek.<br> + + <p align="center"><textarea style="width:100%"><?=$history['mailtext'];?></textarea></p> + +<? + if ($history['gueltig'] <= time() or $history['menge']==$history['bestaedigt']){ echo ' + <br><br><a href="?content=/werbesystem/paidmail_hist&tan='.$history['tan'].'&loeschen=true"><b>Löschen!</b></a> + '; + } +foot(); +} + +if (!mysql_num_rows($mails)){ + head("Information"); + echo 'Noch keine Paidmails vorhanden!'; + foot(); +} +?> + diff --git a/adminforce/css/main.css b/adminforce/css/main.css new file mode 100644 index 0000000..8b82706 --- /dev/null +++ b/adminforce/css/main.css @@ -0,0 +1,78 @@ +BODY { + background-color: #665; + color: #000000; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; +} + +.titel { + font-family: Verdana, Arial, Helvetica, sans-serif; + color: #666666; + font-size: 11px; + font-weight: bold; +} + +a { + color: #666655; + text-decoration: none; + font: 8pt Verdana; +} + +a:hover { + text-decoration: underline; + color: red; +} + +.tblbgcolor { + background-color: #336; + font-family: Verdana, Arial, Helvetica, sans-serif; +} + +input { + border-width: 1; + font-size: 11px; + font-family: verdana; + border-color: #505050; + border-style: solid; + background-color: #E6E6E6; + color: 333333; + font-weight: normal; +} + +select { + border-width:1; font-size: 11px; font-family: verdana; border-color:#000080; + border-style:solid; background-color:#EEEEEE; color:333333; +} + +textarea { + border-width: 1; + font-size: 11px; + font-family: verdana; + border-color: #505050; + border-style: solid; + background-color: #E6E6E6; + color: 333333; + font-weight: normal; +} + +option { + border-width:1; font-size: 11px; font-family: verdana; border-color:#000080; + border-style:solid; background-color:#EEEEEE; color:333333; +} + +.tr_row0 { + BACKGROUND-COLOR: #E2E2E2; +} + +.tr_row1 { + BACKGROUND-COLOR: #CDCDCD; +} + +.tr_head { + BACKGROUND-COLOR: #0099CC; + COLOR:#000000; + FONT-WEIGHT: bold; +} \ No newline at end of file diff --git a/adminforce/images/gelb.gif b/adminforce/images/gelb.gif new file mode 100644 index 0000000000000000000000000000000000000000..2668ff9c4237f6759ff440a28101db094fa85149 GIT binary patch literal 147 zcmZ?wbhEHb<Y(Y#*vtR||NsAg{Fvd^EryF18BUyF*twHs<w}+X3wTbP5Lma)9ViP{ z1tk=JvM@3*a5LzD_#iVFSR4vYdam9pp3y5Fz)>XQz}Dv$6*PZ_l<OX^hS@5t3(wD6 n%kLofV8SUzRwl)Z77l9K3=#`FpZGEy%Su1|vSR-f4hCxgLt-(t literal 0 HcmV?d00001 diff --git a/adminforce/images/gruen.gif b/adminforce/images/gruen.gif new file mode 100644 index 0000000000000000000000000000000000000000..51da984c216bf3db6d3b0f83219eee99d48f9e9f GIT binary patch literal 149 zcmZ?wbhEHb<Y(Y#*vtR||NsAIc*MYPje+4L1H(=R#^sEhvpGc$h$uW$P`IF=a7aOM zlcL574UjSh2F0H&j0_BX3_2j4ATt<PoGzU7T)kI3qgS?|J<(wPSJR|Gou?&c9bN)n wuUkFr_?vl`a4_{hH$G9(w4^`qhAJ!P>~uvLmBo^*LftnDtR5JsGBH>K02=Er9smFU literal 0 HcmV?d00001 diff --git a/adminforce/images/rot.gif b/adminforce/images/rot.gif new file mode 100644 index 0000000000000000000000000000000000000000..b98d7f896e98b3b690bba58dac718c54f58e57d6 GIT binary patch literal 147 zcmZ?wbhEHb<Y(Y#*vtR||NsAg#K3Tkf#D<r!%hZ<<&2E8IXMrAh%A?qTIcQ#lm)AT z5{f@r7#SG28FWB=kQodt4h1JYSML?i=oJrWS7e$wsl(MPD1MTHrs8@b0i_)_JX_k8 mTJEl6H#kz(q;heEx0ZH;Q^A8bz6_Vu(+<C^*gu7X!5RQ;$1J4) literal 0 HcmV?d00001 diff --git a/adminforce/index.php b/adminforce/index.php new file mode 100644 index 0000000..f552021 --- /dev/null +++ b/adminforce/index.php @@ -0,0 +1,52 @@ +<? +session_start(); +$shows = 0; + +if($_POST['check'] == "Login") { + @require_once ('../lib/functions.lib.php'); + db_connect(); + $page = mysql_fetch_array(db_query("SELECT admin_name, admin_pass FROM ".$db_prefix."_seitenkonfig LIMIT 1")); + if($_POST['loginname'] == $page['admin_name'] && $_POST['passwort'] == $page['admin_pass']) { + $_SESSION['admin'] = 1; + header("Location: ".$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING']); + } +} + + +if($_SESSION['admin'] == 1) { + +@include_once('lib/header.php'); +@include_once('content'.$_GET['content'].'.php'); +@include_once('lib/footer.php'); + +} else { +?> +<html> +<head> +<title>Adminforce</title> +</head> +<link rel="stylesheet" href="css/main.css" type="text/css"> +<body> +<center> +<b>Adminlogin</b> + +<form action="" method="POST"> +<table border="0"> +<tr> + <td><b>Loginname:</b></td> + <td><input name="loginname" type="text"></td> +</tr> +<tr> + <td><b>Passwort:</b></td> + <td><input name="passwort" type="password"></td> +</tr> +<tr> + <td colspan=2 align="center"><input name="check" value="Login" type="submit"></td> +</tr> +</table> +</form> + +</center> +</body> +</html> +<?}?> diff --git a/adminforce/lib/footer.php b/adminforce/lib/footer.php new file mode 100644 index 0000000..3bb6e57 --- /dev/null +++ b/adminforce/lib/footer.php @@ -0,0 +1,10 @@ +</td> +<td width="5" valign="top" align="left"></td> +<td width="130" valign="top" align="left"><? require ( 'lib/menue_rechts.php' ); ?></td> +</tr> +</table> + +</td></tr></table> +</body> +</html> +<? db_close (); ?> \ No newline at end of file diff --git a/adminforce/lib/header.php b/adminforce/lib/header.php new file mode 100644 index 0000000..f31ec2f --- /dev/null +++ b/adminforce/lib/header.php @@ -0,0 +1,99 @@ +<? +require ('../lib/functions.lib.php'); +db_connect (); +require ('lib/layout.lib.php'); + +// Extras-Erweiterung initalisieren und ausfuehren +require ( '../lib/extras.lib.php' ); + +if (!isset($_GET['content'])) $_GET['content'] = '/startseite'; +if (!file_exists('content'.$_GET['content'].'.php')) $_GET['content'] = '/error/keine_seite'; +?> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title>..:: Adminforce ::..</title> +<meta name="Author" content=""> +<meta name="Publisher" content=""> +<meta name="Copyright" content=""> +<meta name="Keywords" content=""> +<meta name="Description" content=""> +<meta name="Page-topic" content=""> +<meta name="Audience" content=""> +<meta name="Content-language" content="DE"> +<meta name="Page-type" content="Nicht Gewinnorientiert"> +<meta name="Robots" content="INDEX,FOLLOW"> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> +<link rel="stylesheet" href="css/main.css" type="text/css"> +<script type="text/javascript"> +<!-- +function menuebox(id,art){ + +if(art == 1){ + document.getElementById(id).style.display = 'block'; +}else{ + document.getElementById(id).style.display = 'none'; + } + +} + +function ShowUserInfo (art) { + /* alle container ausblenden */ + document.getElementById("Userinfo1").style.display = 'none'; + document.getElementById("Userinfo2").style.display = 'none'; + document.getElementById("Userinfo3").style.display = 'none'; + document.getElementById("Userinfo4").style.display = 'none'; + document.getElementById("Userinfo5").style.display = 'none'; + document.getElementById("Userinfo6").style.display = 'none'; + + /* ausgewaehlten container einblenden */ + document.getElementById("Userinfo" + art).style.display = 'block'; +} +--> +</script> +<script language="javascript" type="text/javascript"> +<!-- +var win=null; + +onerror = stopError; +function stopError(){ + return true; +} + +function ShowWindow (url) { + var myleft = (screen.availWidth - 640) / 2; + var mytop = (screen.availHeight - 480) / 2; + settings="width=640,height=480,top=" + mytop + ",left=" + myleft + ",scrollbars=yes,location=no,directories=no,status=yes,menubar=no,toolbar=no,resizable=yes,dependent=no"; + win=window.open(url,"",settings); + win.focus(); + +} +// --> +</script> +</head> + +<body style="topmargin:5;leftmargin:0;"> + +<noscript><div style="font: 10pt Arial; color: #ff0000; text-align: center;">Um <b>alle Funktionen des Adminforce</b> nutzen zu können, bitte <b>JavaScript aktivieren</b>!</div></noscript> + +<table width="800" cellpadding="0" cellspacing="0" border="0" align="center"> +<tr> +<td valign="top" align="center"> + + <table style="width:800px; background-color:#888855; border-width:1px; cellpading:0; cellspacing:0; border-color:#000000; border-collapse: collapse;"> + <tr> + <td class="titel" height="66" valign="middle" align="left"> + <font face="Arial" size=6 color="#ffffff">VMS 1.2 Adminforce</font><br> + <font face="Arial" size=2 color="#ffffff"><?=$seitenname;?></font> + </td> + </tr> +</table> + +<table width="800" border="0" cellpadding="0" cellspacing="0"><tr><td height="5"> </td></tr></table> +<!-- Inhalt --> + +<table width="800" cellpadding="0" cellspacing="0" border="0"> +<tr> +<td width="130" valign="top" align="left"><? require ( 'lib/menue_links.php' ); ?></td> +<td width="5" valign="top" align="left"></td> +<td width="530" valign="top" align="left"> \ No newline at end of file diff --git a/adminforce/lib/layout.lib.php b/adminforce/lib/layout.lib.php new file mode 100644 index 0000000..5bf8f0a --- /dev/null +++ b/adminforce/lib/layout.lib.php @@ -0,0 +1,36 @@ +<? +function head($titel){ +echo ' +<table style="width:100%; border-collapse: collapse; border-color:#000000; background-color:#EEEECC; border-width:7px; cellpading:3; cellspacing:0;"> +<tr> + <td><font face="Arial" size=2><b>'.$titel.'</b></font></td> +</tr> +<tr> +<td bgcolor="#ffffff">'; +} + +function foot(){ +echo ' +</td> +</tr> +</table> +<br>'; +} + +function menuehead($titel){ +echo' +<table style="width:100%; border-collapse: collapse; border-color:#000000; background-color:#BBBB88; border-width:1px; cellpading:3; cellspacing:0;"> +<tr> + <td><font face="Arial" size=2><b>'.$titel.'</b></font></td> +</tr> +<tr> +<td bgcolor="#EEEECC">'; +} + +function menuefoot(){ +echo'</td> +</tr> +</table> +<br>'; +} +?> \ No newline at end of file diff --git a/adminforce/lib/menue_links.php b/adminforce/lib/menue_links.php new file mode 100644 index 0000000..2cedd7f --- /dev/null +++ b/adminforce/lib/menue_links.php @@ -0,0 +1,33 @@ +<?menuehead("Allgemeines")?> +» <a href="?content=/startseite">Adminstart</a><br> +» <a href="?content=/usersystem/liste">Userliste</a><br> +» <a href="?content=/usersystem/doppelaccis">Doppalccounts</a><br> +» <a href="?content=/module">Module</a><br> +» <a href="?content=/bilanzsystem">Bilanz</a><br> +<?menuefoot();?> + +<?menuehead("Newssystem")?> +» <a href="?content=/newssystem/news">News schreiben</a><br> +<?menuefoot();?> + +<?menuehead("Ralleysystem")?> +» <a href="?content=/ralleysystem/aktiv">Aktivralley</a><br> +» <a href="?content=/ralleysystem/klick">Klickralley</a><br> +» <a href="?content=/ralleysystem/ref">Refralley</a><br> +<?menuefoot();?> + +<?menuehead("Konfigurationen")?> +» <a href="?content=/interfacedaten/pageconfig">Seiteneinstell.</a><br> +» <a href="?content=/interfacedaten/crons">Crons</a><br> +» <a href="?content=/interfacedaten/betreiber">Betreiberdaten</a><br> +<?menuefoot();?> + +<?menuehead("Texte bearbeiten")?> +» <a href="?content=/texte/alternativwerbung">Alternativwerbung</a><br> +» <a href="?content=/texte/klickralley">Klickralley</a><br> +» <a href="?content=/texte/aktivralley">Aktivralley</a><br> +» <a href="?content=/texte/refralley">Refralley</a><br> +» <a href="?content=/texte/agb">AGB</a><br> +» <a href="?content=/texte/faq">FAQ</a><br> +» <a href="?content=/texte/wartung">Wartungstext</a><br> +<?menuefoot();?> diff --git a/adminforce/lib/menue_rechts.php b/adminforce/lib/menue_rechts.php new file mode 100644 index 0000000..6bfcc41 --- /dev/null +++ b/adminforce/lib/menue_rechts.php @@ -0,0 +1,26 @@ +<?menuehead("Werbung einb.")?> +» <a href="?content=/werbesystem/forcedbanner_468">Forced 468</a><br> +» <a href="?content=/werbesystem/paidmail"><font color="#FF0000">Paidmails vers.</font></a><br> +» <a href="?content=/werbesystem/paidmail_hist"><font color="#FF0000">Paidmail Hist.</font></a><br> +<?menuefoot();?> + +<?menuehead("Interfacedaten")?> +» <a href="?content=/interfacedaten/fuco-ads">FuCo-Ads</a><br> +» <a href="?content=/interfacedaten/webmasterlose">Webmasterlose</a><br> +» <a href="?content=/interfacedaten/lose-ads">Lose-Ads</a><br> +» <a href="?content=/interfacedaten/losebox">Losebox</a><br> +» <a href="?content=/interfacedaten/hp-lose">HP-Lose</a><br> +<?menuefoot();?> + +<?menuehead("Interfacebanner")?> +» <a href="?content=/interfacebanner/fuco-ads">FuCo-Ads</a><br> +» <a href="?content=/interfacebanner/webmasterlose">Webmasterlose</a><br> +» <a href="?content=/interfacebanner/lose-ads">Lose-Ads</a><br> +» <a href="?content=/interfacebanner/losebox">Losebox</a><br> +» <a href="?content=/interfacebanner/hp-lose">HP-Lose</a><br> +» <a href="?content=/interfacebanner/admin"><b>Adminbanner</b></a><br> +» <a href="?content=/interfacebanner/blacklist"><b>Blacklist</b></a><br> +<?menuefoot();?> + + + diff --git a/adminforce/moduladmin.php b/adminforce/moduladmin.php new file mode 100644 index 0000000..acf53dd --- /dev/null +++ b/adminforce/moduladmin.php @@ -0,0 +1,35 @@ +<? +require ('../lib/functions.lib.php'); +db_connect (); +require ('lib/layout.lib.php'); + +// Extras-Erweiterung initalisieren und ausfuehren +require ( '../lib/extras.lib.php' ); +?> +<html> +<head> +<link rel="stylesheet" href="css/main.css" type="text/css"> +</head> +<body topmargin="5" leftmargin="5"> +<noscript><div style="font: 10pt Arial; color: #ff0000; text-align: center;">Um <b>alle Funktionen des Adminforce</b> nutzen zu können, bitte <b>JavaScript aktivieren</b>!</div><br /><br /></noscript> +<? +$dir = '../module/'; + +if (isset ($_GET['mod'])) { + if (is_dir ($dir.$_GET['mod'])) { + require ( '../lib/module.lib.php' ); + define ('MODULADMIN_LOADED', TRUE); + if (file_exists ($dir.$_GET['mod'].'/admin.php')) require ($dir.$_GET['mod'].'/admin.php'); + else $err = 'Die Moduladministrationsdatei wurde nicht gefunden.'; + } else $err = 'Das angegebene Modul wurde nicht gefunden.'; +} else $err = 'Es wurde kein Modulname übergeben.'; + +if (isset ($err)) { + head ('Fehler'); + echo 'Es ist ein Fehler auf unserer Seite aufgetreten:<br /><br />' . $err; + foot (); +} +?> +</body> +</html> +<? db_close (); ?> \ No newline at end of file diff --git a/content/betteln.php b/content/betteln.php new file mode 100644 index 0000000..151a552 --- /dev/null +++ b/content/betteln.php @@ -0,0 +1,54 @@ +<? +$_GET['ref'] = (int)$_GET['ref']; + + +if ($pageconfig['reload_betteln'] == 0){ +$betteltext = '<b>Die Bettelfunktion ist auf dieser Seite deaktiviert'; +}else{ + if ($_SESSION['uid'] == $_GET['ref'] || $_GET['ref'] == $_COOKIE['uid']){ + $betteltext = '<b><font color="#FF0000">Du kannst dich nicht selbst anbetteln!</font></b>'; + }else{ + $reloadcheck = db_query("SELECT bis FROM ".$db_prefix."_reloads WHERE ip = '".$ip."' and tan = 'bettelaufruf' and bis >= ".time()." LIMIT 1"); + + if (!mysql_num_rows($reloadcheck)) { + $minimum = $pageconfig['min_betteln']; + $maximum = $pageconfig['max_betteln']; + srand((double)microtime()*1000000); + $bettelsumme = rand($minimum*100,$maximum*100)/100; + $new_reload = time()+$pageconfig['reload_betteln']; + db_query("INSERT INTO ".$db_prefix."_reloads (ip,uid,tan,bis) VALUES ('".$ip."','".$_GET['ref']."','bettelaufruf','".$new_reload."')"); + db_query("UPDATE ".$db_prefix."_kontodaten SET angebettelt =angebettelt + 1, bv = bv + ".$bettelsumme.", kontostand = kontostand + '".$bettelsumme."' WHERE uid = '".$_GET['ref']."'"); + + refumsatz ($bettelsumme,$_GET['ref']); + aktivralley ($bettelsumme,$_GET['ref']); + bilanz(0,$bettelsumme); + $betteltext = '<b>Du hast für den User '.$_GET['ref'].' gerade '.$bettelsumme.' '.$waehrung.' erbettelt!</b>'; + } else { + $reloadcheck = mysql_fetch_array($reloadcheck); + $betteltext = '<b><font color="#FF0000">Du bist noch für '. round((($reloadcheck['bis'] - time())/60),0) .' Minuten fürs Betteln gesperrt</font></b>'; + } + } +} +?> + +<?head("Betteln auf ".$seitenname);?> +Verdiene auch Du mit!<br> +Melde Dich bei <?=$seitenname;?> an und bewirbe Deinen persönlichen Bettellink, so +verdienst Du deine <?=$waehrung;?> fast wie im Schlaf!<br> +<br> +<div align="center"><?=$betteltext;?></div> +<?foot();?> + +<? +$filename = 'lib/texte/bettelwerbung.txt'; +$fp = fopen ($filename, "r"); +$inhalt = fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); + +if ($inhalt != ''){ +head("Werbung dieser Seite"); +echo nl2br($inhalt); +foot(); +} +?> \ No newline at end of file diff --git a/content/error/kein_ref.php b/content/error/kein_ref.php new file mode 100644 index 0000000..1407cd8 --- /dev/null +++ b/content/error/kein_ref.php @@ -0,0 +1,6 @@ +<?head("Refdetails - Fehlermeldung!");?> +Du vesuchst gerade Detaildaten eines Refusers aufzurufen der Dir nicht zugeordnet ist. +Du kannst nur die Daten aus Deiner ersten Ebene sehen, alle anderen Daten bleiben Dir +verwehrt. +</ul> +<?foot();?> \ No newline at end of file diff --git a/content/error/kein_zutritt.php b/content/error/kein_zutritt.php new file mode 100644 index 0000000..73f5b5f --- /dev/null +++ b/content/error/kein_zutritt.php @@ -0,0 +1,12 @@ +<?head("Zutritt verweigert");?> +Der Zutritt zu diesem Bereich wurde Dir verweigert!<br> +Bevor Du dich an den Support wendest, prüfe bitte erst die unten aufgezählten Möglichkeiten +um so unnötige Supportanfragen zu vermeiden!<br> +<ul> +<b>Mögliche Gründe</b><br> +<li>Du bist nicht eingeloggt (bitte erst einloggen)</li> +<li>Die Kontonummer/Passwortkombination stimmt nicht (Loginfehler)</li> +<li>Du hast deinen Account noch nicht freigeschaltet (bitte Email prüfen)</li> +<li>Die Session ist abgelaufen (verwende doch den Autologin)</li> +</ul> +<?foot();?> diff --git a/content/error/keine_seite.php b/content/error/keine_seite.php new file mode 100644 index 0000000..92822aa --- /dev/null +++ b/content/error/keine_seite.php @@ -0,0 +1,12 @@ +<?head("Seite nicht gefunden");?> +Die von Dir angeforderte Seite ist nicht erreichbar.<br> +Bitte wähle aus dem Menü einen gültigen Link, sollte weiterhin das Problem bestehen informiere +bitte den Webmaster darüber.<br> +<ul> +<b>Mögliche Gründe</b><br> +<li>Die Seite wurde aus Wartungsgründen entfernt</li> +<li>Ein Link im Menü wurde falsch gesetzt</li> +<li>Du hast eine falsche oder ungültige URL erhalten (extern)</li> +</ul> +<?foot();?> + diff --git a/content/error/user_gesperrt.php b/content/error/user_gesperrt.php new file mode 100644 index 0000000..de50a3f --- /dev/null +++ b/content/error/user_gesperrt.php @@ -0,0 +1,7 @@ +<?head("Account gesperrt");?> +Bitte wende Dich an den Webmaster!<br> +<br> +<b>Dein Account wurde mit folgender Begründung gesperrt!</b><br> +<?=nl2br($login_check['hinweis']);?> + +<?foot();?> \ No newline at end of file diff --git a/content/intern/agbs.php b/content/intern/agbs.php new file mode 100644 index 0000000..cdc2227 --- /dev/null +++ b/content/intern/agbs.php @@ -0,0 +1,14 @@ +<? +// Variabeln +$filename = 'lib/texte/agb.txt'; + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("Allgemeine Geschäftsbedingungen");?> +<?=nl2br($inhalt);?> +<?foot();?> \ No newline at end of file diff --git a/content/intern/aktivieren.php b/content/intern/aktivieren.php new file mode 100644 index 0000000..370e35a --- /dev/null +++ b/content/intern/aktivieren.php @@ -0,0 +1,43 @@ +<? +if (!isset($_GET['ak'])) $_GET['ak'] = ""; +$_GET['ak'] = addslashes ($_GET['ak']); + +$aktivierung = db_query('SELECT * FROM '.$db_prefix.'_aktivierungen WHERE ak = "'.$_GET['ak'].'" LIMIT 1'); + +if (mysql_num_rows($aktivierung)) { +$aktivieren = mysql_fetch_array($aktivierung); +db_query("UPDATE ".$db_prefix."_kontodaten SET status = '1' WHERE uid = '".$aktivieren['uid']."' AND status = '0' LIMIT 1"); +db_query("DELETE FROM ".$db_prefix."_aktivierungen WHERE ak = '".$_GET['ak']."' LIMIT 1"); +?> + +<?head("$seitenname - Accountaktivierung!");?> +Die Aktivierung Deines Accounts bei <?=$seitenname;?> war erfolgreich, +Du kannst Dich nun bei uns einloggen und unser Angebot in vollem Umfang nutzen.<br> +<br> +Solltest Du Fehler auf unserer Webseite finden dann sende uns bitte eine Email +an <a href="mailto:<?=$betreibermail;?>" target="_blank"><?=$betreibermail;?></a><br> +<br> +Wir wünschen Dir nun viel Spaß und viele viele Funcoins!<br> +<br> +Mit freundlichen Grüßen<br> +Das <?=$seitenname;?> Team<br> +<?foot();?> + +<? +} else { +?> + +<?head("$seitenname - Accountaktivierung [Code falsch]!");?> +Die Aktivierung Deines Accounts bei <?=$seitenname;?> ist fehlgeschlagen, +bitte prüfe nochmals den Aktivierungslink oder vordere den Link neu an.<br> +<br> +Solltest Du Fehler auf unserer Webseite finden dann sende uns bitte eine Email +an <a href="mailto:<?=$betreibermail;?>" target="_blank"><?=$betreibermail;?></a><br> +<br> +Mit freundlichen Grüßen<br> +Das <?=$seitenname;?> Team<br> +<?foot();?> + +<? +} +?> diff --git a/content/intern/anmelden.php b/content/intern/anmelden.php new file mode 100644 index 0000000..61439c4 --- /dev/null +++ b/content/intern/anmelden.php @@ -0,0 +1,188 @@ +<? +// Variabel vordefinieren! +if (!isset($_POST['anmelden'])) $_POST['anmelden'] = ""; +if (!isset($_POST['nickname'])) $_POST['nickname'] = ""; +if (!isset($_POST['nachname'])) $_POST['nachname'] = ""; +if (!isset($_POST['vorname'])) $_POST['vorname'] = ""; +if (!isset($_POST['emailadresse'])) $_POST['emailadresse'] = ""; +if (!isset($_POST['passwort_1'])) $_POST['passwort_1'] = ""; +if (!isset($_POST['passwort_2'])) $_POST['passwort_2'] = ""; +if (!isset($_POST['uid_passwort'])) $_POST['uid_passwort'] = ""; +if (!isset($_POST['uid'])) $_POST['uid'] = ""; +if (!isset($_POST['agb'])) $_POST['agb'] = ""; +if (!isset($_POST['newsletter'])) $_POST['newsletter'] = "1"; +if (!isset($_POST['paidmails'])) $_POST['paidmails'] = "1"; +if (!isset($error)) $error = ""; +if (!isset($anmeldeok)) $anmeldeok = ""; +if (!isset($ak)) $ak = ""; + +if ($_POST['anmelden'] == "Jetzt anmelden!") { + + $_POST['nachname'] = addslashes ($_POST['nachname']); + $_POST['vorname'] = addslashes ($_POST['vorname']); + + + $schnittstelle = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_schnittstelle LIMIT 1")) or die("Userinfo"); + $tag = strtotime("".date("m")."/".date("d")."/".date("Y")." 0 hours 0 minutes 0 seconds"); + $s_verbrauch = mysql_num_rows(db_query("SELECT * FROM ".$db_prefix."_schnittstelle_anfragen WHERE zeit='".$tag."' and uid='0'")); + // Auf Eingabefehler prüfen + if(!$_POST['nachname'] || !$_POST['vorname'] || !$_POST['emailadresse'] || !$_POST['passwort_1'] || !$_POST['passwort_2'] || !$_POST['uid'] || !$_POST['uid_passwort'] || !$_POST['nickname']) $error .= 'Bitte fülle alle benötigten Felder aus!<br>'; + + // Pruefen, ob man sich mit der eMail-Domain anmelden darf + $denied = explode(';', $pageconfig['denied_domains']); + foreach ($denied AS $nr => $domain) if (($nr < (count ($denied)-2) || strlen ($domain) >= 5) && strpos ($_POST['emailadresse'], $domain) !== FALSE) $error .= 'E-Mail-Adressen mit der Domain "<i>'.$domain.'</i>" sind bei uns nicht erlaubt!<br>'; + + if(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$",$_POST['emailadresse'])) $error .= 'Der Emailsyntax ist falsch!<br>'; + if ($_POST['passwort_1'] != $_POST['passwort_2']) $error .= 'Passwörter stimmen nicht überein!<br>'; + if (strlen($_POST['passwort_1']) < 8) $error .= 'Passwortlänge muss min. 8 Zeichen haben<br>'; + if (ereg("[^0-9]", $_POST['uid'])) $error .= 'Bei der Klamm Id nur Zahlen!<br>'; + if ($_POST['agb'] != "ja") $error .= 'Du musst die AGBs bestädigen!<br>'; + if ($_POST['uid'] == $_SESSION['werber']) $error .= 'Du kannst Dich nicht selber werben<br>'; + if ($schnittstelle['anfragen_tag'] != 0 and $schnittstelle['anfragen_tag'] <= $s_verbrauch) $error = 'Die Schnittstellenanfragen sind für heute verbraucht!!!<br>'; + + // User mit der Datenbank abgleichen + if (!$error) { + $_POST['nickname'] = mysql_real_escape_string(ucfirst($_POST['nickname'])); + $nickname_check =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$_POST['nickname']."'"); + $user_check = db_query ("SELECT `uid` FROM ".$db_prefix."_kontodaten WHERE uid='".$_POST['uid']."'"); + $mail_check = db_query ("SELECT `emailadresse` FROM ".$db_prefix."_emaildaten WHERE emailadresse='".$_POST['emailadresse']."'"); + $black_check= db_query ("SELECT * FROM ".$db_prefix."_userblacklist WHERE uid='".$_POST['uid']."' and zeit >='".time()."'"); + $sperre = mysql_fetch_array($black_check); + if ($sperre['zeit'] != 99999999999) { + $sperrtext = 'Du bist für eine Neuanmeldung noch bis <b>'.date("d.m.Y - H:i:s",$sperre['zeit']).'</b> gesperrt!<br>'; + } else { + $sperrtext = '<b><i>Du bist für diese Webseite komplett gesperrt!</i></b>'; + } + if (mysql_num_rows($user_check)) $error .= 'Du bist bereits bei uns angemeldet!<br>'; + if (mysql_num_rows($mail_check)) $error .= 'Diese Emailadresse ist schon im System!<br>'; + if (mysql_num_rows($black_check)) $error = $sperrtext; + if (mysql_num_rows($nickname_check)) $error .='Der Nickname ist schon vergeben!<br>'; + } + + // User beim Betreiber prüfen + if (!$error) { + if ($schnittstelle['anfragen_user'] != 0) db_query("INSERT INTO ".$db_prefix."_schnittstelle_anfragen (zeit,uid) VALUES ('".$tag."','0')"); + @require_once ("lib/schittstellen/".$schnittstelle['schnittstelle'].".php"); + @uservalidate ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_POST['uid'],$_POST['uid_passwort']); + if ($error) $error = $trans_ausgabe.'<br>'; + } + + + // User eintragen + if (!$error) { + if ($_POST['newsletter'] == 0 and $_POST['paidmails'] == 0) $mailstatus = 0; + if ($_POST['newsletter'] == 1 and $_POST['paidmails'] == 0) $mailstatus = 1; + if ($_POST['newsletter'] == 0 and $_POST['paidmails'] == 1) $mailstatus = 2; + if ($_POST['newsletter'] == 1 and $_POST['paidmails'] == 1) $mailstatus = 3; + db_query("INSERT INTO ".$db_prefix."_kontodaten (uid,passwort,status,hinweis,kontostand) VALUES ('".$_POST['uid']."','".md5($_POST['passwort_1'])."','0','','0')"); + db_query("INSERT INTO ".$db_prefix."_emaildaten (uid,emailadresse,freigabe_fuer) VALUES ('".$_POST['uid']."','".$_POST['emailadresse']."','".$mailstatus."')"); + db_query("INSERT INTO ".$db_prefix."_userdaten (uid,nickname,vorname,nachname,angemeldet_seit) VALUES ('".$_POST['uid']."','".$_POST['nickname']."','".$_POST['vorname']."','".$_POST['nachname']."','".time()."')"); + $ws = db_query("SELECT * FROM ".$db_prefix."_werberdaten WHERE uid='".$_POST['uid']."'"); + db_query("INSERT INTO ".$db_prefix."_werberdaten (uid,werber,umsatz,zuordnungszeit) VALUES ('".$_POST['uid']."','".$_SESSION['werber']."','0','".time()."')"); + $ak = md5($_POST['uid'].''.time()); + db_query("INSERT INTO ".$db_prefix."_aktivierungen (uid,ak) VALUES ('".$_POST['uid']."','".$ak."')"); + $email_message = 'Hallo, '.$_POST['nickname'].' + Du hast Dich soeben erfolgreich bei '.$seitenname.' angemeldet. + + Bitte aktiviere jetzt Deinen Account, klicke dazu bitte auf den + Aktivierungslink: '.$domain.'/?content=/intern/aktivieren&ak='.$ak.' + + ---------------------------------------------------------- + Kontonummer: '.$_POST['uid'].' + Passwort: '.$_POST['passwort_1'].' + ---------------------------------------------------------- + + Nach der Aktivierung kannst Du dich sofort einloggen und bei + uns teilnehmen. + + Mit freundlichen Grüßen + Das '.$seitenname.' Team + '; + usermail($_POST['emailadresse'], "$seitenname Accountaktivierung", $email_message, '"'.$seitenname.'" <'.$betreibermail.'>'); + $anmeldeok = "true"; + } + +} + +if ($error){ +head("Anmeldefehler"); +echo '<font color="#cc0000">'.$error.'</font>'; +foot(); +} +?> + +<? if ($anmeldeok != "true") { ?> +<?head("$seitenname - Neuanmeldung");?> +<center><b>Neuanmeldung</b></center> + <table width="100%" cellpadding="3" cellspacing="0" border="0"> + <form action="" method="post"> + <tr> + <td class="main"><b>Nickname:</b></td> + <td class="main"><input type="text" name="nickname" value="<?=$_POST['nickname'];?>"></td> + </tr> + <tr> + <td class="main"><b>Nachname:</b></td> + <td class="main"><input type="text" name="nachname" value="<?=$_POST['nachname'];?>"></td> + </tr> + <tr> + <td class="main"><b>Vorname:</b></td> + <td class="main"><input type="text" name="vorname" value="<?=$_POST['vorname'];?>"></td> + </tr> + <tr> + <td class="main"><b>Emailadresse:</b></td> + <td class="main"><input type="text" name="emailadresse" value="<?=$_POST['emailadresse'];?>"></td> + </tr> + <tr> + <td class="main"><b>Klamm Id:</b></td> + <td class="main"><input type="text" name="uid" value="<?=$_POST['uid'];?>"></td> + </tr> + <tr> + <td class="main"><b>Lose-Passwort zur Identifizierung:</b></td> + <td class="main"><input type="password" name="uid_passwort"></td> + </tr> + <tr> + <td class="main">Werber:</td> + <td class="main"><? if($_SESSION['werber'] == 0) {echo '<b>keinen</b>';} else {echo $_SESSION['werber'];}?></td> + </tr> + <tr> + <td class="main"><b>Passwort:</b></td> + <td class="main"><input type="password" name="passwort_1"></td> + </tr> + <tr> + <td class="main"><b>Passwortbestätigung:</b></td> + <td class="main"><input type="password" name="passwort_2"></td> + </tr> + <tr> + <td class="main"><b>Paidmails empfangen:</b></td> + <td class="main"><select name="paidmails"><option value="1" <? if ($_POST['paidmails'] == 1) { echo 'selected';}?>>Ja</option><option value="0" <? if ($_POST['paidmails'] != 1) { echo 'selected';}?>>Nein</option></select></td> + </tr> + <tr> + <td class="main"><b>Newsletter:</b></td> + <td class="main"><select name="newsletter"><option value="1" <? if ($_POST['newsletter'] == "1") { echo 'selected';}?>>Ja</option><option value="0" <? if ($_POST['newsletter'] != "1") { echo 'selected';}?>>Nein</option></select></td> + </tr> + <tr> + <td class="main"><b>AGB`s gelesen und akzeptiert:</b></td> + <td class="main"><select name="agb"><option value="ja" <? if ($_POST['agb'] == "ja") { echo 'selected';}?>>Ja</option><option value="nein" <? if ($_POST['agb'] != "ja") { echo 'selected';}?>>Nein</option></select></td> + </tr> + <tr> + <td class="main" align="center" colspan="2"> + Vor dem Anmelden lese bitte die AGB`s!<br><br> + <input type="submit" name="anmelden" value="Jetzt anmelden!"> + </td> + </tr> + </form> + </table> +<?foot();?> +<?} else {?> +<?head("$seitenname - Anmeldung erfolgreich!");?> +Deine Anmeldung bei <?=$seitenname;?> war erfolgreich, Du bekommst jetzt eine Email mit Deinen Daten und einen Aktivierungslink. +Sobald Du deinen Account aktiviert hast kannst Du dich bei uns einloggen und diese Seite im vollen Umfang nutzen.<br> +<br> +Bitte beachte dass es auch etwas dauern kann bis die Aktivierungsmail bei Dir ankommt, dieses ist anhängig von Deinem Emailanbieter.<br> +<br> +Mit freundlichen Grüßen<br> +Das <?=$seitenname;?> Team<br> + +<?foot();?> +<? } ?> + diff --git a/content/intern/daten.php b/content/intern/daten.php new file mode 100644 index 0000000..4cac64b --- /dev/null +++ b/content/intern/daten.php @@ -0,0 +1,42 @@ +<? +if (isset($_POST['anf_daten']) && isset($_POST['anf_email'])) { + $_POST['anf_email'] = addslashes ($_POST['anf_email']); + + $daten_anfordern = mysql_fetch_array(db_query("SELECT `uid`,`emailadresse` FROM ".$db_prefix."_emaildaten WHERE emailadresse = '".$_POST['anf_email']."' LIMIT 1")); + if ($daten_anfordern['emailadresse']) { + $neues_passwort = create_code(8); + db_query ("UPDATE ".$db_prefix."_kontodaten SET passwort='".md5($neues_passwort)."' WHERE uid=".$daten_anfordern['uid'].""); + $email_message = 'Hallo, + Du hast soeben die Zugangsdaten für '.$seitenname.' angefordert. + + ---------------------------------------------------------- + Kontonummer: '.$daten_anfordern['uid'].' + Passwort: '.$neues_passwort.' + ---------------------------------------------------------- + + Jetzt kannst Du dich wieder auf '.$domain.' + einloggen und das Passwort wieder ändern! + + Mit freundlichen Grüßen + Das '.$seitenname.' Team + '; + usermail ($daten_anfordern['emailadresse'], "$seitenname Passwort", $email_message, '"'.$seitenname.'" <'.$betreibermail.'>'); + $error_msg = '<b>Passwort wurde zugesandt!</b><br>'; + } else { + $error_msg = '<b>Emailadresse nicht bekannt!</b><br>'; + } +} +?> +<?head("Zugangsdaten anfordern");?> +<p align="center"><font color="red"> <?=$error_msg;?></font></p> + +Wenn Du deine Zugangsdaten mal verloren haben solltest oder diese einfach nur mal verlegt hast, +kannst Du hier diese Daten wieder in Erfahrung bringen. Wir senden an Deine bei uns gespeicherte +Emailadresse sofort die Daten zu.<br> +<form action="" method="post"> +<div align="center"> +<b>Angemeldetet Email-Adresse: </b><input type="Text" name="anf_email"> <input type="Submit" name="anf_daten" value="Anfordern!" style="width:120px;"> +</div> +</form> +<?foot();?> + diff --git a/content/intern/faqs.php b/content/intern/faqs.php new file mode 100644 index 0000000..7fcc287 --- /dev/null +++ b/content/intern/faqs.php @@ -0,0 +1,14 @@ +<? +// Variabeln +$filename = 'lib/texte/faq.txt'; + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> + +<?head("Fragen und Antworten");?> +<?=nl2br($inhalt);?> +<?foot();?> \ No newline at end of file diff --git a/content/intern/impressum.php b/content/intern/impressum.php new file mode 100644 index 0000000..ddfc23b --- /dev/null +++ b/content/intern/impressum.php @@ -0,0 +1,20 @@ +<?head("Impressum von ".$seitenname."");?> +Daniel Roß<BR> +Mittelweg 6<BR> +56479 Niederroßbach<BR> +DEUTSCHLAND<BR> +<BR> +<b>Betreiber:</b> gremlincomputer [~at~] gmx.de +<?foot();?> + +<?head("Rechtlicher Hinweis");?> +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> +<br> +Die private oder gewerbliche Verwendung von Inhalten jeglicher Art bedarf der vorherigen Zustimmung von <a href="<?=$domain;?>" target="_blank"><?=$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> +<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> +<?foot();?> \ No newline at end of file diff --git a/content/intern/mediadaten.php b/content/intern/mediadaten.php new file mode 100644 index 0000000..f90c44d --- /dev/null +++ b/content/intern/mediadaten.php @@ -0,0 +1,102 @@ +<? +if (!isset($fc_gebucht)) $fc_gebucht = ''; +if (!isset($fc_menge)) $fc_menge = ''; +if (!isset($fc_wert)) $fc_wert = ''; +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")); + +$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)) { +$fc_gebucht++; +$fc_menge = $fc_menge + $count['menge']; +$fc_wert = $fc_wert + ($count['verdienst']*$count['menge']); +} + +$heute = strtotime("".date("m")."/".date("d")."/".date("Y").""); // Format mm.tt.yyyy +$seitenstart = strtotime("04/02/2005"); // Format mm.tt.yyyy +$tage = ($heute - $seitenstart) / 86400; +if ($tage <= 1) $tage = 1; +?> + +<?head("Mediadaten - $seitenname");?> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td width="50%">Start dieser Seite</td> +<td width="50%"><?=date("d.m.Y",$seitenstart);?></td> +</tr> +<tr> +<td width="50%">Guthaben aller User</td> +<td width="50%"><?=@number_format($kontostats['kd_kontostand'],2,",",".");?> <?=$waehrung;?></td> +</tr> +<tr> +<td width="50%">Guthaben Ø pro User</td> +<td width="50%"><?=@number_format($kontostats['kd_kontostand'] / $kontostats['kd_uid'],2,",",".");?> <?=$waehrung;?></td> +</tr> +<tr> +<td width="50%">Angemeldete User</td> +<td width="50%"><?=@number_format($kontostats['kd_uid'],0,",",".");?></td> +</tr> +<tr> +<td width="50%">Anmeldungen pro Tag</td> +<td width="50%"><?=@number_format($kontostats['kd_uid'] / $tage,2,",",".");?></td> +</tr> +</table> +<?foot();?> + +<?head("Mediadaten - Diverses");?> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td width="50%">Forcedklicks aller User</td> +<td width="50%"><?=@number_format($kontostats['kd_klicks'],0,",",".");?> Klicks</td> +</tr> +<tr> +<td width="50%">Verdienst bei allen Forcedklicks</td> +<td width="50%"><?=@number_format($kontostats['kd_kv'],2,",",".");?> <?=$waehrung;?></td> +</tr> +<tr> +<td width="50%">Ø Verdienst pro Klick</td> +<td width="50%"><?=@number_format($kontostats['kd_kv']/$kontostats['kd_klicks'],2,",",".");?> <?=$waehrung;?></td> +</tr> +</table> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td width="50%">Bettelaufrufe alle User</td> +<td width="50%"><?=@number_format($kontostats['kd_angebettelt'],0,",",".");?> Aufrufe</td> +</tr> +<tr> +<td width="50%">Verdienst bei allen Bettelaufrufen</td> +<td width="50%"><?=@number_format($kontostats['kd_bv'],2,",",".");?> <?=$waehrung;?></td> +</tr> +<tr> +<td width="50%">Ø Verdienst pro Aufruf</td> +<td width="50%"><?=@number_format($kontostats['kd_bv']/$kontostats['kd_angebettelt'],2,",",".");?> <?=$waehrung;?></td> +</tr> +</table> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td width="50%">Refverdienste für alle Werber</td> +<td width="50%"><?=@number_format($werberdaten['wd_gesamt'],2,",",".");?> <?=$waehrung;?></td> +</tr> +</table> +<?foot();?> + +<?head("Mediadaten - Werbung");?> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td width="50%">Forcedklick Kampagnen</td> +<td width="50%"><?=@number_format($fc_gebucht,0,",",".");?> Kampagnen</td> +</tr> +<tr> +<td width="50%">Forcedklick Restklicks</td> +<td width="50%"><?=@number_format($fc_menge,0,",",".");?> Klicks</td> +</tr> +<tr> +<td width="50%">Forcedklicks Gesamtwert</td> +<td width="50%"><?=@number_format($fc_wert,2,",",".");?> <?=$waehrung;?></td> +</tr> +</table> +<?foot();?> \ No newline at end of file diff --git a/content/intern/startseite.php b/content/intern/startseite.php new file mode 100644 index 0000000..5141a51 --- /dev/null +++ b/content/intern/startseite.php @@ -0,0 +1,42 @@ +<?head("Willkommen auf ".$seitenname);?> +Hier werden sie mit Klammlose 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 +massiv steigern können<br> +<br> +Viel Spaß beim verdienen wünscht Vorname Nachname<br> +<?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(); + } +} +?> + +<?head("Verdienst auf ganzer Linie !");?> +Bei <?=$seitenname;?> verdienen sie für fast alles Klammlose. Sie können durch das +surfen mit der Surfbar, Clickbanner, Paidmails, Werben neuer Mitglieder, etc... +viele Klammlose erwirtschaften. +<ul> +<li><b>3 Ref-Ebenen:</b> +Ü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 Klammlose +verdienen selbst wenn Sie selbst nichts als werben neuer Mitglieder machen. +Die Ref-Ebenen: 8% / 3% / 1%<br> +</li> +<li><b>Clickbanner & Paidmails:</b> +Durch das klicken auf Clickbanner oder das bestätigen von Paidmails können Sie +ihrer Verdienst weiter steigern<br> +</li> +<li><b>Bettelsystem:</b> +Bringen sie andere User dazu ihren Bettelink zu klicken und erhöhen Sie sich +so ihren Verdienst<br> +</li> +</ul> +<?foot();?> diff --git a/content/intern/werbemittel.php b/content/intern/werbemittel.php new file mode 100644 index 0000000..a939302 --- /dev/null +++ b/content/intern/werbemittel.php @@ -0,0 +1,39 @@ +<? +/* +Weitere Werbemittel einfach in den Ordner /images/banner/ laden! +Diese werden automatisch erkannt und aufgelistet! +*/ + +if ($_SESSION['uid'] >= 0) {?> +<? head("Dein Werbelinks"); ?> +<table> +<tr><td align="right"><b>Dein Reflink:</b></td><td align="left"> <a href="<?=$domain;?>/?ref=<?=$_SESSION['uid'];?>" target="_blank"><?=$domain;?>/?ref=<?=$_SESSION['uid'];?></a></td></tr> +<tr><td align="right"><b>Reflink und Bettellink:</b></td><td align="left"> <a href="<?=$domain;?>/?content=/betteln&ref=<?=$_SESSION['uid'];?>" target="_blank"><?=$domain;?>/?content=/betteln&ref=<?=$_SESSION['uid'];?></a></td></tr> +</table> +<? foot(); + + $url = $domain.'/?content=/betteln&ref='.$_SESSION['uid'].''; +}else{ + $url = $domain; +} + +?> + +<?head("".$seitenname." - Werbemittel");?> +<div align="center"> +<? +$open = opendir('./images/banner/'); +while ($banner = readdir($open)){ + if ($banner != '..' && $banner != '.' && $banner != 'Thumbs.db'){ + $size = getimagesize('images/banner/'.$banner); + $groesse = filesize('images/banner/'.$banner.'')/1024; + echo ' + <b>'.$size[0].'x'.$size[1].' (~ '.round($groesse).' KB)</b><br> + <img src="images/banner/'.$banner.'" alt="'.$seitenname.'"><br> + <textarea style="width:468px; height:50px;"><a href="'.$url.'" target="_blank"><img src="'.$domain.'/images/banner/'.$banner.'" alt="'.$seitenname.'" border="0"></a></textarea><br><br>'; + } +} +closedir($open); +?> +</div> +<?foot();?> \ No newline at end of file diff --git a/content/konto/auszahlen.php b/content/konto/auszahlen.php new file mode 100644 index 0000000..4ed8529 --- /dev/null +++ b/content/konto/auszahlen.php @@ -0,0 +1,79 @@ +<? userstatus(); + +// Variabeln definieren +if (!isset($_POST['auszahlen'])) $_POST['auszahlen'] = ""; +if (!isset($_POST['uid_passwort'])) $_POST['uid_passwort'] = ""; +if (!isset($_POST['trans_menge'])) $_POST['trans_menge'] = ""; +if (!isset($auszahlmeldung)) $auszahlmeldung = ""; + +$tag = strtotime("".date("m")."/".date("d")."/".date("Y")." 0 hours 0 minutes 0 seconds"); +$schnittstelle = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_schnittstelle LIMIT 1")) or die("Keine Schnittstellendaten!"); + +if ($schnittstelle['anfragen_user'] != 0){ +$s_verbrauch = mysql_num_rows(db_query("SELECT * FROM ".$db_prefix."_schnittstelle_anfragen WHERE uid='".$_SESSION['uid']."' and zeit='".$tag."'")); +} + +$kontodaten = mysql_fetch_array(db_query("SELECT `kontostand` FROM ".$db_prefix."_kontodaten WHERE uid=".$_SESSION['uid']." LIMIT 1")); + +if ($_POST['auszahlen'] == 'Auszahlen' && $_POST['uid_passwort'] && $_POST['trans_menge']) { + if (!ereg("[^0-9]", $_POST['trans_menge']) and $_POST['trans_menge'] >= $schnittstelle['auszahlsumme']) { + if ($_POST['trans_menge'] <= $kontodaten['kontostand']) { + if ($schnittstelle['anfragen_user'] == 0 or $s_verbrauch < $schnittstelle['anfragen_user']) { + $buchungs_id = create_code(14); + @require_once ("lib/schnittstellen/".$schnittstelle['schnittstelle'].".php"); + @auszahlen ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['uid_passwort'],$schnittstelle['betreiber_kennung'],$_POST['trans_menge'],$schnittstelle['auszahltext'],''); + if ($schnittstelle['anfragen_user'] != 0) db_query("INSERT INTO ".$db_prefix."_schnittstelle_anfragen (zeit,uid) VALUES ('".$tag."','".$_SESSION['uid']."')"); + if ($error) { + $auszahlmeldung = $trans_ausgabe; + } else { + kontobuchung ('-',$_POST['trans_menge'],$_SESSION['uid']); + buchungsliste ($buchungs_id,'-'.$_POST['trans_menge'],$schnittstelle['auszahltext'],$_SESSION['uid']); + $auszahlmeldung = 'Es wurden '.$_POST['trans_menge'].' '.$waehrung.' ausgezahlt'; + } + } else { + $auszahlmeldung = 'Deine Schnittstellenanfragen sind verbraucht!!!'; + } + } else { + $auszahlmeldung = 'Soviel Guthaben hast Du nicht!!!'; + } + } else { + $auszahlmeldung = 'Bitte achte auch die Buchungsmenge!!!'; + } +} else { +if ($_POST['auszahlen'] == 'Auszahlen') $auszahlmeldung = 'Eingabefehler, bitte wiederholen!!!'; +} + +?> +<?head($waehrung." auszahlen");?> +Hier kannst Du deine <?=$waehrung;?> wieder auszahlen, auch bei der Auszahlung wird das Lose-Passwort benötigt um +festzustellen ob Du nicht gesperrt bist.<br> +<br> +Hinweis: Wenn Du mal nicht auszahlen kannst weil es heisst das der Betreiber nicht genug Klammlose hat, dann erschrecke +bitte nicht gleich. Zur Sicherheit des Userguthabens haben wir nur ca. 20% des Userguthabens offen liegen und der Rest +ist im Tresor. Schreibe einfache eine Email, wenn wir es mal vergessen haben sollten genug umzubuchen.<br> +<br> +<i><font color="#FF0000">* Das Lose-Passwort wird nicht gespeichert, es dient nur zur Indentifizierung!</font></i> +<?foot();?> + +<?head("Auszahlen");?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Kontonummer</td><td align="left"><?=$_SESSION['uid'];?></td> +</tr> +<tr> +<td align="left">Aktueller Kontostand</td><td align="left"><?=number_format($kontodaten['kontostand'],2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td align="left"><?=$waehrung;?> (min. <?=$schnittstelle['auszahlsumme'];?> <?=$waehrung;?>)</td><td align="left"><input type="Text" name="trans_menge" value=""></td> +</tr> +<tr> +<td align="left">Lose-Passwort *</td><td align="left"><input type="Password" name="uid_passwort" value=""></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="auszahlen" value="Auszahlen"></td> +</tr> +</table> +</form> +<?if ($auszahlmeldung) echo '<div align="center"><font color="#800000">'.$auszahlmeldung.'</font></div>';?> +<?foot();?> diff --git a/content/konto/buchungen.php b/content/konto/buchungen.php new file mode 100644 index 0000000..464678a --- /dev/null +++ b/content/konto/buchungen.php @@ -0,0 +1,34 @@ +<? userstatus();?> + +<?head('Buchungsübersicht (max. 50 Buchungen)');?> +<table border="0" width="100%" cellpadding="1" cellspacing="1" bgcolor="#000000"> +<tr class="tr_head"> +<td align="center"><b>Zeit</b></td> +<td align="center"><b>Buchung</b></td> +<td align="center"><b><?=$waehrung;?></b></td> +<td align="center"><b>Verwendungszweck</b></td> +</tr> +<? +$buchungen_lesen = db_query("SELECT * FROM ".$db_prefix."_buchungen WHERE uid=".$_SESSION['uid']." ORDER BY buchungszeit DESC LIMIT 50"); +while ($buchung_schreiben = mysql_fetch_array($buchungen_lesen)) { +$i++; +$buchcolor = '#000000'; +if ($buchung_schreiben['buchungsmenge'] < 0) $buchcolor='#cc0000'; + +if ($i % 2 == 0){ + $row = 0; +} else { + $row = 1; +} +?> +<tr class="tr_row<?=$row;?>"> +<td align="left"> <?=date("d.m.Y - H:i",$buchung_schreiben['buchungszeit']);?> </td> +<td align="center"> <?=$buchung_schreiben['buchungs_id'];?></td> +<td align="right"> <font color="<?=$buchcolor;?>"><?=number_format($buchung_schreiben['buchungsmenge'],2,",",".");?></font> </td> +<td align="left"> <?=$buchung_schreiben['verwendungszweck'];?></td> +</tr> +<? +} +?> +</table> +<?foot();?> \ No newline at end of file diff --git a/content/konto/einzahlen.php b/content/konto/einzahlen.php new file mode 100644 index 0000000..89f7ab4 --- /dev/null +++ b/content/konto/einzahlen.php @@ -0,0 +1,71 @@ +<? userstatus(); + +// Variabeln definieren +if (!isset($_POST['einzahlen'])) $_POST['einzahlen'] = ""; +if (!isset($_POST['uid_passwort'])) $_POST['uid_passwort'] = ""; +if (!isset($_POST['trans_menge'])) $_POST['trans_menge'] = ""; +if (!isset($einzahlmeldung)) $einzahlmeldung = ""; + +$schnittstelle = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_schnittstelle LIMIT 1")) or die("Userinfo"); +$tag = strtotime("".date("m")."/".date("d")."/".date("Y")." 0 hours 0 minutes 0 seconds"); + +if ($schnittstelle['anfragen_user'] != 0){ +$s_verbrauch = mysql_num_rows(db_query("SELECT * FROM ".$db_prefix."_schnittstelle_anfragen WHERE uid='".$_SESSION['uid']."' and zeit='".$tag."'")); +} + +$kontodaten = mysql_fetch_array(db_query("SELECT `kontostand` FROM ".$db_prefix."_kontodaten WHERE uid=".$_SESSION['uid']." LIMIT 1")); +if ($_POST['einzahlen'] == 'Einzahlen' && $_POST['uid_passwort'] && $_POST['trans_menge']) { + $einzahlgrenze = mysql_fetch_array(db_query("SELECT `einzahlgrenze` FROM ".$db_prefix."_seitenkonfig LIMIT 1")); + if (!ereg("[^0-9]", $_POST['trans_menge']) and $_POST['trans_menge'] >= $schnittstelle['einzahlsumme'] and ($kontodaten['kontostand']+$_POST['trans_menge']) <= $einzahlgrenze['einzahlgrenze']) { + if ($schnittstelle['anfragen_user'] == 0 or $s_verbrauch < $schnittstelle['anfragen_user']) { + $buchungs_id = create_code(14); + @require_once ("lib/schnittstellen/".$schnittstelle['schnittstelle'].".php"); + @einzahlen ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['uid_passwort'],$schnittstelle['betreiber_kennung'],$_POST['trans_menge'],$schnittstelle['einzahltext'],''); + if ($schnittstelle['anfragen_user'] != 0) db_query("INSERT INTO ".$db_prefix."_schnittstelle_anfragen (zeit,uid) VALUES ('".$tag."','".$_SESSION['uid']."')"); + if ($error) { + $einzahlmeldung = $trans_ausgabe; + } else { + kontobuchung ('+',$_POST['trans_menge'],$_SESSION['uid']); + buchungsliste ($buchungs_id,$_POST['trans_menge'],$schnittstelle['einzahltext'],$_SESSION['uid']); + $einzahlmeldung = 'Es wurden '.$_POST['trans_menge'].' '.$waehrung.' eingezahlt'; + } + } else { + $einzahlmeldung = 'Deine Schnittstellenanfragen sind verbraucht!!!'; + } + } else { + $einzahlmeldung = 'Bitte achte auch die Buchungsmenge!!!'; + } +} else { +if ($_POST['einzahlen'] == 'Einzahlen') $einzahlmeldung = 'Eingabefehler, bitte wiederholen!!!'; +} + +?> +<?head($waehrung." einzahlen");?> +Hier kannst Du Klammlose zu uns transferieren, die Lose werden Dir dann bei uns auf Dein Konto gutgeschrieben, +nach der Einzahlung kannst Du Dein Guthaben nutzen.<br> +<br> +<i><font color="#FF0000">* Das Lose-Passwort wird nicht gespeichert, es dient nur zur Indentifizierung!</font></i> +<?foot();?> + +<? head("Einazhlen"); ?> +<form action="" method="post"> +<table width="100%" border="0" cellpadding="2" cellspacing="2"> +<tr> +<td align="left" width="55%">Kontonummer</td><td align="left"><?=$_SESSION['uid'];?></td> +</tr> +<tr> +<td align="left">Aktueller Kontostand</td><td align="left"><?=number_format($kontodaten['kontostand'],2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td align="left"><?=$waehrung;?> (min. <?=$schnittstelle['einzahlsumme'];?> <?=$waehrung;?>)</td><td align="left"><input type="Text" name="trans_menge" value=""></td> +</tr> +<tr> +<td align="left">Lose-Passwort *</td><td align="left"><input type="Password" name="uid_passwort" value=""></td> +</tr> +<tr> +<td align="center" colspan="2"><input type="Submit" name="einzahlen" value="Einzahlen"></td> +</tr> +</table> +</form> +<?if ($einzahlmeldung) echo '<div align="center"><font color="#800000">'.$einzahlmeldung.'</font></div>';?> +<?foot();?> diff --git a/content/konto/refdetails.php b/content/konto/refdetails.php new file mode 100644 index 0000000..fee7652 --- /dev/null +++ b/content/konto/refdetails.php @@ -0,0 +1,107 @@ +<? +userstatus(); +// Variabeln definieren +if (!isset($_POST['refback'])) $_POST['refback'] = ""; +if (!isset($_POST['save'])) $_POST['save'] = ""; +if (!isset($_GET['ruid'])) $_GET['ruid'] = ""; +if (!isset($_GET['reset'])) $_GET['reset'] = ""; +$ebene2 = 0; +$ebene3 = 0; +$_GET['ruid'] = (int)$_GET['ruid']; + +if ($_GET['reset'] == 'true') { +db_query("UPDATE ".$db_prefix."_werberdaten SET + resetzeit = '".time()."', + reset = 0 +WHERE uid='".$_GET['ruid']."' and werber='".$_SESSION['uid']."' LIMIT 1"); +} + +if ($_POST['save'] == 'Save' && $_POST['refback'] >= 0 && $_POST['refback'] <= 100 && !ereg("[^0-9]", $_POST['refback'])) { +db_query("UPDATE ".$db_prefix."_werberdaten SET + refback = '".$_POST['refback']."' +WHERE uid='".$_GET['ruid']."' and werber='".$_SESSION['uid']."' LIMIT 1"); +} + + +$ref_check = db_query("SELECT w.uid,w.umsatz,w.reset,w.resetzeit,w.gesamt,w.refback,w.aktivzeit,w.zuordnungszeit,k.loginzeit,u.nickname FROM + ".$db_prefix."_werberdaten w + LEFT JOIN ".$db_prefix."_kontodaten k ON k.uid = w.uid + LEFT JOIN ".$db_prefix."_userdaten u ON u.uid = k.uid +WHERE w.uid=".$_GET['ruid']." and w.werber=".$_SESSION['uid']." LIMIT 1"); + +if (!mysql_num_rows($ref_check)) { +@include_once('content/error/kein_ref.php'); +@include_once('lib/footer.php'); +die(); +} + +$refuser = mysql_fetch_assoc($ref_check); + +if ($refuser['aktivzeit'] >= (time()-(86400*7))) $refstatus = '<img src="./images/gruen.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$refuser['aktivzeit']).'" align="absmiddle"> » User ist aktiv'; +if ($refuser['aktivzeit'] < (time()-(86400*7))) $refstatus = '<img src="./images/gelb.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$refuser['aktivzeit']).'" align="absmiddle"> » User seit 7 tagen inaktiv'; +if ($refuser['aktivzeit'] <= (time()-(86400*30))) $refstatus = '<img src="./images/rot.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$refuser['aktivzeit']).'" align="absmiddle"> » User seit 30 tagen inaktiv'; + + +$refebene_1 = db_query ("SELECT uid FROM ".$db_prefix."_werberdaten WHERE werber='".$_GET['ruid']."'"); +while ($anzeigen_1 = mysql_fetch_array($refebene_1)) { +$ebene2++; +} + +if ($ebene2 > 0){ + $refebene_1 = db_query ("SELECT uid FROM ".$db_prefix."_werberdaten WHERE werber='".$_GET['ruid']."'"); + while ($anzeigen_1 = mysql_fetch_array($refebene_1)) { + $refebene_2 = db_query ("SELECT * FROM ".$db_prefix."_werberdaten WHERE werber='".$anzeigen_1['uid']."' ORDER BY uid ASC"); + while ($anzeigen_2 = mysql_fetch_array($refebene_2)) { + $ebene3++; + } + } +} +?> + +<?head("Refdeteils von ".$refuser['nickname']);?> +<table width="100%" cellpadding="2" cellspacing="2" border="0"> +<tr> +<td width="50%"><b>User</b></td><td><?=$refuser['nickname'];?></td> +</tr> +<tr> +<td><b>Aktueller Verdienst</b></td><td><?=number_format($refuser['umsatz']/$pageconfig['re1'],2,",",".");?> <?=$waehrung;?></td> +</tr> + +<?if($refuser['resetzeit'] > 0){?> +<tr> +<td><b>Verdienst seit Reset</b></td><td><?=number_format($refuser['reset'],2,",",".");?> <?=$waehrung;?> » <a href="?content=/konto/refdetails&ruid=<?=$refuser['uid'];?>&reset=true" target="_self">Reset</a> «</td> +</tr> +<tr> +<td><b>Letzer Reset</b></td><td><?=date("d.m.Y - H:i:s",$refuser['resetzeit']);?></td> +</tr> +<?}?> + +<tr> +<td><b>Gesamtverdienst</b></td><td><?=number_format($refuser['gesamt'],2,",",".");?> <?=$waehrung;?></td> +</tr> +<tr> +<td><b>Refback in Prozent</b></td><form action="?content=/konto/refdetails&ruid=<?=$refuser['uid'];?>" method="post"><td><input type="Text" name="refback" value="<?=$refuser['refback'];?>" maxlength="3" style="width:30px"> <input type="Submit" name="save" value="Save" style="width:60px"></td></form> +</tr> +<tr> +<td><b>Refs in Ebene 2</b></td><td><?=number_format($ebene2,0,",",".");?></td> +</tr> +<tr> +<tr> +<td><b>Refs in Ebene 3</b></td><td><?=number_format($ebene3,0,",",".");?></td> +</tr> +<tr> +<td><b>Status</b></td><td><?=$refstatus;?></td> +</tr> +<tr> +<td><b>Refzuordnung am</b></td><td><?if ($refuser['zuordnungszeit'] >= 1) {echo date("d.m.Y - H:i:s",$refuser['zuordnungszeit']);} else {echo'<i>Durch Admin zugewiesen!</i>';}?></td> +</tr> + +<tr> +<td><b>Letzter Login</b></td><td><?if ($refuser['loginzeit'] >= 1) {echo date("d.m.Y - H:i:s",$refuser['loginzeit']);} else {echo'<i>User war noch nie eingeloggt!</i>';}?></td> +</tr> + +<tr> +<td><b>Letzte Aktivität</b></td><td><?if ($refuser['aktivzeit'] >= 1) {echo date("d.m.Y - H:i:s",$refuser['aktivzeit']);} else {echo'<i><font color="#800000">User war noch nie aktiv!</font></i>';}?></td> +</tr> +</table> +<?foot();?> diff --git a/content/konto/refuebersicht.php b/content/konto/refuebersicht.php new file mode 100644 index 0000000..4af43ca --- /dev/null +++ b/content/konto/refuebersicht.php @@ -0,0 +1,136 @@ +<? userstatus(); + +$ebene_1 = false; +$ebene_2 = false; +$ebene_3 = false; + +$ebene1 = db_query("SELECT * FROM ".$db_prefix."_werberdaten WHERE werber=".$_SESSION['uid']." ORDER BY uid ASC"); +if (mysql_num_rows($ebene1)){ + while ($user1 = mysql_fetch_assoc($ebene1)){ + $ebene_1 = true; + $count++; + if ($count % 2 == 0){$row = 0;}else{$row = 1;} + + if ($user1['aktivzeit'] >= (time()-(86400*7))) $refstatus = '<img src="./images/gruen.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user1['aktivzeit']).'">'; + if ($user1['aktivzeit'] < (time()-(86400*7))) $refstatus = '<img src="./images/gelb.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user1['aktivzeit']).'">'; + if ($user1['aktivzeit'] <= (time()-(86400*30))) $refstatus = '<img src="./images/rot.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user1['aktivzeit']).'">'; + + $anz .= ' + <tr class="tr_row'.$row.'"> + <td align="center"><a href="?content=/nickpage&uid='.$user1['uid'].'">'.$user1['uid'].'</a></td> + <td align="center">'.number_format($user1['umsatz']/100*$pageconfig['re1'],2,",",".").'</td> + <td align="center">'.number_format($user1['gesamt'],2,",",".").'</td> + <td align="center">'.$user1['refback'].'%</td> + <td align="center"><a href="?content=/konto/refdetails&ruid='.$user1['uid'].'" target="_self">'.$refstatus.'</a></td> + </tr> + '; + $ebene2 = db_query("SELECT * FROM ".$db_prefix."_werberdaten WHERE werber=".$user1['uid']." ORDER BY uid ASC"); + while ($user2 = mysql_fetch_assoc($ebene2)){ + $ebene_2 = true; + $count++; + if ($count % 2 == 0){$row = 0;}else{$row = 1;} + + if ($user2['aktivzeit'] >= (time()-(86400*7))) $refstatus = '<img src="./images/gruen.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user2['aktivzeit']).'">'; + if ($user2['aktivzeit'] < (time()-(86400*7))) $refstatus = '<img src="./images/gelb.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user2['aktivzeit']).'">'; + if ($user2['aktivzeit'] <= (time()-(86400*30))) $refstatus = '<img src="./images/rot.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user2['aktivzeit']).'">'; + + $anz2 .= ' + <tr class="tr_row'.$row.'"> + <td align="center"><a href="?content=/nickpage&uid='.$user2['uid'].'">'.$user2['uid'].'</a></td> + <td align="center">'.$user1['werber'].'</td> + <td align="center">'.number_format($user2['umsatz']/100*$pageconfig['re2'],2,",",".").'</td> + <td align="center">'.number_format($user2['gesamt'],2,",",".").'</td> + <td align="center">'.$refstatus.'</td> + </tr> + '; + + $ebene3 = db_query("SELECT * FROM ".$db_prefix."_werberdaten WHERE werber=".$user2['uid']." ORDER BY uid ASC"); + while ($user3 = mysql_fetch_assoc($ebene3)){ + $ebene_3 = true; + $count++; + if ($count % 2 == 0){$row = 0;}else{$row = 1;} + + if ($user3['aktivzeit'] >= (time()-(86400*7))) $refstatus = '<img src="./images/gruen.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user3['aktivzeit']).'">'; + if ($user3['aktivzeit'] < (time()-(86400*7))) $refstatus = '<img src="./images/gelb.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user3['aktivzeit']).'">'; + if ($user3['aktivzeit'] <= (time()-(86400*30))) $refstatus = '<img src="./images/rot.gif" width="15" height="15" border="0" alt="'.date("d.m.y - H:i",$user3['aktivzeit']).'">'; + + $anz3 .= ' + <tr class="tr_row'.$row.'"> + <td align="center"><a href="?content=/nickpage&uid='.$user3['uid'].'">'.$user3['uid'].'</a></td> + <td align="center">'.$user1['werber'].'</td> + <td align="center">'.number_format($user3['umsatz']/100*$pageconfig['re3'],2,",",".").'</td> + <td align="center">'.number_format($user3['gesamt'],2,",",".").'</td> + <td align="center">'.$refstatus.'</td> + </tr> + '; + + } + } + + } + +} +?> + +<? +if($ebene_1 == true){ +head("Refübersicht (Ebene 1)");?> +<table width="100%" cellpadding="0" cellspacing="1" bgcolor="#000000"> +<tr class="tr_head"> +<td align="center" width="20%"><b>User</b></td> +<td align="center" width="25%"><b>Aktuell</b></td> +<td align="center" width="25%"><b>Gesamt</b></td> +<td align="center" width="20%"><b>Refback</b></td> +<td align="center" width="10%"><b>Status</b></td> +</tr> +<?=$anz;?> +</table> +<?foot(); +}else{ +head("Keine Refs"); +echo "Keine Refs in Ebene 1"; +foot(); +} +?> + +<? +if ($ebene_2 == true){ +head("Refübersicht (Ebene 2)");?> +<table width="100%" cellpadding="0" cellspacing="1" bgcolor="#000000"> +<tr class="tr_head"> +<td align="center" width="20%"><b>User</b></td> +<td align="center" width="20%"><b>Werber</b></td> +<td align="center" width="25%"><b>Aktuell</b></td> +<td align="center" width="25%"><b>Gesamt</b></td> +<td align="center" width="10%"><b>Status</b></td> +</tr> +<?=$anz2;?> +</table> +<?foot(); +}else{ +head("Keine Refs"); +echo "Keine Refs in Ebene 2"; +foot(); +} +?> + +<? +if ($ebene_3 == true){ +head("Refübersicht (Ebene 3)");?> +<table width="100%" cellpadding="0" cellspacing="1" bgcolor="#000000"> +<tr class="tr_head"> +<td align="center" width="20%"><b>User</b></td> +<td align="center" width="20%"><b>Werber</b></td> +<td align="center" width="25%"><b>Aktuell</b></td> +<td align="center" width="25%"><b>Gesamt</b></td> +<td align="center" width="10%"><b>Status</b></td> +</tr> +<?$anz3;?> +</table> +<?foot(); +}else{ +head("Keine Refs"); +echo "Keine Refs in Ebene 3"; +foot(); +} +?> \ No newline at end of file diff --git a/content/konto/uebersicht.php b/content/konto/uebersicht.php new file mode 100644 index 0000000..3799fed --- /dev/null +++ b/content/konto/uebersicht.php @@ -0,0 +1,65 @@ +<? userstatus(); +$sql = db_query("SELECT u.nickname,u.vorname,u.nachname,u.angemeldet_seit,w.werber,w.umsatz,w.gesamt,w.refback,k.kontostand,k.klicks,k.kv,k.angebettelt,k.bv FROM + ".$db_prefix."_kontodaten k + LEFT JOIN ".$db_prefix."_userdaten u ON u.uid = k.uid + LEFT JOIN ".$db_prefix."_werberdaten w ON w.uid = k.uid +WHERE k.uid=".$_SESSION['uid']." LIMIT 1"); + +$kontoinfo = mysql_fetch_array($sql); + + +if ($kontoinfo['werber'] == 0) $kontoinfo['werber'] = '<i>Kein Werber</i>'; +?> +<?head("Kontoübersicht von ".$kontoinfo['vorname']." ".$kontoinfo['nachname']);?> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td align="left" width="55%">Nickname:</td><td align="left"><?=$kontoinfo['nickname'];?></td> +</tr> +<tr> +<td align="left" width="55%">Kontonummer</td><td align="left"><?=$_SESSION['uid'];?></td> +</tr> +<tr> +<td align="left">Konto eröffnet am</td><td align="left"><?=date("d.m.Y - H:i",$kontoinfo['angemeldet_seit']);?></td> +</tr> +<tr> +<td align="left">Aktueller Kontostand</td><td align="left"><?=number_format($kontoinfo['kontostand'],2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td align="left">Dein Werber (Refback %)</td><td align="left"><?=$kontoinfo['werber'];?> (<?=$kontoinfo['refback'];?> %)</td> +</tr> +<tr> +<td align="left">Aktueller Verdienst</td><td align="left"><?=number_format($kontoinfo['umsatz'] / 100 * $pageconfig['re1'],2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td align="left">Gesamt für den Werber</td><td align="left"><?=number_format($kontoinfo['gesamt'],2,",",".").' '.$waehrung;?></td> +</tr> +</table> +<?foot();?> + +<?head("Diverse Einnahmen");?> +<hr size="1" width="100%" color="#800000"> +<table width="100%" border="0" cellpadding="1" cellspacing="1"> +<tr> +<td align="left" width="55%">Forcedklicks seit Anmeldung</td><td align="left"><?=number_format($kontoinfo['klicks'],0,",",".");?></td> +</tr> +<tr> +<td align="left">Gesamtverdienst bei Forcedklicks</td><td align="left"><?=number_format($kontoinfo['kv'],2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td align="left">Ø Verdienst pro Forcedklick</td><td align="left"><?=number_format((($kontoinfo['klicks'] > 0 && $kontoinfo['kv'] > 0) ? $kontoinfo['kv']/$kontoinfo['klicks'] : 0),2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td colspan="2" width="100%%"><hr size="1" width="100%" color="#800000"></td> +</tr> +<tr> +<td align="left" width="55%">Bettelaufrufe seit Anmeldung</td><td align="left"><?=number_format($kontoinfo['angebettelt'],0,",",".");?></td> +</tr> +<tr> +<td align="left">Gesamtverdienst bei Bettelaufrufe</td><td align="left"><?=number_format($kontoinfo['bv'],2,",",".").' '.$waehrung;?></td> +</tr> +<tr> +<td align="left">Ø Verdienst pro Bettelaufruf</td><td align="left"><?=number_format((($kontoinfo['angebettelt'] > 0 && $kontoinfo['bv'] > 0) ? $kontoinfo['bv']/$kontoinfo['angebettelt'] : 0),2,",",".").' '.$waehrung;?></td> +</tr> +</table> +<?foot();?> + diff --git a/content/konto/userprofil.php b/content/konto/userprofil.php new file mode 100644 index 0000000..7b2b955 --- /dev/null +++ b/content/konto/userprofil.php @@ -0,0 +1,193 @@ +<? +userstatus(); +// Variabeln definieren +if (!isset($_POST['aendern'])) $_POST['aendern'] = ""; +if (!isset($_POST['acc_del'])) $_POST['acc_del'] = ""; +if (!isset($_POST['del_passwort'])) $_POST['del_passwort'] = ""; +if (!isset($_POST['pwd'])) $_POST['pwd'] = ""; +if (!isset($_POST['pwd2'])) $_POST['pwd2'] = ""; +if (!isset($_POST['nickname'])) $_POST['nickname'] = ""; +if (!isset($_POST['newsletter'])) $_POST['newsletter'] = ""; +if (!isset($_POST['paidmails'])) $_POST['paidmails'] = ""; +if (!isset($change)) $change = ""; +if (!isset($mailstatus)) $mailstatus = ""; +if (!isset($delchange)) $delchange = ""; + +if ($_POST['acc_del'] == 'Jetzt löschen!' && $_POST['del_passwort']) { + $schnittstelle = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_schnittstelle LIMIT 1")) or die("Userinfo"); + @require_once ("lib/schnittstellen/".$schnittstelle['schnittstelle'].".php"); + @uservalidate ($schnittstelle['betreiber_id'],$schnittstelle['betreiber_passwort'],$_SESSION['uid'],$_POST['del_passwort']); + if ($error) { + $delchange = $trans_ausgabe.'<br>'; + } else { + $sperrzeit = time()+(86400*30); + db_query("INSERT INTO ".$db_prefix."_userblacklist (uid,zeit) VALUES ('".$_SESSION['uid']."','".$sperrzeit."')"); + db_query("DELETE FROM ".$db_prefix."_kontodaten WHERE uid=".$_SESSION['uid'].""); + db_query("DELETE FROM ".$db_prefix."_emaildaten WHERE uid=".$_SESSION['uid'].""); + db_query("DELETE FROM ".$db_prefix."_userdaten WHERE uid=".$_SESSION['uid'].""); + db_query("DELETE FROM ".$db_prefix."_werberdaten WHERE uid=".$_SESSION['uid'].""); + db_query("UPDATE ".$db_prefix."_werberdaten SET werber = 0 WHERE werber=".$_SESSION['uid'].""); + echo '<meta http-equiv="refresh" content="0; URL=http://'.$_SERVER['HTTP_HOST'].'/?content=/intern/startseite&logout=true">'; + } + +} + +if ($_POST['aendern'] == 'Jetzt ändern!') { + // Passwort ändern beginn! + if ($_POST['pwd'] && $_POST['pwd2']) { + if ($_POST['pwd'] == $_POST['pwd2']) { + if (strlen($_POST['pwd']) >= 8) { + db_query("UPDATE ".$db_prefix."_kontodaten SET passwort = '".md5($_POST['pwd'])."' WHERE uid=".$_SESSION['uid'].""); + echo '<meta http-equiv="refresh" content="0; URL=http://'.$_SERVER['HTTP_HOST'].'/?content=/intern/startseite&logout=true">'; + //$change .= 'Das Passwort wurde geändert!<br><b><font color="#FF0000">Bitte logge Dich jetzt aus und wieder neu ein!</font></b><br>'; + } else { + $change = 'Passwörter müssen min. 8 Zeichen haben!'; + } + } else { + $change = 'Die Passwörter stimmen nicht überein!'; + } + } + // Passwort ändern ende! + + //Nickname ändern beginn ! +if ($_POST['aendern'] == 'Jetzt ändern!') + { + if (isset ($_POST['nickname'])) { + $nickname = mysql_real_escape_string(ucfirst($_POST['nickname'])); + $nickname_check =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$nickname."'"); + $nickname_check2 =db_query ("SELECT `nickname` FROM ".$db_prefix."_userdaten WHERE nickname='".$nickname."'AND uid=".$_SESSION['uid'].""); + if (mysql_num_rows($nickname_check)) + if (mysql_num_rows($nickname_check2)) { + + }else{ + $change = 'Dieser Nickname ist schon vergeben!<br>'; + } + else + { + db_query("UPDATE ".$db_prefix."_userdaten SET nickname = '".$nickname."' WHERE uid=".$_SESSION['uid'].""); + } + } + } + + if(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$",$_POST['emailadresse'])) + { + $change .= 'Der Emailsyntax ist falsch!<br>'; + } + else + { + if ($_POST['newsletter'] == 0 and $_POST['paidmails'] == 0) $mailstatus = 0; + if ($_POST['newsletter'] == 1 and $_POST['paidmails'] == 0) $mailstatus = 1; + if ($_POST['newsletter'] == 0 and $_POST['paidmails'] == 1) $mailstatus = 2; + if ($_POST['newsletter'] == 1 and $_POST['paidmails'] == 1) $mailstatus = 3; +$_POST['max_forced'] = (int)$_POST['max_forced']; + db_query("UPDATE ".$db_prefix."_emaildaten SET freigabe_fuer = ".$mailstatus.", emailadresse = '".$_POST['emailadresse']."' WHERE uid=".$_SESSION['uid'].""); + db_query("UPDATE ".$db_prefix."_userdaten SET max_forced = '".$_POST['max_forced']."' WHERE uid=".$_SESSION['uid'].""); + $change .= 'Deine Daten wurden aktualisiert!<br>'; + } + +} + + +$info = mysql_fetch_array(db_query("SELECT u.*,e.emailadresse,e.freigabe_fuer FROM + ".$db_prefix."_userdaten AS u + LEFT JOIN ".$db_prefix."_emaildaten AS e ON e.uid=u.uid +WHERE u.uid=".$_SESSION['uid']." LIMIT 1")); + + +if ($info['freigabe_fuer'] == 0) {$newsletter = 0; $paidmails = 0;} +if ($info['freigabe_fuer'] == 1) {$newsletter = 1; $paidmails = 0;} +if ($info['freigabe_fuer'] == 2) {$newsletter = 0; $paidmails = 1;} +if ($info['freigabe_fuer'] == 3) {$newsletter = 1; $paidmails = 1;} +?> + +<?head("$seitenname - Userprofil");?> +Hier findest Du deine Profildaten, bitte passe diese Daten immer an so das diese aktuell sind. Deaktiviere bitte +die Paidmails wenn Du keine habe möchtest!<br> +<?foot();?> + +<?head("$seitenname - Profildaten");?> + <form action="" method="post"> + <table width="100%" border="0" cellpadding="1" cellspacing="1"> + <tr> + <td>Nickname:</td> + <td><input type="text" name="nickname" value="<?=$info['nickname'];?>"></td> + </tr> + <tr> + <td>Name:</td> + <td><input type="text" value="<?=$info['nachname'];?>"></td> + </tr> + <tr> + <td>Vorname:</td> + <td><input type="text" value="<?=$info['vorname'];?>"></td> + </tr> + <tr> + <td>Emailadresse:</td> + <td><input type="text" name="emailadresse" value="<?=$info['emailadresse'];?>"></td> + </tr> + <tr> + <td>Klamm-Id:</td> + <td><?=$_SESSION['uid'];?></td> + </tr> + <tr> + <td>Neues Passwort:</td> + <td><input type="password" name="pwd"></td> + </tr> + <tr> + <td>Neues Passwortbestätigung:</td> + <td><input type="password" name="pwd2"></td> + </tr> + <tr> + <td>Newsletter:</td> + <td> + <select name="newsletter"> + <option value="1" <? if ($newsletter == 1) echo 'selected';?>>Ja</option> + <option value="0" <? if ($newsletter == 0) echo 'selected';?>>Nein</option> + </select> + </td> + </tr> + <tr> + <td>Paidmails:</td> + <td> + <select name="paidmails"> + <option value="1" <? if ($paidmails == 1) echo 'selected';?>>Ja</option> + <option value="0" <? if ($paidmails == 0) echo 'selected';?>>Nein</option> + </select> + </td> + </tr> + <tr> + <td>Max. anzeigbare Forcedbanner:</td> + <td> + <select name="max_forced"> + <option value="3" <? if ($info['max_forced'] == 3) echo 'selected';?>>3</option> + <option value="5" <? if ($info['max_forced'] == 5) echo 'selected';?>>5</option> + <option value="10" <? if ($info['max_forced'] == 10) echo 'selected';?>>10</option> + <option value="20" <? if ($info['max_forced'] == 20) echo 'selected';?>>20</option> + <option value="30" <? if ($info['max_forced'] == 30) echo 'selected';?>>30</option> + <option value="40" <? if ($info['max_forced'] == 40) echo 'selected';?>>40</option> + <option value="50" <? if ($info['max_forced'] == 50) echo 'selected';?>>50</option> + </select> + </td> + </tr> + <tr> + <td align="center" colspan="2"><br> + <input type="submit" name="aendern" value="Jetzt ändern!"><br> + <br> + <?=$change;?> + </td> + </tr> + </table> + </form> +<?foot();?> + +<?head("$seitenname - Account löschen");?> +Hier an dieser Stelle kannst Du deinen Account sofort selber löschen wenn Du es wünscht. +Bitte bedenke das alle Daten von Dir verloren gehen und bestehendes Guthaben dann auch +verloren geht, eine spätere Forderung an <?=$waehrung;?> ist ausgeschlossen! +<div align="center"> +<form action="" method="post"><br> +<?=$delchange;?> +Schnittstellen-Passwort: <input type="Password" name="del_passwort" value=""> <input type="Submit" name="acc_del" value="Jetzt löschen!"> +</form> +<div align="center"><font color="#cc0000">Bei Löschung des Accounts bist Du für 30 Tage für eine Neuanmeldung gesperrt!</font></div><br> +</div> +<?foot();?> diff --git a/content/module.php b/content/module.php new file mode 100644 index 0000000..27cbcee --- /dev/null +++ b/content/module.php @@ -0,0 +1,38 @@ +<? +// Aussehen des Copyrights einstellen +$style = 2; // Design: Zahlen 1-4; Jeweils die gewuenschte Zahl eingeben und speichern. +// Einstellungen Ende + +$dir = './module/'; +$linkstyle = 'index.php?content=/module&mod='; +if (isset ($err)) unset ($err); + +function display ($msg) { +global $style; + if ($style == 1) head ('<div style="text-align: center;">'.$msg.'</div>').foot(); + elseif ($style == 2) { + head ('Hersteller'); + echo '<div style="text-align: center;">'.$msg.'</div>'; + foot(); + } elseif ($style == 3) echo '<div style="text-align: right;">'.$msg.'</div>'; + else echo '<div style="text-align: center;">'.$msg.'</div>'; +} + +if (isset ($_GET['mod'])) { + if (is_dir ($dir.$_GET['mod'])) { + require ( './lib/module.lib.php' ); + define ('MODULSYSTEM_LOADED', TRUE); // "Modulsystem geladen" melden wegen Sicherheitspruefung + if (!isset ($_GET['open']) && file_exists ($dir.$_GET['mod'].'/module.php')) require ($dir.$_GET['mod'].'/module.php'); + elseif (isset ($_GET['open']) && file_exists ($dir.$_GET['mod'].'/'.$_GET['open'].'.php')) require ($dir.$_GET['mod'].'/'.$_GET['open'].'.php'); + else $err = 'Die Moduldatei wurde nicht gefunden.'; + } else $err = 'Das angegebene Modul wurde nicht gefunden.'; +} else $err = 'Es wurde kein Modulname übergeben.'; + +if (isset ($err)) { + head ('Fehler'); + echo 'Es ist ein Fehler auf unserer Seite aufgetreten:<br /><br />' . $err; + foot (); + + display ('Modulsystem © by <a href="http://www.totaltoll.de" target="_blank">TotalToll.de</a>'); +} else display ('<a href="javascript:;">Modulinformationen</a>'); +?> diff --git a/content/nickpage.php b/content/nickpage.php new file mode 100644 index 0000000..3f5d8e9 --- /dev/null +++ b/content/nickpage.php @@ -0,0 +1,15 @@ +<? +$_GET['nick'] = addslashes($_GET['nick']); + +$sql = db_query("SELECT u.angemeldet_seit,k.klicks,k.kv,k.angebettelt,k.bv FROM + ".$db_prefix."_kontodaten k + LEFT JOIN ".$db_prefix."_userdaten u ON u.uid = k.uid +WHERE u.nickname='".$_GET['nick']."' LIMIT 1"); + +$np = mysql_fetch_assoc($sql); +head("Nickpage von ".$_GET['nick']);?> + +<b>Angemeldet seit:</b> <?=date("d.m.Y - H:i",$np['angemeldet_seit']);?><br> +<b>Paidbannerstatistik:</b> <?=$np['klicks'];?> Klicks | Verdienst: <?=$np['kv'];?><br> +<b>Bettellinkstatistik:</b> <?=$np['angebettelt'];?> Aufrufe | Verdienst: <?=$np['bv'];?> +<?foot();?> \ No newline at end of file diff --git a/content/ralleys/aktiv.php b/content/ralleys/aktiv.php new file mode 100644 index 0000000..51425c3 --- /dev/null +++ b/content/ralleys/aktiv.php @@ -0,0 +1,63 @@ +<? +// Variabeln +$filename = 'lib/texte/aktivralley.txt'; +$rp = 1; + +// Ralleydaten auslesen +$ralleydaten = mysql_fetch_array (db_query ('SELECT * FROM '.$db_prefix.'_ralleydaten WHERE ralley = "aktivralley" LIMIT 1')); + +// Datei auslesen +if (is_readable ($filename)) $inhalt = implode ('', file ($filename)); +else echo 'Datei '.$filename.' kann nicht gelesen werden!'; +//$inhalt = str_replace('\\', '', $inhalt); + +if (!empty ($inhalt)){ + head ('Unsere Aktivralley'); + echo nl2br ($inhalt); + foot (); +} + +head ('Platzierungen und Preise'); ?> +Dieses Aktivralley läuft von <b><?=date("d.m.Y - H:i:s",$ralleydaten['start']);?></b> bis <b><?=date("d.m.Y - H:i:s",$ralleydaten['ende']);?></b>.<br> +Für diese Ralley sind <b><?=number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung;?></b> ausgelobt die auf die Plätze <b>1</b> bis <b><?=$ralleydaten['plaetze'];?></b> verteilt werden. +<? +if ($ralleydaten['pro'] > 0.00) echo 'Es müssen mindestens <b>'.number_format($ralleydaten['pro'], 0, ',', '.').' Punkte</b> erreicht werden um gewertet zu werden'; ?> +<br /> +<br /> + +<table width="100%" cellpadding="1" cellspacing="1" border="0"> + <tr class="tr_head"> + <td width="50"><b>Rang</b></td> + <td><b>User</b></td> + <td width="100"><b>Punkte</b></td> + <td width="150"><b>möglicher Gewinn</b></td> + </tr> + +<? +$platz = db_query ('SELECT a.punkte, u.nickname FROM '.$db_prefix.'_aktivralley AS a LEFT JOIN '.$db_prefix.'_userdaten AS u ON u.uid = a.uid WHERE a.punkte > '.$ralleydaten['pro'].' AND a.uid != 0 ORDER BY a.punkte DESC LIMIT 10'); +while ($pa = mysql_fetch_array($platz)) { + $row = ($rp % 2 == 0) ? 0 : 1; + $mg = ($rp <= $ralleydaten['plaetze']) ? number_format($ralleydaten['p'.$rp],2, ',', '.').' '.$waehrung : '---'; ?> + <tr class="tr_row<?=$row;?>"> + <td align="right"><?=$rp++;?>. </td> + <td> <?=$pa['nickname'];?></td> + <td align="right"><?=number_format($pa['punkte'],2,",",".");?> </td> + <td align="right"><?=$mg;?> </td> + </tr> +<? +} + +for($x=$rp;$x<11;$x++){ + $row = ($rp % 2 == 0) ? 0 : 1; + $mg = ($rp <= $ralleydaten['plaetze']) ? number_format($ralleydaten['p'.$rp],2, ',', '.').' '.$waehrung : '---'; ?> + <tr class="tr_row<?=$row;?>"> + <td align="right"><?=$rp++;?>. </td> + <td> n/a</td> + <td align="right">0 </td> + <td align="right"><?=$mg;?> </td> + </tr> +<? + } ?> +</table> +<? +foot(); ?> \ No newline at end of file diff --git a/content/ralleys/klick.php b/content/ralleys/klick.php new file mode 100644 index 0000000..504e5b5 --- /dev/null +++ b/content/ralleys/klick.php @@ -0,0 +1,71 @@ +<? +// Variabeln +$filename = 'lib/texte/klickralley.txt'; +$rp = 1; + +// Ralleydaten auslesen +$ralleydaten = mysql_fetch_array (db_query ('SELECT * FROM '.$db_prefix.'_ralleydaten WHERE ralley = "klickralley" LIMIT 1')); + +// Datei auslesen +if (is_readable ($filename)) $inhalt = implode ('', file ($filename)); +else echo 'Datei '.$filename.' kann nicht gelesen werden!'; + +if ($inhalt != ''){ + head ('Unsere Klickralley'); + echo nl2br ($inhalt); + foot (); +} + + +head ('Platzierungen und Preise'); + +if ($ralleydaten['art'] != 'statisch') { ?> +<div>Diese Klickralley läuft vom <b><?=date('d.m.Y H:i', $ralleydaten['start']);?></b> bis zum <b><?=date('d.m.Y H:i', $ralleydaten['ende']);?></b>.<br /> +Dabei handelt es sich um eine dynamische Klickralley wo pro Klick <b><?=number_format($ralleydaten['pro'], 2, ',', '.').' '.$waehrung;?></b> in den Jackpot fliesen.<br /> +Im Jackpot befinden sicher gerade <b><?=number_format($ralleydaten['jackpot'], 2, ',', '.').' '.$waehrung;?></b> die wie unten aufgeführt auf die Plätze <b>1 bis <?=$ralleydaten['plaetze'];?></b> verteilt werden.</div> +<br /> +<? +} else { ?> +<div>Diese Klickralley läuft vom <b><?=date('d.m.Y H:i', $ralleydaten['start']);?></b> bis zum <b><?=date('d.m.Y H:i', $ralleydaten['ende']);?></b>.<br /> +Für diese Klickralley sind <b><?=number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung;?></b> ausgelobt und werden wie unten angezeigt auf die Plätze <b>1</b> bis <b><?=$ralleydaten['plaetze'];?></b> verteilt.</div> +<br /> +<? +} ?> + +<table width="100%" cellpadding="1" cellspacing="1" border="0"> + <tr class="tr_head"> + <td width="50"><b>Rang</b></td> + <td><b>User</b></td> + <td width="100"><b>Klicks</b></td> + <td width="150"><b>möglicher Gewinn</b></td> + </tr> +<? +$platz = db_query ('SELECT k.klicks,u.nickname FROM '.$db_prefix.'_klickralley k LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid = k.uid ORDER BY klicks DESC LIMIT 10'); +while ($pa = mysql_fetch_array($platz)) { + $row = ($rp % 2 == 0) ? 0 : 1; + $mg = ($ralleydaten['art'] == 'statisch') ? number_format($ralleydaten['p'.$rp], 2, ',', '.').' '.$waehrung : number_format(($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp]), 2, ',', '.').' '.$waehrung; + if ($rp > $ralleydaten['plaetze']) $mg = '---'; ?> + <tr class="tr_row<?=$row;?>"> + <td align="right"><?=$rp++;?>. </td> + <td> <?=$pa['nickname'];?></td> + <td align="right"><?=number_format($pa['klicks'], 0);?> </td> + <td align="right"><?=$mg;?> </td> + </tr> +<? +} + +for($x=$rp;$x<11;$x++){ + $mg = ($ralleydaten['art'] == 'statisch') ? number_format($ralleydaten['p'.$x], 2, ',', '.').' '.$waehrung : number_format(($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$x]), 2, ',', '.').' '.$waehrung; + $row = ($rp % 2 == 0) ? 0 : 1; + if ($x > $ralleydaten['plaetze']) $mg = '---'; ?> + <tr class="tr_row<?=$row;?>"> + <td align="right"><?=$rp++;?>. </td> + <td> n/a</td> + <td align="right">0 </td> + <td align="right"><?=$mg;?> </td> + </tr> +<? +} ?> +</table> +<? +foot(); ?> diff --git a/content/ralleys/ref.php b/content/ralleys/ref.php new file mode 100644 index 0000000..536e16e --- /dev/null +++ b/content/ralleys/ref.php @@ -0,0 +1,59 @@ +<? +// Variabeln +$filename = 'lib/texte/refralley.txt'; +$rp = 1; + +// Ralleydaten auslesen +$ralleydaten = mysql_fetch_array (db_query ('SELECT * FROM '.$db_prefix.'_ralleydaten WHERE ralley = "refralley"')); + +// Datei auslesen +if (is_readable ($filename)) $inhalt = implode ('', file ($filename)); +else echo 'Datei '.$filename.' kann nicht gelesen werden!'; +//$inhalt = str_replace('\\', '', $inhalt); + +if (!empty ($inhalt)){ + head ('Unsere Refralley'); + echo nl2br ($inhalt); + foot (); +} + +$refs = db_query ('SELECT u.nickname, COUNT(w.werber) AS total FROM '.$db_prefix.'_werberdaten w LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid=w.werber WHERE w.werber != 0 AND w.zuordnungszeit >= '.$ralleydaten['start'].' AND w.zuordnungszeit <= '.$ralleydaten['ende'].' AND w.gesamt >= '.$ralleydaten['pro'].' GROUP BY w.werber ORDER BY total DESC LIMIT 10'); +$count = 1; +while ($row = mysql_fetch_assoc($refs)) { + $users[$count] = $row['nickname']; + $ref[$count] = $row['total']; + $count++; +} + +head ('Platzierungen und Preise'); ?> +<div>Dieses Refralley läuft vom <b><?=date('d.m.Y H:i', $ralleydaten['start']);?></b> bis zum <b><?=date('d.m.Y H:i', $ralleydaten['ende']);?></b>.<br /> +Für diese Refralley sind <b><?=number_format($ralleydaten['p1']+$ralleydaten['p2']+$ralleydaten['p3']+$ralleydaten['p4']+$ralleydaten['p5']+$ralleydaten['p6']+$ralleydaten['p7']+$ralleydaten['p8']+$ralleydaten['p9']+$ralleydaten['p10'],2,",",".").' '.$waehrung;?></b> ausgelobt und werden wie unten angezeigt auf die Plätze <b>1</b> bis <b><?=$ralleydaten['plaetze'];?></b> verteilt.</div> +<br /> +<? +if ($ralleydaten['pro'] == 0) echo '<div align="center"><b>Es werden alle Refs gezählt!</b></div>'; +else echo '<div align="center"><b>Es werden nur Refs gezählt ab '.number_format($ralleydaten['pro'],2,',','.').' '.$waehrung.' Refgewinn!</b></div><br />'; ?> +<br /> + +<table width="100%" cellpadding="1" cellspacing="1" border="0" align="center"> + <tr class="tr_head"> + <td width="50"><b>Rang</b></td> + <td><b>User</b></td> + <td width="100"><b>Refs</b></td> + <td width="150"><b>möglicher Gewinn</b></td> + </tr> +<? +for($x=1;$x<11;$x++){ + if (!isset($users[$x])) $users[$x] = 'n/a'; + if (!isset($ref[$x])) $ref[$x] = 0; + $row = ($rp % 2 == 0) ? 0 : 1; ?> + <tr class="tr_row<?=$row;?>"> + <td align="right"><?=$rp++;?>. </td> + <td> <?=$users[$x];?></td> + <td align="right"><?=$ref[$x];?> </td> + <td align="right"><?=number_format($ralleydaten['p'.$x], 0).' '.$waehrung;?> </td> + </tr> +<? +} ?> +</table> +<? +foot(); ?> \ No newline at end of file diff --git a/content/verdienen/betteln4.php b/content/verdienen/betteln4.php new file mode 100644 index 0000000..0613b63 --- /dev/null +++ b/content/verdienen/betteln4.php @@ -0,0 +1,39 @@ +<? +userstatus(); +head('Dein Bettellink'); ?> +<table width="100%" cellpadding="1" cellspacing="1" border="0"> + <tr> + <td align="right"><b>Dein Reflink:</b></td> + <td align="left"> <a href="<?=$domain;?>/?ref=<?=$_SESSION['uid'];?>" target="_blank"><?=$domain;?>/?ref=<?=$_SESSION['uid'];?></a></td> + </tr> + <tr> + <td align="right"><b>Reflink und Bettellink:</b></td> + <td align="left"> <a href="<?=$domain;?>/?content=/betteln&ref=<?=$_SESSION['uid'];?>" target="_blank"><?=$domain;?>/?content=/betteln&ref=<?=$_SESSION['uid'];?></a></td> + </tr> +</table> +<? +foot(); + +head('Die Top 25 Bettler'); ?> +<table width="100%" cellpadding="1" cellspacing="1" border="0"> + <tr class="tr_head"> + <td width="50"><b>Rang</b></td> + <td><b>Mitglied</b></td> + <td width="100"><b>Aufrufe</b></td> + <td width="150"><b><?=$waehrung;?></b></td> + </tr> +<? +$rang = 1; +$sql = db_query ('SELECT k.uid, k.angebettelt, k.bv, u.nickname FROM '.$db_prefix.'_kontodaten k LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid = k.uid ORDER BY angebettelt DESC LIMIT 25'); +while ($user = mysql_fetch_array($sql)) { + $row = ($rang % 2 == 0) ? 0 : 1; ?> + <tr class="tr_row<?=$row;?>"> + <td align="right"><?=$rang++;?>. </td> + <td> <?=$user['nickname'];?></td> + <td align="right"><?=number_format($user['angebettelt'], 0);?> </td> + <td align="right"><?=number_format($user['bv'], 2, ',', '.').' '.$waehrung;?> </td> + </tr> +<? +} ?> +</table> +<? foot(); ?> \ No newline at end of file diff --git a/content/verdienen/klick4.php b/content/verdienen/klick4.php new file mode 100644 index 0000000..9d50b71 --- /dev/null +++ b/content/verdienen/klick4.php @@ -0,0 +1,22 @@ +<? +userstatus (); +head ('Paidbanner'); + +$usr = mysql_fetch_assoc (db_query ('SELECT max_forced FROM '.$db_prefix.'_userdaten WHERE uid = '.$_SESSION['uid'].' LIMIT 1')); + +$fbanner = 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.'")) + WHERE t2.tan IS NULL AND t1.werbeart = "forcedbanner" AND t1.menge > 0 AND t1.status = 1 AND t1.verdienst > 0 AND t1.sponsor != '.$_SESSION['uid'].' ORDER BY t1.verdienst DESC LIMIT '.$usr['max_forced']); + +while ($f_banner = mysql_fetch_assoc ($fbanner)){ + echo '<div align="center" id="banner_'.$f_banner['tan'].'"><a href="fc.php?tan='.$f_banner['tan'].'" target="_blank"><img src="'.$f_banner['banner'].'" border="0" height="60" width="468" alt="'.$f_banner['tan'].'" onClick="document.getElementById(\'banner_'.$f_banner['tan'].'\').style.display=\'none\';"></a>' + . '<br>Reload:'. $f_banner['reload']/3600 .' Std. | Verdienst: '.number_format($f_banner['verdienst'],2,',','.').' | Aufenthalt: '.$f_banner['aufendhalt'].' Sekunden<br><br></div>'; +} + +if (mysql_num_rows ($fbanner) > 0) echo '<div align="center"><input type="button" name="mehr_banner" value="Weitere Banner !" onclick="javascript:location.reload();" /></div>'; +else echo '<div style="text-align: center; font-weight: bold; color: #ff0000;">Alle Banner im Reload !</div>'; + +foot (); +?> \ No newline at end of file diff --git a/content/verdienen/paidmails.php b/content/verdienen/paidmails.php new file mode 100644 index 0000000..c92451e --- /dev/null +++ b/content/verdienen/paidmails.php @@ -0,0 +1,34 @@ +<? +userstatus(); +head("Paidmailhistory"); + +$paidmails = db_query("SELECT + e.gueltig, e.tan, v.verdienst, v.beschreibung, v.mailtext, v.aufendhalt + FROM ".$db_prefix."_paidmails_empfaenger e + LEFT JOIN ".$db_prefix."_paidmails_versendet v ON v.tan = e.tan + WHERE e.uid=".$_SESSION['uid']." && e.gueltig > ".time()." && e.status=0 + LIMIT 10"); + while ($mail = mysql_fetch_array($paidmails)){ + + echo ' + <table border="1" id="mail_'.$mail['tan'].'" width="100%"> + <tr> + <td colspan="2" align="center"><b>'.$mail['beschreibung'].'</b></td> + </tr> + <tr> + <td colspan="2" align="center"><textarea readonly rows="5" cols="60">'.$mail['mailtext'].'</textarea></td> + </tr> + <tr> + <td><font size="2"><b>Verdienst:</b> '.$mail['verdienst'].' '.$waehrung.' <b>Aufenthalt:</b> '.$mail['aufendhalt'].' Sek.</td> + <td align="center"><b><a href="pclick.php?tan='.$mail['tan'].'&uid='.$_SESSION['uid'].'" onClick=document.getElementById("mail_'.$mail['tan'].'").style.display="none" target="_Blank">Bestätigen</a></td> + </Tr> + </table> + '; + } + if (!mysql_num_rows($paidmails)){ + echo '<center><b>Keine Paidmails vorhanden!</b></center>'; + } + +echo '<p align="center"><input type="button" onClick="javascript:location.reload();" value="Weitere Paidmails"></p>'; + +foot();?> diff --git a/cron.php b/cron.php new file mode 100644 index 0000000..b940aa3 --- /dev/null +++ b/cron.php @@ -0,0 +1,22 @@ +<? +set_time_limit(0); +ignore_user_abort(true); + +require ( 'lib/functions.lib.php' ); + +if ($_GET['pw'] != $cron_pw) die('Zugriff verweigert!'); + +$cron = (int)$_GET['id']; + +db_connect (); + +$sql = db_query ('SELECT datei FROM '.$db_prefix.'_crons WHERE id = '.$cron.' LIMIT 1') or die(mysql_error()); +$result = mysql_fetch_assoc ($sql); + +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'; +} else echo 'Cron nicht gelaufen'; + +db_close(); +?> \ No newline at end of file diff --git a/crons/fuco-ads.int.php b/crons/fuco-ads.int.php new file mode 100644 index 0000000..c8a1adf --- /dev/null +++ b/crons/fuco-ads.int.php @@ -0,0 +1,129 @@ +<? +unset($file1); +$interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'fuco-ads'")); + +if ($interfacedaten['mindestverguetung'] > 0.00) { +// fuco-ads Forcedbanner nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='fuco-ads' and werbeart='forcedbanner' and status='1'"); +// Forcedbanner einlesen +$fb=@fopen("http://www.fuco-ads.de/interface/kampagne.php?id=".$interfacedaten['betreiber']."&pw=".$interfacedaten['pass']."&art=forcedclick&verguetung=".$interfacedaten['mindestverguetung']."&reload=24&uebrig=1","r"); +if($fb){ + while($line=fgets($fb,1000)) { + $file1.=$line; + } +fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/6)-1; +$bid_lesen = 4; +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.fuco-ads.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_banner = "http://www.fuco-ads.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_menge = round($code[$bid_lesen-1]); +$int_kid = $code[$bid_lesen-4]; +$int_reload = $code[$bid_lesen+1]*3600; +$int_verdienst = ($code[$bid_lesen-2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen-2]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen-2]; +$int_tan = create_code(32); +$bid_lesen=$bid_lesen+6; +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'fuco-ads' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','fuco-ads','forcedbanner')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'fuco-ads' and kid = '".$int_kid."' and status = '0'"); + } +} +} +} + +$file1 = ""; +if ($interfacedaten['surfklick'] > 0.00) { +// fuco-ads Surfklick nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='fuco-ads' and werbeart='surfklick' and status='1'"); +// Forcedbanner einlesen +$fb=@fopen("http://www.fuco-ads.de/interface/kampagne.php?id=".$interfacedaten['betreiber']."&pw=".$interfacedaten['pass']."&art=surfclick&verguetung=".$interfacedaten['surfklick']."&reload=24&uebrig=1","r"); +if($fb){ + while($line=fgets($fb,1000)) { + $file1.=$line; + } +fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/6)-1; +$bid_lesen = 4; +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.fuco-ads.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_banner = "http://www.fuco-ads.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_menge = round($code[$bid_lesen-1]); +$int_kid = $code[$bid_lesen-4]; +$int_reload = $code[$bid_lesen+1]*3600; +$int_verdienst = ($code[$bid_lesen-2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen-2]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen-2]; +$int_tan = create_code(32); +$bid_lesen=$bid_lesen+6; +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['surfklick'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'fuco-ads' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','fuco-ads','surfklick')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'fuco-ads' and kid = '".$int_kid."' and status = '0'"); + } +} +} +} + +$file1 = ""; +if ($interfacedaten['surfview'] > 0.00) { +// fuco-ads Surfklick nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='fuco-ads' and werbeart='surfview' and status='1'"); +// Forcedbanner einlesen +$fb=@fopen("http://www.fuco-ads.de/interface/kampagne.php?id=".$interfacedaten['betreiber']."&pw=".$interfacedaten['pass']."&art=surfview&verguetung=".$interfacedaten['surfview']."&reload=24&uebrig=1","r"); +if($fb){ + while($line=fgets($fb,1000)) { + $file1.=$line; + } +fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/6)-1; +$bid_lesen = 4; +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.fuco-ads.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_banner = "http://www.fuco-ads.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_menge = round($code[$bid_lesen-1]); +$int_kid = $code[$bid_lesen-4]; +$int_reload = $code[$bid_lesen+1]*3600; +$int_verdienst = ($code[$bid_lesen-2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen-2]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen-2]; +$int_tan = create_code(32); +$bid_lesen=$bid_lesen+6; +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['surfview'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'fuco-ads' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','fuco-ads','surfview')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'fuco-ads' and kid = '".$int_kid."' and status = '0'"); + } +} +} +} + +// Abgelaufene Banner löschen +db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'fuco-ads' and status = '0'"); +?> diff --git a/crons/fucoex.int.php b/crons/fucoex.int.php new file mode 100644 index 0000000..5d3fff0 --- /dev/null +++ b/crons/fucoex.int.php @@ -0,0 +1,50 @@ +<? +unset($file1); + +$interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'fucoex'")); + +// Multi-Sponsor Forcedbanner nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='fucoex' and werbeart='forcedbanner' and status='1'"); + +// Forcedbanner einlesen +$fb=@fopen("http://www.FuCoEx.de/sponsornet/engine/output_kampagne.php?bid=".$interfacedaten['betreiber']."&pwd=".$interfacedaten['pass']."&art=forcedclick&verguetung=".$interfacedaten['mindestverguetung']."&reload=24&uebrig=1&size=468x60","r"); +if($fb){ + while($line=fgets($fb,1000)){ + $file1.=$line; + } + fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/6)-1; +$bid_lesen = 4; + +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.fucoex.de/sponsornet/engine/spwmklickn.php?linkid=".$code[$bid_lesen-4]."&bid=".$interfacedaten['betreiber']; +$int_banner = "http://www.fucoex.de/sponsornet/engine/spwmshowb.php?linkid=".$code[$bid_lesen-4]."&bid=".$interfacedaten['betreiber']; +$int_menge = round($code[$bid_lesen-1]); +$int_kid = $code[$bid_lesen-4]; +$int_reload = $code[$bid_lesen+1]*3600; +$int_verdienst = ($code[$bid_lesen-2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen-2]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen-2]; +$int_tan = create_code(32); +$bid_lesen = $bid_lesen+6; + +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'fucoex' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','fucoex','forcedbanner')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'fucoex' and kid = '".$int_kid."' and status = '0'"); + } +} + +} + +// Abgelaufene Banner löschen +db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'fucoex' and status = '0'"); +?> diff --git a/crons/hp-lose.int.php b/crons/hp-lose.int.php new file mode 100644 index 0000000..0cf40e8 --- /dev/null +++ b/crons/hp-lose.int.php @@ -0,0 +1,50 @@ +<? +unset($file1); + +$interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'hp-lose'")); + +// HPLose Forcedbanner nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='hp-lose' and werbeart='forcedbanner' and status='1'"); + +// Forcedbanner einlesen +$fb=@fopen("http://www.hplose.de/lose/interface/output_kampagne.php?id=".$interfacedaten['betreiber']."&art=forcedclick&verguetung=".$interfacedaten['mindestverguetung']."&reload=24&uebrig=1","r"); +if($fb){ + while($line=fgets($fb,1000)){ + $file1.=$line; + } + fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/6)-1; +$bid_lesen = 4; + +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.hplose.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_banner = "http://www.hplose.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_menge = round($code[$bid_lesen-1]); +$int_kid = $code[$bid_lesen-4]; +$int_reload = $code[$bid_lesen+1]*3600; +$int_verdienst = ($code[$bid_lesen-2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen-2]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen-2]; +$int_tan = create_code(32); +$bid_lesen=$bid_lesen+6; + +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'hp-lose' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','hp-lose','forcedbanner')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'hp-lose' and kid = '".$int_kid."' and status = '0'"); + } +} + +} + +// Abgelaufene Banner löschen +db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'hp-lose' and status = '0'"); +?> diff --git a/crons/lose-ads.int.php b/crons/lose-ads.int.php new file mode 100644 index 0000000..ea1d9fd --- /dev/null +++ b/crons/lose-ads.int.php @@ -0,0 +1,53 @@ +<? +unset($file1); + +$interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'lose-ads'")); + +// Lose-Ads Forcedbanner nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='lose-ads' and werbeart='forcedbanner' and status='1'"); + +// Forcedbanner einlesen +$fb=@fopen("http://www.lose-ads.de/antisinterface/abruf.php?uid=".$interfacedaten['betreiber']."&sid=".$interfacedaten['seite']."&size=468x60&art=forcedclick&ab=".$interfacedaten['mindestverguetung']."&reload=24&uebrig=1","r"); +if($fb){ + while($line=fgets($fb,1000)){ + $file1.=$line; + } + fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/7)-1; +$bid_lesen = 0; + +//0bid|1name|2verguetung|3uebrig|4reload|5id|6sekunden| +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.lose-ads.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_banner = "http://www.lose-ads.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_menge = round($code[$bid_lesen+3]); +$int_kid = $code[$bid_lesen+5]; +$int_reload = $code[$bid_lesen+4]*3600; +$int_verdienst = ($code[$bid_lesen+2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen+2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen+2]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen+2]; +$int_tan = create_code(32); +$bid_lesen=$bid_lesen+7; + +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'lose-ads' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','lose-ads','forcedbanner')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'lose-ads' and kid = '".$int_kid."' and status = '0'"); + } +} + +} + +// Abgelaufene Banner löschen +db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'lose-ads' and status = '0'"); + +?> + diff --git a/crons/losebox.int.php b/crons/losebox.int.php new file mode 100644 index 0000000..94fc53a --- /dev/null +++ b/crons/losebox.int.php @@ -0,0 +1,53 @@ +<? +unset($file1); + +$interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'losebox'")); + +// Losebox Forcedbanner nullen +db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='losebox' and werbeart='forcedbanner' and status='1'"); + +// Forcedbanner einlesen +$fb=@fopen("http://www.losebox.de/lose/interface/output_kampagne.php?art=forcedclick&verguetung=".$interfacedaten['mindestverguetung']."&reload=24&uebrig=1&user_id=".$interfacedaten['betreiber']."","r"); +if($fb){ + while($line=fgets($fb,1000)) { + $file1.=$line; + } +fclose($fb); +} +$code = explode("|", $file1); +$tl_count = (count($code)/8)-1; +$bid_lesen = 5; + +// Forcedbannercodes splitten +for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { +$int_tan = ''; +$int_ziel = "http://www.losebox.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_banner = "http://www.losebox.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; +$int_menge = round($code[$bid_lesen-2]); +$int_kid = $code[$bid_lesen]; +$int_reload = $code[$bid_lesen-1]*3600; +$int_verdienst = ($code[$bid_lesen-3]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-3]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); +$int_preis = $code[$bid_lesen-3]*$interfacedaten['umrechnung']; +$ext_verguetung = $code[$bid_lesen-3]; +$int_tan = create_code(32); +$bid_lesen=$bid_lesen+8; + + +// Forcedbanner updaten oder eintragen +$int_menge = round($int_menge/$interfacedaten['restklicks']); +if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'losebox' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','losebox','forcedbanner')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'losebox' and kid = '".$int_kid."' and status = '0'"); + } +} + +} + +// Abgelaufene Banner löschen +db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'losebox' and status = '0'"); + +?> + diff --git a/crons/refzahlungen.knt.php b/crons/refzahlungen.knt.php new file mode 100644 index 0000000..c2b33c8 --- /dev/null +++ b/crons/refzahlungen.knt.php @@ -0,0 +1,58 @@ +<? + +// Prozente laden! +$refdaten = mysql_fetch_array(db_query("SELECT `re1`,`re2`,`re3` FROM ".$db_prefix."_seitenkonfig")); + +// Userdurchlauf +$refliste = db_query ("SELECT * FROM ".$db_prefix."_werberdaten"); +while ($refliste_1 = mysql_fetch_array($refliste)) { +$verdienst = 0; + + // Ebene 1 + $refebene_1 = db_query ("SELECT `uid`,`umsatz`,`werber`,`refback`,`gesamt` FROM ".$db_prefix."_werberdaten WHERE werber='".$refliste_1['uid']."'"); + while ($anzeigen_1 = mysql_fetch_array($refebene_1)) { + $verdienst = $verdienst + ($anzeigen_1['umsatz']/100*$refdaten['re1']); + $pro_verdienst = $anzeigen_1['umsatz'] / 100 * $refdaten['re1']; + db_query ("UPDATE ".$db_prefix."_werberdaten SET gesamt=gesamt+'".$pro_verdienst."' , reset=reset+'".$pro_verdienst."' WHERE uid='".$anzeigen_1['uid']."'"); + if ($anzeigen_1['refback'] >= 1 && ($anzeigen_1['umsatz']/100*$refdaten['re1'])/100*$anzeigen_1['refback'] >= 0.01) { + $buchungs_id = create_code(14); + $refback = ($anzeigen_1['umsatz']/100*$refdaten['re1'])/100*$anzeigen_1['refback']; + kontobuchung ('+',$refback,$anzeigen_1['uid']); + buchungsliste ($buchungs_id,'+'.$refback,'Refback '.$anzeigen_1['refback'].'% ('.$refliste_1['uid'].')',$anzeigen_1['uid']); + buchungsliste ($buchungs_id,'-'.$refback,'Refback '.$anzeigen_1['refback'].'% gezahlt ('.$anzeigen_1['uid'].')',$refliste_1['uid']); + $pro_verdienst = $pro_verdienst - $refback; + $refback = 0; + $buchungs_id = ''; + } + kontobuchung ('+',$pro_verdienst,$refliste_1['uid']); + $pro_verdienst = 0; + + // Ebene 2 + $refebene_2 = db_query ("SELECT `uid`,`umsatz`,`werber`,`refback`,`gesamt` FROM ".$db_prefix."_werberdaten WHERE werber='".$anzeigen_1['uid']."'"); + while ($anzeigen_2 = mysql_fetch_array($refebene_2)) { + $verdienst = $verdienst + ($anzeigen_2['umsatz']/100*$refdaten['re2']); + $pro_verdienst = $anzeigen_2['umsatz']/100*$refdaten['re2']; + kontobuchung ('+',$pro_verdienst,$refliste_1['uid']); + $pro_verdienst = 0; + + // Ebene 3 + $refebene_3 = db_query ("SELECT `uid`,`umsatz`,`werber`,`refback`,`gesamt` FROM ".$db_prefix."_werberdaten WHERE werber='".$anzeigen_2['uid']."'"); + while ($anzeigen_3 = mysql_fetch_array($refebene_3)) { + $verdienst = $verdienst + ($anzeigen_3['umsatz']/100*$refdaten['re3']); + $pro_verdienst = $anzeigen_3['umsatz']/100*$refdaten['re3']; + kontobuchung ('+',$pro_verdienst,$refliste_1['uid']); + $pro_verdienst = 0; + + } + } + } + + if ($verdienst >= 0.01) { + $buchungs_id = create_code(14); + buchungsliste ($buchungs_id,'+'.$verdienst,'Refverdienste',$refliste_1['uid']); + bilanz(0,$verdienst); + } + +} +db_query("UPDATE ".$db_prefix."_werberdaten SET umsatz=0"); +?> \ No newline at end of file diff --git a/crons/webmasterlose.int.php b/crons/webmasterlose.int.php new file mode 100644 index 0000000..713c20d --- /dev/null +++ b/crons/webmasterlose.int.php @@ -0,0 +1,53 @@ +<? +// Forcedbanner +$interfacedaten = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_interface WHERE interface = 'webmasterlose'")); + +if ($interfacedaten['mindestverguetung'] > 0.00) { +unset($file1); + + // Status 0 setzen + db_query("UPDATE ".$db_prefix."_gebuchte_werbung SET status='0' WHERE sponsor='webmasterlose' and werbeart='forcedbanner' and status='1'"); + + // Forcedbanner einlesen + $fb=@fopen("http://www.webmasterlose.de/lose/interface/output_kampagne.php?id=".$interfacedaten['betreiber']."&pw=".$interfacedaten['pass']."&art=forcedclick&verguetung=".$interfacedaten['mindestverguetung']."&reload=24&uebrig=1","r"); + if($fb){ + while($line=fgets($fb,1000)) { + $file1.=$line; + } + fclose($fb); + } + $code = explode("|", $file1); + $tl_count = (count($code)/6)-1; + $bid_lesen = 4; + // Forcedbannercodes splitten + for ($tl_anz=0;$tl_anz <= $tl_count;$tl_anz++) { + $int_tan = ''; + $int_ziel = "http://www.webmasterlose.de/lose/clickbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; + $int_banner = "http://www.webmasterlose.de/lose/viewbanner.php?id=".$interfacedaten['betreiber']."&bid=".$code[$bid_lesen]."&aid=".$interfacedaten['seite'].""; + $int_menge = round($code[$bid_lesen-1]); + $int_kid = $code[$bid_lesen-4]; + $int_reload = $code[$bid_lesen+1]*3600; + $int_verdienst = ($code[$bid_lesen-2]*$interfacedaten['umrechnung']) - (($code[$bid_lesen-2]*$interfacedaten['umrechnung']) / 100 * $interfacedaten['eigenverdienst']); + $int_preis = $code[$bid_lesen-2]*$interfacedaten['umrechnung']; + $ext_verguetung = $code[$bid_lesen-2]; + $int_tan = create_code(32); + $bid_lesen=$bid_lesen+6; + + if ($ext_verguetung >= $interfacedaten['mindestverguetung'] and $int_menge > 1) { + $forcedbanner_check = db_query ("SELECT * FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'webmasterlose' and kid = '".$int_kid."'"); + if (!mysql_num_rows($forcedbanner_check)) { + db_query ("INSERT INTO ".$db_prefix."_gebuchte_werbung (tan,kid,ziel,banner,preis,verdienst,aufendhalt,menge,reload,sponsor,werbeart) VALUES ('".$int_tan."','".$int_kid."','".$int_ziel."','".$int_banner."','".$int_preis."','".$int_verdienst."','".$interfacedaten['aufendhalt']."','".$int_menge."','".$int_reload."','webmasterlose','forcedbanner')"); + } else { + db_query ("UPDATE ".$db_prefix."_gebuchte_werbung SET status = '1',menge = '".$int_menge."',preis = '".$int_preis."',verdienst = '".$int_verdienst."', aufendhalt = '".$interfacedaten['aufendhalt']."' WHERE sponsor = 'webmasterlose' and kid = '".$int_kid."' and status = '0'"); + } + } + } +} +// Forcedbanner Ende + + + +// Abgelaufene Banner löschen +db_query ("DELETE FROM ".$db_prefix."_gebuchte_werbung WHERE sponsor = 'webmasterlose' and status = '0'"); +?> + diff --git a/css/bframe.css b/css/bframe.css new file mode 100644 index 0000000..e817061 --- /dev/null +++ b/css/bframe.css @@ -0,0 +1,34 @@ + +A:link,A:visited,A:active { +color: #800000; +text-decoration: none; +} + +A:hover { +color: #000000; +text-decoration: none; +} + +.topic { +font-family: Geneva, Arial, Helvetica, san-serif; +font-size: 12px; +} + +body { +margin-top:0; +margin-bottom:0; +margin-left:0; +margin-right:0; +} + +body { +background-image:url('img/bg.gif'); +background-color:#F2EEEA; +} + +body, table, td, tr, div, p, pre, h1, h2, h3, h4, ul { +font-family: Geneva, Arial, Helvetica, san-serif; +font-size:12px; +color:#41261B; +line-height:10pt; +} diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..af92336 --- /dev/null +++ b/css/main.css @@ -0,0 +1,119 @@ +.rand { +border: #000000; +border-style: solid; +border-top-width: 1px; +border-right-width: 1px; +border-bottom-width: 1px; +border-left-width: 1px; +} + +.titel-rand { +border: #000000; +border-style: solid; +border-top-width: 0px; +border-right-width: 0px; +border-bottom-width: 1px; +border-left-width: 0px; +} + +.rand-menue { +border: #000000; +border-style: solid; +background-color: #FEFBF5; +font-family: Geneva, Arial, Helvetica, san-serif; +font-size: 12px; +font-weight: normal; +color: #000000; +border-width: 1px 1px 1px 0px; +} + +A:link,A:visited,A:active { +color: #1e364c; +text-decoration: none; +} + +A:hover { +color: #4B69FF; +text-decoration: none; +} + +.small { +font-family: Geneva, Arial, Helvetica, san-serif; +font-size: 12px; +} + +.topic { +font-family: Geneva, Arial, Helvetica, san-serif; +font-size: 12px; +} + +body { +margin-top:5; +margin-bottom:5; +margin-left:5; +margin-right:5; +background-color:#F2EEEA; +} + +body, table, td, tr, div, p, pre, h1, h2, h3, h4, ul { +font-family: Geneva, Arial, Helvetica, san-serif; +font-size:12px; +color:#41261B; +line-height:10pt; +} + +input { +border-width: 1; +font-size: 12px; +font-family: Geneva, Arial, Helvetica, san-serif; +border-color: #000000; +border-style: solid; +background-color: #A2B5CD; +color: #000000; +font-weight: normal; +} + +select { +border-width:1; +font-size: 12px; +font-family: Geneva, Arial, Helvetica, san-serif; +border-color: #000000; +border-style: solid; +background-color: #A2B5CD; +color: #000000; +} + +textarea { +border-width: 1; +font-size: 12px; +font-family: Geneva, Arial, Helvetica, san-serif; +border-color: #000000; +border-style: solid; +background-color: #A2B5CD; +color: #000000; +font-weight: normal; +} + +option { +border-width:1; +font-size: 12px; +font-family: Geneva, Arial, Helvetica, san-serif; +border-color: #000000; +border-style: solid; +background-color: #A2B5CD; +color: #000000; +} + +.tr_row0 { + BACKGROUND-COLOR: #E2E2E2; +} + +.tr_row1 { + BACKGROUND-COLOR: #CDCDCD; +} + +.tr_head { + BACKGROUND-COLOR: #0099CC; + COLOR:#000000; + FONT-WEIGHT: bold; +} \ No newline at end of file diff --git a/fc.php b/fc.php new file mode 100644 index 0000000..4085083 --- /dev/null +++ b/fc.php @@ -0,0 +1,27 @@ +<? +@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'] = ""; + +$_GET['tan'] = addslashes ($_GET['tan']); + +$forced = mysql_fetch_array(db_query("SELECT ziel,tan FROM ".$db_prefix."_gebuchte_werbung WHERE tan='".$_GET['tan']."' LIMIT 1")); +?> + + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> + <title>Forcedklick by <?=$seitenname;?></title> +</head> + +<frameset rows="15,*" border="0"> +<frame name="abuse" src="topframe_forced.php?tan=<?=$forced['tan'];?>" scrolling="no" frameborder="0"> +<frame name="werbung" src="<?=$forced['ziel'];?>" scrolling="auto" frameborder="0"> +</frameset> +</body> +</html> +<?db_close();?> diff --git a/images/Thumbs.db b/images/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..7a2af3e18dd2e13c36e5ccd940350a625997c971 GIT binary patch literal 9216 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 literal 0 HcmV?d00001 diff --git a/images/banner/2.gif b/images/banner/2.gif new file mode 100644 index 0000000000000000000000000000000000000000..058f14602aff2547a227e2e3725335a368fd982d GIT binary patch literal 36704 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 PO5olRya)ax0s#O!{GA+8 literal 0 HcmV?d00001 diff --git a/images/banner/3.gif b/images/banner/3.gif new file mode 100644 index 0000000000000000000000000000000000000000..f98ec5c6ebc85a881cf9e99e8f4d172879df29a9 GIT binary patch literal 33000 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 literal 0 HcmV?d00001 diff --git a/images/banner/Thumbs.db b/images/banner/Thumbs.db new file mode 100644 index 0000000000000000000000000000000000000000..7d00e702de2c914d27182242c9ea96451dc56e87 GIT binary patch literal 10240 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 Vr%}J04oUq}Dn8*a_y4N}{s%s62IT+% literal 0 HcmV?d00001 diff --git a/images/gelb.gif b/images/gelb.gif new file mode 100644 index 0000000000000000000000000000000000000000..2668ff9c4237f6759ff440a28101db094fa85149 GIT binary patch literal 147 zcmZ?wbhEHb<Y(Y#*vtR||NsAg{Fvd^EryF18BUyF*twHs<w}+X3wTbP5Lma)9ViP{ z1tk=JvM@3*a5LzD_#iVFSR4vYdam9pp3y5Fz)>XQz}Dv$6*PZ_l<OX^hS@5t3(wD6 n%kLofV8SUzRwl)Z77l9K3=#`FpZGEy%Su1|vSR-f4hCxgLt-(t literal 0 HcmV?d00001 diff --git a/images/gruen.gif b/images/gruen.gif new file mode 100644 index 0000000000000000000000000000000000000000..51da984c216bf3db6d3b0f83219eee99d48f9e9f GIT binary patch literal 149 zcmZ?wbhEHb<Y(Y#*vtR||NsAIc*MYPje+4L1H(=R#^sEhvpGc$h$uW$P`IF=a7aOM zlcL574UjSh2F0H&j0_BX3_2j4ATt<PoGzU7T)kI3qgS?|J<(wPSJR|Gou?&c9bN)n wuUkFr_?vl`a4_{hH$G9(w4^`qhAJ!P>~uvLmBo^*LftnDtR5JsGBH>K02=Er9smFU literal 0 HcmV?d00001 diff --git a/images/header.gif b/images/header.gif new file mode 100644 index 0000000000000000000000000000000000000000..78ac9cdba07b8d96bd68d0ff037716c6f64c1fce GIT binary patch literal 29232 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 X;2`yxXmTtGuxYkOH7l`L0ATfhuF1Ft literal 0 HcmV?d00001 diff --git a/images/pfeil.gif b/images/pfeil.gif new file mode 100644 index 0000000000000000000000000000000000000000..8013aa5e426c908d5f45d6aee5296859a52b3dcb GIT binary patch literal 254 zcmZ?wbhEHb<YVAxIKse?mX>zr%$cQ2mR43)K7RCg=FFM9cI>)#_1e34?|@Q0Jw02u zZoPN+-uLg{4;?(z+S*!BP_SX$hUd?o@7=ri=#iuU|Nm#e3lx8{u!=B<GU$L*f$U^p ztxizw@@VPNSj8YPahdP}hs)7|?aVISZ@L5<0xVW2aP4+;{kVWdO{8s;5`)N!WzCKY z1g0=BJ1q{F!P7Q@Jw-9erlrf(VTauuKJJ5#P6{iS`GkYmt2u;t*cn^=^g3G@McCN< es=e5!bg&5q28*_{sB=sR(wytYu}oBv!5RSXeOey? literal 0 HcmV?d00001 diff --git a/images/rand.gif b/images/rand.gif new file mode 100644 index 0000000000000000000000000000000000000000..072d9913014dbdd0613763d53d7803cbc6ca0707 GIT binary patch literal 475 zcmV<10VMuMNk%w1VF>_u0K@<Q|NNu>_on{DSo6ec{KHc8!)ExyTlm9M{lHcCy;<+R zV)wmL?!8|2y-f1GQ}wh^_Oea#wM+7|QtYx|?y_9<uTbi;Tj{c2^sh?ruTk)?NdN!< z{s9620000000000A^8La6aX9mEC2ui00{ti000I5;3AIVMv~@Psw<nS?-`><ohXXq zY{$p|x=mx0NVH%>WD><%%tp_ntU-0)j4=gpC(?Pju4dFJE{7N2AW0jfHmnM)875vX z$N0LNInv7eabzxgC`){FXNV#=YCc;+B1J`l5tWuH5fGZ1kd+mm6_^nZn<<;6BBz`~ zni;MTDH#$M6cQ3CwiW>yup$q?ucoRg8pWs!7{el#nZ3vu(9pON5TKa0*q9j;6SmhB z0p80I*tg>m)<YV@J-_Y`JPW_4#L5en*5l>h;pPh(+q(H9x6jwGBC4DvOaTp4C=tch zaY{9e3c63?<Ymz1>Y4=$)P%X}C?Z<4Jc9;U8Ir<)!5<MnUdos=Gf_=NH*;PQv<QIA zLox^m9V(PZjiUz;Y!HgH#s&dRoi-IfbpwK{2n=X7@RX{70Ryyd&`Q8S0RUpD3fO9Z RKv%VD-@+9j7w(1-06VbI(!Kxy literal 0 HcmV?d00001 diff --git a/images/rot.gif b/images/rot.gif new file mode 100644 index 0000000000000000000000000000000000000000..b98d7f896e98b3b690bba58dac718c54f58e57d6 GIT binary patch literal 147 zcmZ?wbhEHb<Y(Y#*vtR||NsAg#K3Tkf#D<r!%hZ<<&2E8IXMrAh%A?qTIcQ#lm)AT z5{f@r7#SG28FWB=kQodt4h1JYSML?i=oJrWS7e$wsl(MPD1MTHrs8@b0i_)_JX_k8 mTJEl6H#kz(q;heEx0ZH;Q^A8bz6_Vu(+<C^*gu7X!5RQ;$1J4) literal 0 HcmV?d00001 diff --git a/index.php b/index.php new file mode 100644 index 0000000..fcede58 --- /dev/null +++ b/index.php @@ -0,0 +1,11 @@ +<? +if (isset ($_GET['content']) && !empty ($_GET['content'])) { + if (strpos ($_GET['content'], '../') !== FALSE) die ('Zugriffsverletzung !'); + if ($_GET['content']{0} != '/') $_GET['content'] = '/'.$_GET['content']; +} + +require ( './lib/header.php' ); +require ( './content'.$_GET['content'].'.php' ); +require ( './lib/footer.php' ); +?> + diff --git a/lib/extras.init.php b/lib/extras.init.php new file mode 100644 index 0000000..74af861 --- /dev/null +++ b/lib/extras.init.php @@ -0,0 +1,11 @@ +<? +// Datei: lib/extras.init.php +// Datei um Funktionen aus der Extras-Erweiterung aufzurufen + + +// Variablen absichern ! +array_walk($_GET, 'extra_securevars', 'GET'); +array_walk($_POST, 'extra_securevars', 'POST'); +array_walk($_SERVER, 'extra_securevars', 'SERVER'); +if (count ($_SESSION) > 0) array_walk($_SESSION, 'extra_securevars', 'SESSION'); +?> \ No newline at end of file diff --git a/lib/extras.lib.php b/lib/extras.lib.php new file mode 100644 index 0000000..305ef01 --- /dev/null +++ b/lib/extras.lib.php @@ -0,0 +1,95 @@ +<? +// E-Mail-Klasse einbinden +require (dirname (__FILE__) . '/mail/klasse.php'); + +// PHP-Version ausgeben. Beipspiel (PHP-Version 4.1.2-stable): 412 +function extra_phpversion () { + $ver = explode ('.', phpversion ()); + return ($ver[0].$ver[1].$ver[2]); +} + + +// Löscht alle Datensätze aus Tabelle [table] wenn keine gueltige +// UserID zu dem angegebenen Feld [row] existiert. +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'); +} + +// Funktion zum Variablen absichern ! +function extra_securevars ($value, $name, $art) { +global $GLOBALS; + // magic_quotes = on? + if (get_magic_quotes_gpc ()) $value = stripslashes ($value); + if ($art == 'GET') $_GET[$name] = $value; + elseif ($art == 'POST') $_POST[$name] = $value; + elseif ($art == 'COOKIE') $_COOKIE[$name] = $value; + elseif ($art == 'SERVER') $_SERVER[$name] = $value; + elseif ($art == 'SESSION') $_SESSION[$name] = $value; + else die ('Fehler in der Variablenabsicherungsfunktion!'); +} + +// Funktion um ein Array optisch darzustellen +function print_a ( $TheArray ) +{ // Note: the function is recursive + echo '<table border=1 cellpadding=1 style="border-collapse: collapse; font: 8pt Arial;">'."\n"; + + $Keys = array_keys( $TheArray ); + foreach( $Keys as $OneKey ) + { + echo '<tr>'."\n"; + + echo '<td bgcolor="#727450" style="color: #ededed;">'."\n"; + echo '<B>' . $OneKey . '</B>'; + echo '</td>'."\n"; + + echo '<td bgcolor="#C4C2A6">'."\n"; + if ( is_array($TheArray[$OneKey]) ) + print_a($TheArray[$OneKey]); + else + echo $TheArray[$OneKey]; + echo '</td>'."\n"; + + echo '</tr>'."\n"; + } + echo '</table>'."\n"; +} + +// Erweiterte E-Mail-Funktion +function usermail ($an, $betreff, $nachricht, $von) { + // global $mail; + // Zeichenketten bei max 70 Zeichen trennen + + // Nachricht mit HTML + $html_nachricht = '<HTML> +<HEAD> + <STYLE TYPE="text/css"> + <!-- + H1 {font-family: Verdana; font-size: 18pt} + BODY {font-family: Verdana; font-size: 10pt; margin-left: 30px} + // --> + </STYLE> +</HEAD> +<BODY BGCOLOR="beige" BACKGROUND="background.gif"> + +<H1>'.$betreff.'</H1> + +'.nl2br($nachricht).' + +</BODY> +</HTML>'; + + // HTML-Codes entfernen + $nachricht = strip_tags ($nachricht); + + $mail = new htmlMimeMail(); + $mail->setFrom($von); + $mail->setSubject($betreff); + $mail->setHTML($html_nachricht, $nachricht); + $mail->setHeader('X-Mailer', 'HTML Mime mail class (http://www.phpguru.org)'); + return $mail->send(array($an)); +} + + +require (dirname (__FILE__) . '/extras.init.php'); +?> \ No newline at end of file diff --git a/lib/footer.php b/lib/footer.php new file mode 100644 index 0000000..fcc69d6 --- /dev/null +++ b/lib/footer.php @@ -0,0 +1,13 @@ +</td> +<td width="5" valign="top" align="left"></td> +<td width="150" valign="top" align="left"><?@include_once('lib/menue_rechts.php');?></td> +</tr> +</table> + +<?=$count_query;?> MySQL Abfragen +<!-- Fussnote --> + +</td></tr></table> +</body> +</html> +<?db_close();?> \ No newline at end of file diff --git a/lib/functions.lib.php b/lib/functions.lib.php new file mode 100644 index 0000000..50da37a --- /dev/null +++ b/lib/functions.lib.php @@ -0,0 +1,156 @@ +<? +header("Cache-control: no-cache"); +$db_host = "localhost"; // Datenbankhost meistens localhost/127.0.0.1 +$db_user = "web1"; // MySQL User +$db_pass = "QRWSshez"; // MySQL Passwort +$db_base = "usr_web1_7"; // Datenbankname +$db_prefix = "vms"; // Datenbankpräfix bei Verwendung mehrerer Script in einer DB +$domain = "http://vms.designerscripte.net"; // Url zum Script Ohne Slash am Ende +$seitenname = "VMS Demo"; // Name der Seite +$waehrung = "Lose"; // Währungsname der Seite +$admin_id = 1; // Userid des Admins +$betreibermail = "admin@vms1.de"; // Email des Betreibers +$cron_pw = "geheimespasswort"; // Passwort für Cronjobs +$percode = 'AbCdEfGhIjKlMnOpQrStUvWxYz123456789'; // beliebiger Alphanumerischer String + + +/* Globale Variablen nichts ändern */ +$ip = $_SERVER['REMOTE_ADDR']; +if (!isset($login_check['hinweis'])) $login_check['hinweis'] = ""; + + +/* Funktionen Start */ + +// Datenbankverbindung +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!'); + $sql_base = @mysql_select_db($db_base) or die("Keine oder falsche Datenbank gewählt!"); +} + +// Mysql Querys +function db_query($sql_tag){ +global $count_query; + $count_query++; + $vargs = array(); + $fargs = func_get_args(); + foreach($fargs as $key => $arg){ + $vargs[$key] = mysql_real_escape_string($arg); + } + array_shift($vargs); + $sql_tag = vsprintf($sql_tag,$vargs); + if($ret = mysql_query($sql_tag)){ + return $ret; + }else{ + return 0; + } + } + +// Datenbank schließen +function db_close() { +global $sql_open; + @mysql_close($sql_open) or die('Konnte die Verbindung mit Datenbank nicht schliessen!'); +} + +// Zufallscode +function create_code($code_laenge) { +srand((double)microtime()*1000000); +$created_code = ''; +$zeichen="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; +for ($i=0;$i<$code_laenge;$i++) { +$n=rand() % strlen($zeichen); +$created_code .=substr($zeichen, $n, 1); +} +return $created_code; +} + + +// Einträge in Buchungsliste +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."')"); +} + +// Kontotransaktionen +function kontobuchung ($art,$trans_menge,$fuer) { +global $db_prefix; + db_query("UPDATE ".$db_prefix."_kontodaten SET `kontostand` = `kontostand` ".$art." ".$trans_menge." WHERE uid=".$fuer.""); +} + +// Schutz von internen Seiten +function userstatus () { +global $_SESSION,$db_prefix; + 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); + + // nicht aktiviert oder nicht angemeldet! + if (!mysql_num_rows($us) 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(); + } + + // gesperrt + if ($login_check['status'] == 2) { + 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/user_gesperrt.php'); + @include_once('lib/footer.php'); + die(); + } + } else { + @include_once('content/error/kein_zutritt.php'); + @include_once('lib/footer.php'); + die(); + } +} + +// Refumsatz gutschreiben +function refumsatz ($buchungssumme,$fuer) { +global $db_prefix; + db_query ('UPDATE '.$db_prefix.'_werberdaten SET umsatz = umsatz + '.$buchungssumme.' WHERE uid = '.$fuer.' and werber != 0'); +} + +// Aktivrally +function aktivralley ($buchungssumme,$fuer) { +global $db_prefix; + // Wenn Aktivralley läuft + $ralleydaten_aktiv = mysql_fetch_array(db_query("SELECT `start`,`ende` FROM ".$db_prefix."_ralleydaten WHERE ralley = 'aktivralley' LIMIT 1")); + if ($ralleydaten_aktiv['start'] <= time() && $ralleydaten_aktiv['ende'] >= time()) { + db_query ('UPDATE '.$db_prefix.'_aktivralley SET punkte = punkte + '.$buchungssumme.' WHERE uid = '.$fuer); + if (mysql_affected_rows () == 0) db_query ('INSERT INTO '.$db_prefix.'_aktivralley (uid,punkte) VALUES ('.$fuer.', '.$buchungssumme.')'); + } +} + +// Klickrally +function klickralley () { +global $db_prefix,$_SESSION; + // wenn Klickralley läuft + $ralleydaten_klick = mysql_fetch_array(db_query("SELECT `start`,`ende`,`art`,`pro` FROM ".$db_prefix."_ralleydaten WHERE ralley = 'klickralley' LIMIT 1")); + if ($ralleydaten_klick['start'] <= time() && $ralleydaten_klick['ende'] >= time()) { + db_query ('UPDATE '.$db_prefix.'_klickralley SET klicks = klicks + 1 WHERE uid = '.$_SESSION['uid']); + if (mysql_affected_rows () == 0) db_query ('INSERT INTO '.$db_prefix.'_klickralley (uid,klicks) VALUES ('.$_SESSION['uid'].', 1)'); + } +} + +// Bilanzen +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.')'); +} +?> \ No newline at end of file diff --git a/lib/header.php b/lib/header.php new file mode 100644 index 0000000..7e42320 --- /dev/null +++ b/lib/header.php @@ -0,0 +1,82 @@ +<? +require ('lib/functions.lib.php'); +db_connect(); +require ('lib/session.lib.php'); +require ('lib/layout.lib.php'); + +// Extras-Erweiterung initalisieren und ausfuehren +require ( 'lib/extras.lib.php' ); + +// SecVMS change begin +if (!isset($_GET['content']) || empty ($_GET['content'])) $_GET['content'] = '/intern/startseite'; +// SecVMS change end + +if (!file_exists('content'.$_GET['content'].'.php')) $_GET['content'] = '/error/keine_seite'; + +// Reloads noch in Cron auslagern -> zu performancelastig! +// db_query ("DELETE FROM ".$db_prefix."_reloads WHERE bis <= '".time()."'"); +?> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<title><?=$seitenname;?></title> +<link rel="stylesheet" href="css/main.css" type="text/css"> +<meta name="Author" content="Designerscripte.net"> +<meta name="Publisher" content="Designerscripte.net"> +<meta name="Copyright" content="Designerscripte.net"> +<meta name="Keywords" content="vms,paid4,loginscript"> +<meta name="Description" content="Verdien was Du willst"> +<meta name="Page-topic" content="Loseseite zu Klamm.de"> +<meta name="Audience" content=""> +<meta name="Content-language" content="DE"> +<meta name="Page-type" content="Nicht Gewinnorientiert"> +<meta name="Robots" content="INDEX,FOLLOW"> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> +<link rel="stylesheet" href="/css/main.css" type="text/css"> + +<? +if ($_GET['content'] == '/intern/startseite') @require_once ('lib/texte/alt_startseitenpopup.txt'); +if ($_GET['content'] == '/betteln') @require_once ('lib/texte/alt_bettelseitenpopup.txt'); +?> + +</head> +<body style="topmargin:5; leftmargin:0;"> +<table width="800" cellpadding="0" cellspacing="0" border="0" align="center"><tr><td valign="top" align="center"> +<table style="border:solid 1px #4B69FF" width="800" border="0" cellpadding="0" cellspacing="0" bgcolor="#FEFBF5"> +<tr> +<td height="120" width="100%" valign="top" style="background-image:url('./images/header.gif');"> +<div style="position:relative; top:20px; right:-321px;"> +<?@require_once ('lib/texte/alt_headerbanner.txt');?> +</div> +</td></tr> +<tr> +<td bgcolor="#FEFBF5" valign="top" align="center"> +<table width="100%"> +<tr> +<td height="100%" width="100%" align="center"> + + <a href="index.php">Home</a> + <a href="?content=/intern/mediadaten">Mediadaten</a> + <a href="?content=/intern/agbs">AGB</a> + <a href="?content=/intern/faqs">FAQ</a> + <a href="?content=/intern/werbemittel">Werbemittel</a> + <a href="?content=/intern/impressum">Impressum</a> +</td> +</tr> +</table> + +</td> +</tr> +</table> + + +<table width="800" border="0" cellpadding="0" cellspacing="0"> +<tr><td height="5"></td></tr></table> + +<!-- Inhalt --> + +<table width="800" cellpadding="0" cellspacing="0" border="0"> +<tr> +<td width="150" valign="top" align="left"><?@include_once('lib/menue_links.php');?></td> +<td width="5" valign="top" align="left"></td> +<td width="490" valign="top" align="left"> \ No newline at end of file diff --git a/lib/layout.lib.php b/lib/layout.lib.php new file mode 100644 index 0000000..115dc02 --- /dev/null +++ b/lib/layout.lib.php @@ -0,0 +1,53 @@ +<? +function head($titel){ +echo ' +<table style="border:solid 0px black" width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#4B69FF"> +<tr> +<td valign="middle" align="center" height="18" bgcolor="#1e364c"><b><font color="#ffffff">'.$titel.'</font></b></td> +</tr> +<tr> +<td bgcolor="#FEFBF5" valign="top" align="left"> +<table width="98%" cellpadding="2" cellspacing="2"> +<tr> +<td> +'; +} + +function foot(){ +echo ' +</td> +</tr> +</table> +</td> +</tr> +</table> +<table border="0" cellpadding="0" cellspacing="0"><tr><td height="5"></td></tr></table> +'; +} + +function menuehead($titel){ +echo' +<table style="border:solid 0px black" width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#4B69FF"> +<tr> +<td valign="middle" align="center" height="18" bgcolor="#1e364c"><b><font color="#ffffff">'.$titel.'</font></b></td> +</tr> +<tr> +<td bgcolor="#FEFBF5" valign="top" align="left"> +<table width="98%" cellpadding="2" cellspacing="2"> +<tr> +<td> +'; +} + +function menuefoot(){ +echo' +</td> +</tr> +</table> +</td> +</tr> +</table> +<table border="0" cellpadding="0" cellspacing="0"><tr><td height="5"></td></tr></table> +'; +} +?> \ No newline at end of file diff --git a/lib/mail/LICENSE b/lib/mail/LICENSE new file mode 100644 index 0000000..207a79c --- /dev/null +++ b/lib/mail/LICENSE @@ -0,0 +1,278 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/lib/mail/RFC822.php b/lib/mail/RFC822.php new file mode 100644 index 0000000..e4220ee --- /dev/null +++ b/lib/mail/RFC822.php @@ -0,0 +1,872 @@ +<?php +/** +* RFC 822 Email address list validation Utility +* +* What is it? +* +* This class will take an address string, and parse it into it's consituent +* parts, be that either addresses, groups, or combinations. Nested groups +* are not supported. The structure it returns is pretty straight forward, +* and is similar to that provided by the imap_rfc822_parse_adrlist(). Use +* print_r() to view the structure. +* +* How do I use it? +* +* $address_string = 'My Group: "Richard Heyes" <richard@localhost> (A comment), ted@example.com (Ted Bloggs), Barney;'; +* $structure = Mail_RFC822::parseAddressList($address_string, 'example.com', TRUE) +* print_r($structure); +* +* @author Richard Heyes <richard@phpguru.org> +* @author Chuck Hagenbuch <chuck@horde.org> +* @version $Revision: 1.1 $ +* @package Mail +*/ + +class Mail_RFC822 +{ + /** + * The address being parsed by the RFC822 object. + * @var string $address + */ + var $address = ''; + + /** + * The default domain to use for unqualified addresses. + * @var string $default_domain + */ + var $default_domain = 'localhost'; + + /** + * Should we return a nested array showing groups, or flatten everything? + * @var boolean $nestGroups + */ + var $nestGroups = true; + + /** + * Whether or not to validate atoms for non-ascii characters. + * @var boolean $validate + */ + var $validate = true; + + /** + * The array of raw addresses built up as we parse. + * @var array $addresses + */ + var $addresses = array(); + + /** + * The final array of parsed address information that we build up. + * @var array $structure + */ + var $structure = array(); + + /** + * The current error message, if any. + * @var string $error + */ + var $error = null; + + /** + * An internal counter/pointer. + * @var integer $index + */ + var $index = null; + + /** + * The number of groups that have been found in the address list. + * @var integer $num_groups + * @access public + */ + var $num_groups = 0; + + /** + * A variable so that we can tell whether or not we're inside a + * Mail_RFC822 object. + * @var boolean $mailRFC822 + */ + var $mailRFC822 = true; + + /** + * A limit after which processing stops + * @var int $limit + */ + var $limit = null; + + + /** + * Sets up the object. The address must either be set here or when + * calling parseAddressList(). One or the other. + * + * @access public + * @param string $address The address(es) to validate. + * @param string $default_domain Default domain/host etc. If not supplied, will be set to localhost. + * @param boolean $nest_groups Whether to return the structure with groups nested for easier viewing. + * @param boolean $validate Whether to validate atoms. Turn this off if you need to run addresses through before encoding the personal names, for instance. + * + * @return object Mail_RFC822 A new Mail_RFC822 object. + */ + function Mail_RFC822($address = null, $default_domain = null, $nest_groups = null, $validate = null, $limit = null) + { + if (isset($address)) $this->address = $address; + if (isset($default_domain)) $this->default_domain = $default_domain; + if (isset($nest_groups)) $this->nestGroups = $nest_groups; + if (isset($validate)) $this->validate = $validate; + if (isset($limit)) $this->limit = $limit; + } + + + /** + * Starts the whole process. The address must either be set here + * or when creating the object. One or the other. + * + * @access public + * @param string $address The address(es) to validate. + * @param string $default_domain Default domain/host etc. + * @param boolean $nest_groups Whether to return the structure with groups nested for easier viewing. + * @param boolean $validate Whether to validate atoms. Turn this off if you need to run addresses through before encoding the personal names, for instance. + * + * @return array A structured array of addresses. + */ + function parseAddressList($address = null, $default_domain = null, $nest_groups = null, $validate = null, $limit = null) + { + + if (!isset($this->mailRFC822)) { + $obj = new Mail_RFC822($address, $default_domain, $nest_groups, $validate, $limit); + return $obj->parseAddressList(); + } + + if (isset($address)) $this->address = $address; + if (isset($default_domain)) $this->default_domain = $default_domain; + if (isset($nest_groups)) $this->nestGroups = $nest_groups; + if (isset($validate)) $this->validate = $validate; + if (isset($limit)) $this->limit = $limit; + + $this->structure = array(); + $this->addresses = array(); + $this->error = null; + $this->index = null; + + while ($this->address = $this->_splitAddresses($this->address)) { + continue; + } + + if ($this->address === false || isset($this->error)) { + return false; + } + + // Reset timer since large amounts of addresses can take a long time to + // get here + set_time_limit(30); + + // Loop through all the addresses + for ($i = 0; $i < count($this->addresses); $i++){ + + if (($return = $this->_validateAddress($this->addresses[$i])) === false + || isset($this->error)) { + return false; + } + + if (!$this->nestGroups) { + $this->structure = array_merge($this->structure, $return); + } else { + $this->structure[] = $return; + } + } + + return $this->structure; + } + + /** + * Splits an address into seperate addresses. + * + * @access private + * @param string $address The addresses to split. + * @return boolean Success or failure. + */ + function _splitAddresses($address) + { + + if (!empty($this->limit) AND count($this->addresses) == $this->limit) { + return ''; + } + + if ($this->_isGroup($address) && !isset($this->error)) { + $split_char = ';'; + $is_group = true; + } elseif (!isset($this->error)) { + $split_char = ','; + $is_group = false; + } elseif (isset($this->error)) { + return false; + } + + // Split the string based on the above ten or so lines. + $parts = explode($split_char, $address); + $string = $this->_splitCheck($parts, $split_char); + + // If a group... + if ($is_group) { + // If $string does not contain a colon outside of + // brackets/quotes etc then something's fubar. + + // First check there's a colon at all: + if (strpos($string, ':') === false) { + $this->error = 'Invalid address: ' . $string; + return false; + } + + // Now check it's outside of brackets/quotes: + if (!$this->_splitCheck(explode(':', $string), ':')) + return false; + + // We must have a group at this point, so increase the counter: + $this->num_groups++; + } + + // $string now contains the first full address/group. + // Add to the addresses array. + $this->addresses[] = array( + 'address' => trim($string), + 'group' => $is_group + ); + + // Remove the now stored address from the initial line, the +1 + // is to account for the explode character. + $address = trim(substr($address, strlen($string) + 1)); + + // If the next char is a comma and this was a group, then + // there are more addresses, otherwise, if there are any more + // chars, then there is another address. + if ($is_group && substr($address, 0, 1) == ','){ + $address = trim(substr($address, 1)); + return $address; + + } elseif (strlen($address) > 0) { + return $address; + + } else { + return ''; + } + + // If you got here then something's off + return false; + } + + /** + * Checks for a group at the start of the string. + * + * @access private + * @param string $address The address to check. + * @return boolean Whether or not there is a group at the start of the string. + */ + function _isGroup($address) + { + // First comma not in quotes, angles or escaped: + $parts = explode(',', $address); + $string = $this->_splitCheck($parts, ','); + + // Now we have the first address, we can reliably check for a + // group by searching for a colon that's not escaped or in + // quotes or angle brackets. + if (count($parts = explode(':', $string)) > 1) { + $string2 = $this->_splitCheck($parts, ':'); + return ($string2 !== $string); + } else { + return false; + } + } + + /** + * A common function that will check an exploded string. + * + * @access private + * @param array $parts The exloded string. + * @param string $char The char that was exploded on. + * @return mixed False if the string contains unclosed quotes/brackets, or the string on success. + */ + function _splitCheck($parts, $char) + { + $string = $parts[0]; + + for ($i = 0; $i < count($parts); $i++) { + if ($this->_hasUnclosedQuotes($string) + || $this->_hasUnclosedBrackets($string, '<>') + || $this->_hasUnclosedBrackets($string, '[]') + || $this->_hasUnclosedBrackets($string, '()') + || substr($string, -1) == '\\') { + if (isset($parts[$i + 1])) { + $string = $string . $char . $parts[$i + 1]; + } else { + $this->error = 'Invalid address spec. Unclosed bracket or quotes'; + return false; + } + } else { + $this->index = $i; + break; + } + } + + return $string; + } + + /** + * Checks if a string has an unclosed quotes or not. + * + * @access private + * @param string $string The string to check. + * @return boolean True if there are unclosed quotes inside the string, false otherwise. + */ + function _hasUnclosedQuotes($string) + { + $string = explode('"', $string); + $string_cnt = count($string); + + for ($i = 0; $i < (count($string) - 1); $i++) + if (substr($string[$i], -1) == '\\') + $string_cnt--; + + return ($string_cnt % 2 === 0); + } + + /** + * Checks if a string has an unclosed brackets or not. IMPORTANT: + * This function handles both angle brackets and square brackets; + * + * @access private + * @param string $string The string to check. + * @param string $chars The characters to check for. + * @return boolean True if there are unclosed brackets inside the string, false otherwise. + */ + function _hasUnclosedBrackets($string, $chars) + { + $num_angle_start = substr_count($string, $chars[0]); + $num_angle_end = substr_count($string, $chars[1]); + + $this->_hasUnclosedBracketsSub($string, $num_angle_start, $chars[0]); + $this->_hasUnclosedBracketsSub($string, $num_angle_end, $chars[1]); + + if ($num_angle_start < $num_angle_end) { + $this->error = 'Invalid address spec. Unmatched quote or bracket (' . $chars . ')'; + return false; + } else { + return ($num_angle_start > $num_angle_end); + } + } + + /** + * Sub function that is used only by hasUnclosedBrackets(). + * + * @access private + * @param string $string The string to check. + * @param integer &$num The number of occurences. + * @param string $char The character to count. + * @return integer The number of occurences of $char in $string, adjusted for backslashes. + */ + function _hasUnclosedBracketsSub($string, &$num, $char) + { + $parts = explode($char, $string); + for ($i = 0; $i < count($parts); $i++){ + if (substr($parts[$i], -1) == '\\' || $this->_hasUnclosedQuotes($parts[$i])) + $num--; + if (isset($parts[$i + 1])) + $parts[$i + 1] = $parts[$i] . $char . $parts[$i + 1]; + } + + return $num; + } + + /** + * Function to begin checking the address. + * + * @access private + * @param string $address The address to validate. + * @return mixed False on failure, or a structured array of address information on success. + */ + function _validateAddress($address) + { + $is_group = false; + + if ($address['group']) { + $is_group = true; + + // Get the group part of the name + $parts = explode(':', $address['address']); + $groupname = $this->_splitCheck($parts, ':'); + $structure = array(); + + // And validate the group part of the name. + if (!$this->_validatePhrase($groupname)){ + $this->error = 'Group name did not validate.'; + return false; + } else { + // Don't include groups if we are not nesting + // them. This avoids returning invalid addresses. + if ($this->nestGroups) { + $structure = new stdClass; + $structure->groupname = $groupname; + } + } + + $address['address'] = ltrim(substr($address['address'], strlen($groupname . ':'))); + } + + // If a group then split on comma and put into an array. + // Otherwise, Just put the whole address in an array. + if ($is_group) { + while (strlen($address['address']) > 0) { + $parts = explode(',', $address['address']); + $addresses[] = $this->_splitCheck($parts, ','); + $address['address'] = trim(substr($address['address'], strlen(end($addresses) . ','))); + } + } else { + $addresses[] = $address['address']; + } + + // Check that $addresses is set, if address like this: + // Groupname:; + // Then errors were appearing. + if (!isset($addresses)){ + $this->error = 'Empty group.'; + return false; + } + + for ($i = 0; $i < count($addresses); $i++) { + $addresses[$i] = trim($addresses[$i]); + } + + // Validate each mailbox. + // Format could be one of: name <geezer@domain.com> + // geezer@domain.com + // geezer + // ... or any other format valid by RFC 822. + array_walk($addresses, array($this, 'validateMailbox')); + + // Nested format + if ($this->nestGroups) { + if ($is_group) { + $structure->addresses = $addresses; + } else { + $structure = $addresses[0]; + } + + // Flat format + } else { + if ($is_group) { + $structure = array_merge($structure, $addresses); + } else { + $structure = $addresses; + } + } + + return $structure; + } + + /** + * Function to validate a phrase. + * + * @access private + * @param string $phrase The phrase to check. + * @return boolean Success or failure. + */ + function _validatePhrase($phrase) + { + // Splits on one or more Tab or space. + $parts = preg_split('/[ \\x09]+/', $phrase, -1, PREG_SPLIT_NO_EMPTY); + + $phrase_parts = array(); + while (count($parts) > 0){ + $phrase_parts[] = $this->_splitCheck($parts, ' '); + for ($i = 0; $i < $this->index + 1; $i++) + array_shift($parts); + } + + for ($i = 0; $i < count($phrase_parts); $i++) { + // If quoted string: + if (substr($phrase_parts[$i], 0, 1) == '"') { + if (!$this->_validateQuotedString($phrase_parts[$i])) + return false; + continue; + } + + // Otherwise it's an atom: + if (!$this->_validateAtom($phrase_parts[$i])) return false; + } + + return true; + } + + /** + * Function to validate an atom which from rfc822 is: + * atom = 1*<any CHAR except specials, SPACE and CTLs> + * + * If validation ($this->validate) has been turned off, then + * validateAtom() doesn't actually check anything. This is so that you + * can split a list of addresses up before encoding personal names + * (umlauts, etc.), for example. + * + * @access private + * @param string $atom The string to check. + * @return boolean Success or failure. + */ + function _validateAtom($atom) + { + if (!$this->validate) { + // Validation has been turned off; assume the atom is okay. + return true; + } + + // Check for any char from ASCII 0 - ASCII 127 + if (!preg_match('/^[\\x00-\\x7E]+$/i', $atom, $matches)) { + return false; + } + + // Check for specials: + if (preg_match('/[][()<>@,;\\:". ]/', $atom)) { + return false; + } + + // Check for control characters (ASCII 0-31): + if (preg_match('/[\\x00-\\x1F]+/', $atom)) { + return false; + } + + return true; + } + + /** + * Function to validate quoted string, which is: + * quoted-string = <"> *(qtext/quoted-pair) <"> + * + * @access private + * @param string $qstring The string to check + * @return boolean Success or failure. + */ + function _validateQuotedString($qstring) + { + // Leading and trailing " + $qstring = substr($qstring, 1, -1); + + // Perform check. + return !(preg_match('/(.)[\x0D\\\\"]/', $qstring, $matches) && $matches[1] != '\\'); + } + + /** + * Function to validate a mailbox, which is: + * mailbox = addr-spec ; simple address + * / phrase route-addr ; name and route-addr + * + * @access public + * @param string &$mailbox The string to check. + * @return boolean Success or failure. + */ + function validateMailbox(&$mailbox) + { + // A couple of defaults. + $phrase = ''; + $comment = ''; + + // Catch any RFC822 comments and store them separately + $_mailbox = $mailbox; + while (strlen(trim($_mailbox)) > 0) { + $parts = explode('(', $_mailbox); + $before_comment = $this->_splitCheck($parts, '('); + if ($before_comment != $_mailbox) { + // First char should be a ( + $comment = substr(str_replace($before_comment, '', $_mailbox), 1); + $parts = explode(')', $comment); + $comment = $this->_splitCheck($parts, ')'); + $comments[] = $comment; + + // +1 is for the trailing ) + $_mailbox = substr($_mailbox, strpos($_mailbox, $comment)+strlen($comment)+1); + } else { + break; + } + } + + for($i=0; $i<count(@$comments); $i++){ + $mailbox = str_replace('('.$comments[$i].')', '', $mailbox); + } + $mailbox = trim($mailbox); + + // Check for name + route-addr + if (substr($mailbox, -1) == '>' && substr($mailbox, 0, 1) != '<') { + $parts = explode('<', $mailbox); + $name = $this->_splitCheck($parts, '<'); + + $phrase = trim($name); + $route_addr = trim(substr($mailbox, strlen($name.'<'), -1)); + + if ($this->_validatePhrase($phrase) === false || ($route_addr = $this->_validateRouteAddr($route_addr)) === false) + return false; + + // Only got addr-spec + } else { + // First snip angle brackets if present. + if (substr($mailbox,0,1) == '<' && substr($mailbox,-1) == '>') + $addr_spec = substr($mailbox,1,-1); + else + $addr_spec = $mailbox; + + if (($addr_spec = $this->_validateAddrSpec($addr_spec)) === false) + return false; + } + + // Construct the object that will be returned. + $mbox = new stdClass(); + + // Add the phrase (even if empty) and comments + $mbox->personal = $phrase; + $mbox->comment = isset($comments) ? $comments : array(); + + if (isset($route_addr)) { + $mbox->mailbox = $route_addr['local_part']; + $mbox->host = $route_addr['domain']; + $route_addr['adl'] !== '' ? $mbox->adl = $route_addr['adl'] : ''; + } else { + $mbox->mailbox = $addr_spec['local_part']; + $mbox->host = $addr_spec['domain']; + } + + $mailbox = $mbox; + return true; + } + + /** + * This function validates a route-addr which is: + * route-addr = "<" [route] addr-spec ">" + * + * Angle brackets have already been removed at the point of + * getting to this function. + * + * @access private + * @param string $route_addr The string to check. + * @return mixed False on failure, or an array containing validated address/route information on success. + */ + function _validateRouteAddr($route_addr) + { + // Check for colon. + if (strpos($route_addr, ':') !== false) { + $parts = explode(':', $route_addr); + $route = $this->_splitCheck($parts, ':'); + } else { + $route = $route_addr; + } + + // If $route is same as $route_addr then the colon was in + // quotes or brackets or, of course, non existent. + if ($route === $route_addr){ + unset($route); + $addr_spec = $route_addr; + if (($addr_spec = $this->_validateAddrSpec($addr_spec)) === false) { + return false; + } + } else { + // Validate route part. + if (($route = $this->_validateRoute($route)) === false) { + return false; + } + + $addr_spec = substr($route_addr, strlen($route . ':')); + + // Validate addr-spec part. + if (($addr_spec = $this->_validateAddrSpec($addr_spec)) === false) { + return false; + } + } + + if (isset($route)) { + $return['adl'] = $route; + } else { + $return['adl'] = ''; + } + + $return = array_merge($return, $addr_spec); + return $return; + } + + /** + * Function to validate a route, which is: + * route = 1#("@" domain) ":" + * + * @access private + * @param string $route The string to check. + * @return mixed False on failure, or the validated $route on success. + */ + function _validateRoute($route) + { + // Split on comma. + $domains = explode(',', trim($route)); + + for ($i = 0; $i < count($domains); $i++) { + $domains[$i] = str_replace('@', '', trim($domains[$i])); + if (!$this->_validateDomain($domains[$i])) return false; + } + + return $route; + } + + /** + * Function to validate a domain, though this is not quite what + * you expect of a strict internet domain. + * + * domain = sub-domain *("." sub-domain) + * + * @access private + * @param string $domain The string to check. + * @return mixed False on failure, or the validated domain on success. + */ + function _validateDomain($domain) + { + // Note the different use of $subdomains and $sub_domains + $subdomains = explode('.', $domain); + + while (count($subdomains) > 0) { + $sub_domains[] = $this->_splitCheck($subdomains, '.'); + for ($i = 0; $i < $this->index + 1; $i++) + array_shift($subdomains); + } + + for ($i = 0; $i < count($sub_domains); $i++) { + if (!$this->_validateSubdomain(trim($sub_domains[$i]))) + return false; + } + + // Managed to get here, so return input. + return $domain; + } + + /** + * Function to validate a subdomain: + * subdomain = domain-ref / domain-literal + * + * @access private + * @param string $subdomain The string to check. + * @return boolean Success or failure. + */ + function _validateSubdomain($subdomain) + { + if (preg_match('|^\[(.*)]$|', $subdomain, $arr)){ + if (!$this->_validateDliteral($arr[1])) return false; + } else { + if (!$this->_validateAtom($subdomain)) return false; + } + + // Got here, so return successful. + return true; + } + + /** + * Function to validate a domain literal: + * domain-literal = "[" *(dtext / quoted-pair) "]" + * + * @access private + * @param string $dliteral The string to check. + * @return boolean Success or failure. + */ + function _validateDliteral($dliteral) + { + return !preg_match('/(.)[][\x0D\\\\]/', $dliteral, $matches) && $matches[1] != '\\'; + } + + /** + * Function to validate an addr-spec. + * + * addr-spec = local-part "@" domain + * + * @access private + * @param string $addr_spec The string to check. + * @return mixed False on failure, or the validated addr-spec on success. + */ + function _validateAddrSpec($addr_spec) + { + $addr_spec = trim($addr_spec); + + // Split on @ sign if there is one. + if (strpos($addr_spec, '@') !== false) { + $parts = explode('@', $addr_spec); + $local_part = $this->_splitCheck($parts, '@'); + $domain = substr($addr_spec, strlen($local_part . '@')); + + // No @ sign so assume the default domain. + } else { + $local_part = $addr_spec; + $domain = $this->default_domain; + } + + if (($local_part = $this->_validateLocalPart($local_part)) === false) return false; + if (($domain = $this->_validateDomain($domain)) === false) return false; + + // Got here so return successful. + return array('local_part' => $local_part, 'domain' => $domain); + } + + /** + * Function to validate the local part of an address: + * local-part = word *("." word) + * + * @access private + * @param string $local_part + * @return mixed False on failure, or the validated local part on success. + */ + function _validateLocalPart($local_part) + { + $parts = explode('.', $local_part); + + // Split the local_part into words. + while (count($parts) > 0){ + $words[] = $this->_splitCheck($parts, '.'); + for ($i = 0; $i < $this->index + 1; $i++) { + array_shift($parts); + } + } + + // Validate each word. + for ($i = 0; $i < count($words); $i++) { + if ($this->_validatePhrase(trim($words[$i])) === false) return false; + } + + // Managed to get here, so return the input. + return $local_part; + } + + /** + * Returns an approximate count of how many addresses are + * in the given string. This is APPROXIMATE as it only splits + * based on a comma which has no preceding backslash. Could be + * useful as large amounts of addresses will end up producing + * *large* structures when used with parseAddressList(). + * + * @param string $data Addresses to count + * @return int Approximate count + */ + function approximateCount($data) + { + return count(preg_split('/(?<!\\\\),/', $data)); + } + + /** + * This is a email validating function seperate to the rest + * of the class. It simply validates whether an email is of + * the common internet form: <user>@<domain>. This can be + * sufficient for most people. Optional stricter mode can + * be utilised which restricts mailbox characters allowed + * to alphanumeric, full stop, hyphen and underscore. + * + * @param string $data Address to check + * @param boolean $strict Optional stricter mode + * @return mixed False if it fails, an indexed array + * username/domain if it matches + */ + function isValidInetAddress($data, $strict = false) + { + $regex = $strict ? '/^([.0-9a-z_-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i' : '/^([*+!.&#$|\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i'; + if (preg_match($regex, trim($data), $matches)) { + return array($matches[1], $matches[2]); + } else { + return false; + } + } +} + +?> diff --git a/lib/mail/background.gif b/lib/mail/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..3dbe69a09a5c5bff487bc45b73db0a929b115c09 GIT binary patch literal 1321 zcmZ?wbhEHbWME-q_|Cwf*mF;_=bqt|dzMq~IRVj}dtP(y1p(30d&x`hRquV?viJFv zW6$Rtd%pDC^R?%m@4fc^*uD4Hp1*(o{5=r-9|fZ!FqA_;hXDkDd4YlB9|JQBgG0dr zM+Qa~9)*Ah4o$2)QZ@|?j)z(}MGUgeoG4s;yidWti^sEQ$;n9?{;PaW7A-wJ%^?0% zk7x0+v$HJnU!6Hwy!`w;hk7nvuaXrP7kTt+`JO6Sd3jmDe6L=wuZw{uZshVgabaOo z2fv)l1cimGZm!HYzsmP?+1lIN3htlk^)6p`cUQ&xS7%R`uaBS1yqQaE#f66O4FbpF zo^WjX=ytqE-n-97QaR=HWW(@f1v87&&d;{){%2!l^78Vs;OscwS*4lRS0t{^^Zi}= z_Qv+~+xL2BZ-001Kt1<#Uz_s6`^THr<@5Gf7Ck?;(74{uw(9H4Ynzkr@7uGx<o)%7 z|FZW;Sri;>;pX=ikxu;h{QLdK?bFxC+LZtL{`~d&{`>p>|6_PJUA~^_UwA?Ti<-rQ zCN`}b3e6l&6%ShY+<rW06}zT(AdI8*Mj`_<PeKG!yyuh|t~)le-S;rr`eRbJ!NDDq zdUP&UOzPEmc;ZpF&9NJgd+e`CJn40Q7V)IdPK|TPBqt-!C6nEpI-g7mF^haUIoxgL z(<xzPolB=jHJyAqJ*6%3*^IPhozL8vb9P*v-J)xv<np>V^qTwJl_z2fHQ(KgnSbx2 zWpqiCnAH4*mA__cEUMM}wS1Aboz#jYQ*Ir5k=7C>wQ}jKB(9aqr*pk}v7$FG>(zp} iuPilJE|8n0l`AlF)2dagHy!%*a?MsXu1E(425SHd2KTQ3 literal 0 HcmV?d00001 diff --git a/lib/mail/klasse.php b/lib/mail/klasse.php new file mode 100644 index 0000000..d75b270 --- /dev/null +++ b/lib/mail/klasse.php @@ -0,0 +1,795 @@ +<?php +/** +* This file is part of the htmlMimeMail package (http://www.phpguru.org/) +* +* htmlMimeMail is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* htmlMimeMail is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with htmlMimeMail; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +* +* © Copyright 2004 Richard Heyes +*/ + +require_once(dirname(__FILE__) . '/mimePart.php'); + +class htmlMimeMail +{ + /** + * The html part of the message + * @var string + */ + var $html; + + /** + * The text part of the message(only used in TEXT only messages) + * @var string + */ + var $text; + + /** + * The main body of the message after building + * @var string + */ + var $output; + + /** + * The alternative text to the HTML part (only used in HTML messages) + * @var string + */ + var $html_text; + + /** + * An array of embedded images/objects + * @var array + */ + var $html_images; + + /** + * An array of recognised image types for the findHtmlImages() method + * @var array + */ + var $image_types; + + /** + * Parameters that affect the build process + * @var array + */ + var $build_params; + + /** + * Array of attachments + * @var array + */ + var $attachments; + + /** + * The main message headers + * @var array + */ + var $headers; + + /** + * Whether the message has been built or not + * @var boolean + */ + var $is_built; + + /** + * The return path address. If not set the From: + * address is used instead + * @var string + */ + var $return_path; + + /** + * Array of information needed for smtp sending + * @var array + */ + var $smtp_params; + + /** + * Constructor function. Sets the headers + * if supplied. + */ + function htmlMimeMail() + { + /** + * Initialise some variables. + */ + $this->html_images = array(); + $this->headers = array(); + $this->is_built = false; + + /** + * If you want the auto load functionality + * to find other image/file types, add the + * extension and content type here. + */ + $this->image_types = array( + 'gif' => 'image/gif', + 'jpg' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'bmp' => 'image/bmp', + 'png' => 'image/png', + 'tif' => 'image/tiff', + 'tiff' => 'image/tiff', + 'swf' => 'application/x-shockwave-flash' + ); + + /** + * Set these up + */ + $this->build_params['html_encoding'] = 'quoted-printable'; + $this->build_params['text_encoding'] = '7bit'; + $this->build_params['html_charset'] = 'ISO-8859-1'; + $this->build_params['text_charset'] = 'ISO-8859-1'; + $this->build_params['head_charset'] = 'ISO-8859-1'; + $this->build_params['text_wrap'] = 998; + + /** + * Defaults for smtp sending + */ + if (!empty($GLOBALS['HTTP_SERVER_VARS']['HTTP_HOST'])) { + $helo = $GLOBALS['HTTP_SERVER_VARS']['HTTP_HOST']; + } elseif (!empty($GLOBALS['HTTP_SERVER_VARS']['SERVER_NAME'])) { + $helo = $GLOBALS['HTTP_SERVER_VARS']['SERVER_NAME']; + } else { + $helo = 'localhost'; + } + + $this->smtp_params['host'] = 'localhost'; + $this->smtp_params['port'] = 25; + $this->smtp_params['helo'] = $helo; + $this->smtp_params['auth'] = false; + $this->smtp_params['user'] = ''; + $this->smtp_params['pass'] = ''; + + /** + * Make sure the MIME version header is first. + */ + $this->headers['MIME-Version'] = '1.0'; + } + + /** + * This function will read a file in + * from a supplied filename and return + * it. This can then be given as the first + * argument of the the functions + * add_html_image() or add_attachment(). + */ + function getFile($filename) + { + $return = ''; + if ($fp = fopen($filename, 'rb')) { + while (!feof($fp)) { + $return .= fread($fp, 1024); + } + fclose($fp); + return $return; + + } else { + return false; + } + } + + /** + * Accessor to set the CRLF style + */ + function setCrlf($crlf = "\n") + { + if (!defined('CRLF')) { + define('CRLF', $crlf, true); + } + + if (!defined('MAIL_MIMEPART_CRLF')) { + define('MAIL_MIMEPART_CRLF', $crlf, true); + } + } + + /** + * Accessor to set the SMTP parameters + */ + function setSMTPParams($host = null, $port = null, $helo = null, $auth = null, $user = null, $pass = null) + { + if (!is_null($host)) $this->smtp_params['host'] = $host; + if (!is_null($port)) $this->smtp_params['port'] = $port; + if (!is_null($helo)) $this->smtp_params['helo'] = $helo; + if (!is_null($auth)) $this->smtp_params['auth'] = $auth; + if (!is_null($user)) $this->smtp_params['user'] = $user; + if (!is_null($pass)) $this->smtp_params['pass'] = $pass; + } + + /** + * Accessor function to set the text encoding + */ + function setTextEncoding($encoding = '7bit') + { + $this->build_params['text_encoding'] = $encoding; + } + + /** + * Accessor function to set the HTML encoding + */ + function setHtmlEncoding($encoding = 'quoted-printable') + { + $this->build_params['html_encoding'] = $encoding; + } + + /** + * Accessor function to set the text charset + */ + function setTextCharset($charset = 'ISO-8859-1') + { + $this->build_params['text_charset'] = $charset; + } + + /** + * Accessor function to set the HTML charset + */ + function setHtmlCharset($charset = 'ISO-8859-1') + { + $this->build_params['html_charset'] = $charset; + } + + /** + * Accessor function to set the header encoding charset + */ + function setHeadCharset($charset = 'ISO-8859-1') + { + $this->build_params['head_charset'] = $charset; + } + + /** + * Accessor function to set the text wrap count + */ + function setTextWrap($count = 998) + { + $this->build_params['text_wrap'] = $count; + } + + /** + * Accessor to set a header + */ + function setHeader($name, $value) + { + $this->headers[$name] = $value; + } + + /** + * Accessor to add a Subject: header + */ + function setSubject($subject) + { + $this->headers['Subject'] = $subject; + } + + /** + * Accessor to add a From: header + */ + function setFrom($from) + { + $this->headers['From'] = $from; + } + + /** + * Accessor to set the return path + */ + function setReturnPath($return_path) + { + $this->return_path = $return_path; + } + + /** + * Accessor to add a Cc: header + */ + function setCc($cc) + { + $this->headers['Cc'] = $cc; + } + + /** + * Accessor to add a Bcc: header + */ + function setBcc($bcc) + { + $this->headers['Bcc'] = $bcc; + } + + /** + * Adds plain text. Use this function + * when NOT sending html email + */ + function setText($text = '') + { + $this->text = $text; + } + + /** + * Adds a html part to the mail. + * Also replaces image names with + * content-id's. + */ + function setHtml($html, $text = null, $images_dir = null) + { + $this->html = $html; + $this->html_text = $text; + + if (isset($images_dir)) { + $this->_findHtmlImages($images_dir); + } + } + + /** + * Function for extracting images from + * html source. This function will look + * through the html code supplied by add_html() + * and find any file that ends in one of the + * extensions defined in $obj->image_types. + * If the file exists it will read it in and + * embed it, (not an attachment). + * + * @author Dan Allen + */ + function _findHtmlImages($images_dir) + { + // Build the list of image extensions + while (list($key,) = each($this->image_types)) { + $extensions[] = $key; + } + + preg_match_all('/(?:"|\')([^"\']+\.('.implode('|', $extensions).'))(?:"|\')/Ui', $this->html, $images); + + for ($i=0; $i<count($images[1]); $i++) { + if (file_exists($images_dir . $images[1][$i])) { + $html_images[] = $images[1][$i]; + $this->html = str_replace($images[1][$i], basename($images[1][$i]), $this->html); + } + } + + if (!empty($html_images)) { + + // If duplicate images are embedded, they may show up as attachments, so remove them. + $html_images = array_unique($html_images); + sort($html_images); + + for ($i=0; $i<count($html_images); $i++) { + if ($image = $this->getFile($images_dir.$html_images[$i])) { + $ext = substr($html_images[$i], strrpos($html_images[$i], '.') + 1); + $content_type = $this->image_types[strtolower($ext)]; + $this->addHtmlImage($image, basename($html_images[$i]), $content_type); + } + } + } + } + + /** + * Adds an image to the list of embedded + * images. + */ + function addHtmlImage($file, $name = '', $c_type='application/octet-stream') + { + $this->html_images[] = array( + 'body' => $file, + 'name' => $name, + 'c_type' => $c_type, + 'cid' => md5(uniqid(time())) + ); + } + + + /** + * Adds a file to the list of attachments. + */ + function addAttachment($file, $name = '', $c_type='application/octet-stream', $encoding = 'base64') + { + $this->attachments[] = array( + 'body' => $file, + 'name' => $name, + 'c_type' => $c_type, + 'encoding' => $encoding + ); + } + + /** + * Adds a text subpart to a mime_part object + */ + function &_addTextPart(&$obj, $text) + { + $params['content_type'] = 'text/plain'; + $params['encoding'] = $this->build_params['text_encoding']; + $params['charset'] = $this->build_params['text_charset']; + if (is_object($obj)) { + $return = $obj->addSubpart($text, $params); + } else { + $return = new Mail_mimePart($text, $params); + } + + return $return; + } + + /** + * Adds a html subpart to a mime_part object + */ + function &_addHtmlPart(&$obj) + { + $params['content_type'] = 'text/html'; + $params['encoding'] = $this->build_params['html_encoding']; + $params['charset'] = $this->build_params['html_charset']; + if (is_object($obj)) { + $return = $obj->addSubpart($this->html, $params); + } else { + $return = new Mail_mimePart($this->html, $params); + } + + return $return; + } + + /** + * Starts a message with a mixed part + */ + function &_addMixedPart() + { + $params['content_type'] = 'multipart/mixed'; + $return = new Mail_mimePart('', $params); + + return $return; + } + + /** + * Adds an alternative part to a mime_part object + */ + function &_addAlternativePart(&$obj) + { + $params['content_type'] = 'multipart/alternative'; + if (is_object($obj)) { + $return = $obj->addSubpart('', $params); + } else { + $return = new Mail_mimePart('', $params); + } + + return $return; + } + + /** + * Adds a html subpart to a mime_part object + */ + function &_addRelatedPart(&$obj) + { + $params['content_type'] = 'multipart/related'; + if (is_object($obj)) { + $return = $obj->addSubpart('', $params); + } else { + $return = new Mail_mimePart('', $params); + } + + return $return; + } + + /** + * Adds an html image subpart to a mime_part object + */ + function _addHtmlImagePart(&$obj, $value) + { + $params['content_type'] = $value['c_type']; + $params['encoding'] = 'base64'; + $params['disposition'] = 'inline'; + $params['dfilename'] = $value['name']; + $params['cid'] = $value['cid']; + $obj->addSubpart($value['body'], $params); + } + + /** + * Adds an attachment subpart to a mime_part object + */ + function _addAttachmentPart(&$obj, $value) + { + $params['content_type'] = $value['c_type']; + $params['encoding'] = $value['encoding']; + $params['disposition'] = 'attachment'; + $params['dfilename'] = $value['name']; + $obj->addSubpart($value['body'], $params); + } + + /** + * Builds the multipart message from the + * list ($this->_parts). $params is an + * array of parameters that shape the building + * of the message. Currently supported are: + * + * $params['html_encoding'] - The type of encoding to use on html. Valid options are + * "7bit", "quoted-printable" or "base64" (all without quotes). + * 7bit is EXPRESSLY NOT RECOMMENDED. Default is quoted-printable + * $params['text_encoding'] - The type of encoding to use on plain text Valid options are + * "7bit", "quoted-printable" or "base64" (all without quotes). + * Default is 7bit + * $params['text_wrap'] - The character count at which to wrap 7bit encoded data. + * Default this is 998. + * $params['html_charset'] - The character set to use for a html section. + * Default is ISO-8859-1 + * $params['text_charset'] - The character set to use for a text section. + * - Default is ISO-8859-1 + * $params['head_charset'] - The character set to use for header encoding should it be needed. + * - Default is ISO-8859-1 + */ + function buildMessage($params = array()) + { + if (!empty($params)) { + while (list($key, $value) = each($params)) { + $this->build_params[$key] = $value; + } + } + + if (!empty($this->html_images)) { + foreach ($this->html_images as $value) { + $this->html = str_replace($value['name'], 'cid:'.$value['cid'], $this->html); + } + } + + $null = null; + $attachments = !empty($this->attachments) ? true : false; + $html_images = !empty($this->html_images) ? true : false; + $html = !empty($this->html) ? true : false; + $text = isset($this->text) ? true : false; + + switch (true) { + case $text AND !$attachments: + $message = &$this->_addTextPart($null, $this->text); + break; + + case !$text AND $attachments AND !$html: + $message = &$this->_addMixedPart(); + + for ($i=0; $i<count($this->attachments); $i++) { + $this->_addAttachmentPart($message, $this->attachments[$i]); + } + break; + + case $text AND $attachments: + $message = &$this->_addMixedPart(); + $this->_addTextPart($message, $this->text); + + for ($i=0; $i<count($this->attachments); $i++) { + $this->_addAttachmentPart($message, $this->attachments[$i]); + } + break; + + case $html AND !$attachments AND !$html_images: + if (!is_null($this->html_text)) { + $message = &$this->_addAlternativePart($null); + $this->_addTextPart($message, $this->html_text); + $this->_addHtmlPart($message); + } else { + $message = &$this->_addHtmlPart($null); + } + break; + + case $html AND !$attachments AND $html_images: + if (!is_null($this->html_text)) { + $message = &$this->_addAlternativePart($null); + $this->_addTextPart($message, $this->html_text); + $related = &$this->_addRelatedPart($message); + } else { + $message = &$this->_addRelatedPart($null); + $related = &$message; + } + $this->_addHtmlPart($related); + for ($i=0; $i<count($this->html_images); $i++) { + $this->_addHtmlImagePart($related, $this->html_images[$i]); + } + break; + + case $html AND $attachments AND !$html_images: + $message = &$this->_addMixedPart(); + if (!is_null($this->html_text)) { + $alt = &$this->_addAlternativePart($message); + $this->_addTextPart($alt, $this->html_text); + $this->_addHtmlPart($alt); + } else { + $this->_addHtmlPart($message); + } + for ($i=0; $i<count($this->attachments); $i++) { + $this->_addAttachmentPart($message, $this->attachments[$i]); + } + break; + + case $html AND $attachments AND $html_images: + $message = &$this->_addMixedPart(); + if (!is_null($this->html_text)) { + $alt = &$this->_addAlternativePart($message); + $this->_addTextPart($alt, $this->html_text); + $rel = &$this->_addRelatedPart($alt); + } else { + $rel = &$this->_addRelatedPart($message); + } + $this->_addHtmlPart($rel); + for ($i=0; $i<count($this->html_images); $i++) { + $this->_addHtmlImagePart($rel, $this->html_images[$i]); + } + for ($i=0; $i<count($this->attachments); $i++) { + $this->_addAttachmentPart($message, $this->attachments[$i]); + } + break; + + } + + if (isset($message)) { + $output = $message->encode(); + $this->output = $output['body']; + $this->headers = array_merge($this->headers, $output['headers']); + + // Add message ID header + srand((double)microtime()*10000000); + $message_id = sprintf('<%s.%s@%s>', base_convert(time(), 10, 36), base_convert(rand(), 10, 36), !empty($GLOBALS['HTTP_SERVER_VARS']['HTTP_HOST']) ? $GLOBALS['HTTP_SERVER_VARS']['HTTP_HOST'] : $GLOBALS['HTTP_SERVER_VARS']['SERVER_NAME']); + $this->headers['Message-ID'] = $message_id; + + $this->is_built = true; + return true; + } else { + return false; + } + } + + /** + * Function to encode a header if necessary + * according to RFC2047 + */ + function _encodeHeader($input, $charset = 'ISO-8859-1') + { + preg_match_all('/(\s?\w*[\x80-\xFF]+\w*\s?)/', $input, $matches); + foreach ($matches[1] as $value) { + $replacement = preg_replace('/([\x20\x80-\xFF])/e', '"=" . strtoupper(dechex(ord("\1")))', $value); + $input = str_replace($value, '=?' . $charset . '?Q?' . $replacement . '?=', $input); + } + + return $input; + } + + /** + * Sends the mail. + * + * @param array $recipients + * @param string $type OPTIONAL + * @return mixed + */ + function send($recipients, $type = 'mail') + { + if (!defined('CRLF')) { + $this->setCrlf($type == 'mail' ? "\n" : "\r\n"); + } + + if (!$this->is_built) { + $this->buildMessage(); + } + + switch ($type) { + case 'mail': + $subject = ''; + if (!empty($this->headers['Subject'])) { + $subject = $this->_encodeHeader($this->headers['Subject'], $this->build_params['head_charset']); + unset($this->headers['Subject']); + } + + // Get flat representation of headers + foreach ($this->headers as $name => $value) { + $headers[] = $name . ': ' . $this->_encodeHeader($value, $this->build_params['head_charset']); + } + + $to = $this->_encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); + + if (!empty($this->return_path)) { + $result = mail($to, $subject, $this->output, implode(CRLF, $headers), '-f' . $this->return_path); + } else { + $result = mail($to, $subject, $this->output, implode(CRLF, $headers)); + } + + // Reset the subject in case mail is resent + if ($subject !== '') { + $this->headers['Subject'] = $subject; + } + + // Return + return $result; + break; + + case 'smtp': + require_once(dirname(__FILE__) . '/smtp.php'); + require_once(dirname(__FILE__) . '/RFC822.php'); + $smtp = &smtp::connect($this->smtp_params); + + // Parse recipients argument for internet addresses + foreach ($recipients as $recipient) { + $addresses = Mail_RFC822::parseAddressList($recipient, $this->smtp_params['helo'], null, false); + foreach ($addresses as $address) { + $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); + } + } + unset($addresses); // These are reused + unset($address); // These are reused + + // Get flat representation of headers, parsing + // Cc and Bcc as we go + foreach ($this->headers as $name => $value) { + if ($name == 'Cc' OR $name == 'Bcc') { + $addresses = Mail_RFC822::parseAddressList($value, $this->smtp_params['helo'], null, false); + foreach ($addresses as $address) { + $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); + } + } + if ($name == 'Bcc') { + continue; + } + $headers[] = $name . ': ' . $this->_encodeHeader($value, $this->build_params['head_charset']); + } + // Add To header based on $recipients argument + $headers[] = 'To: ' . $this->_encodeHeader(implode(', ', $recipients), $this->build_params['head_charset']); + + // Add headers to send_params + $send_params['headers'] = $headers; + $send_params['recipients'] = array_values(array_unique($smtp_recipients)); + $send_params['body'] = $this->output; + + // Setup return path + if (isset($this->return_path)) { + $send_params['from'] = $this->return_path; + } elseif (!empty($this->headers['From'])) { + $from = Mail_RFC822::parseAddressList($this->headers['From']); + $send_params['from'] = sprintf('%s@%s', $from[0]->mailbox, $from[0]->host); + } else { + $send_params['from'] = 'postmaster@' . $this->smtp_params['helo']; + } + + // Send it + if (!$smtp->send($send_params)) { + $this->errors = $smtp->errors; + return false; + } + return true; + break; + } + } + + /** + * Use this method to return the email + * in message/rfc822 format. Useful for + * adding an email to another email as + * an attachment. there's a commented + * out example in example.php. + */ + function getRFC822($recipients) + { + // Make up the date header as according to RFC822 + $this->setHeader('Date', date('D, d M y H:i:s O')); + + if (!defined('CRLF')) { + $this->setCrlf($type == 'mail' ? "\n" : "\r\n"); + } + + if (!$this->is_built) { + $this->buildMessage(); + } + + // Return path ? + if (isset($this->return_path)) { + $headers[] = 'Return-Path: ' . $this->return_path; + } + + // Get flat representation of headers + foreach ($this->headers as $name => $value) { + $headers[] = $name . ': ' . $value; + } + $headers[] = 'To: ' . implode(', ', $recipients); + + return implode(CRLF, $headers) . CRLF . CRLF . $this->output; + } +} // End of class. +?> diff --git a/lib/mail/mimePart.php b/lib/mail/mimePart.php new file mode 100644 index 0000000..f726bf4 --- /dev/null +++ b/lib/mail/mimePart.php @@ -0,0 +1,333 @@ +<?php +// +// +----------------------------------------------------------------------+ +// | PHP Version 4 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 1997-2002 The PHP Group | +// +----------------------------------------------------------------------+ +// | This source file is subject to version 2.02 of the PHP license, | +// | that is bundled with this package in the file LICENSE, and is | +// | available at through the world-wide-web at | +// | http://www.php.net/license/2_02.txt. | +// | If you did not receive a copy of the PHP license and are unable to | +// | obtain it through the world-wide-web, please send a note to | +// | license@php.net so we can mail you a copy immediately. | +// +----------------------------------------------------------------------+ +// | Authors: Richard Heyes <richard@phpguru.org> | +// +----------------------------------------------------------------------+ + +/** +* +* Raw mime encoding class +* +* What is it? +* This class enables you to manipulate and build +* a mime email from the ground up. +* +* Why use this instead of mime.php? +* mime.php is a userfriendly api to this class for +* people who aren't interested in the internals of +* mime mail. This class however allows full control +* over the email. +* +* Eg. +* +* // Since multipart/mixed has no real body, (the body is +* // the subpart), we set the body argument to blank. +* +* $params['content_type'] = 'multipart/mixed'; +* $email = new Mail_mimePart('', $params); +* +* // Here we add a text part to the multipart we have +* // already. Assume $body contains plain text. +* +* $params['content_type'] = 'text/plain'; +* $params['encoding'] = '7bit'; +* $text = $email->addSubPart($body, $params); +* +* // Now add an attachment. Assume $attach is +* the contents of the attachment +* +* $params['content_type'] = 'application/zip'; +* $params['encoding'] = 'base64'; +* $params['disposition'] = 'attachment'; +* $params['dfilename'] = 'example.zip'; +* $attach =& $email->addSubPart($body, $params); +* +* // Now build the email. Note that the encode +* // function returns an associative array containing two +* // elements, body and headers. You will need to add extra +* // headers, (eg. Mime-Version) before sending. +* +* $email = $message->encode(); +* $email['headers'][] = 'Mime-Version: 1.0'; +* +* +* Further examples are available at http://www.phpguru.org +* +* TODO: +* - Set encode() to return the $obj->encoded if encode() +* has already been run. Unless a flag is passed to specifically +* re-build the message. +* +* @author Richard Heyes <richard@phpguru.org> +* @version $Revision: 1.3 $ +* @package Mail +*/ + +class Mail_mimePart { + + /** + * The encoding type of this part + * @var string + */ + var $_encoding; + + /** + * An array of subparts + * @var array + */ + var $_subparts; + + /** + * The output of this part after being built + * @var string + */ + var $_encoded; + + /** + * Headers for this part + * @var array + */ + var $_headers; + + /** + * The body of this part (not encoded) + * @var string + */ + var $_body; + + /** + * Constructor. + * + * Sets up the object. + * + * @param $body - The body of the mime part if any. + * @param $params - An associative array of parameters: + * content_type - The content type for this part eg multipart/mixed + * encoding - The encoding to use, 7bit, 8bit, base64, or quoted-printable + * cid - Content ID to apply + * disposition - Content disposition, inline or attachment + * dfilename - Optional filename parameter for content disposition + * description - Content description + * charset - Character set to use + * @access public + */ + function Mail_mimePart($body = '', $params = array()) + { + if (!defined('MAIL_MIMEPART_CRLF')) { + define('MAIL_MIMEPART_CRLF', defined('MAIL_MIME_CRLF') ? MAIL_MIME_CRLF : "\r\n", TRUE); + } + + foreach ($params as $key => $value) { + switch ($key) { + case 'content_type': + $headers['Content-Type'] = $value . (isset($charset) ? '; charset="' . $charset . '"' : ''); + break; + + case 'encoding': + $this->_encoding = $value; + $headers['Content-Transfer-Encoding'] = $value; + break; + + case 'cid': + $headers['Content-ID'] = '<' . $value . '>'; + break; + + case 'disposition': + $headers['Content-Disposition'] = $value . (isset($dfilename) ? '; filename="' . $dfilename . '"' : ''); + break; + + case 'dfilename': + if (isset($headers['Content-Disposition'])) { + $headers['Content-Disposition'] .= '; filename="' . $value . '"'; + } else { + $dfilename = $value; + } + break; + + case 'description': + $headers['Content-Description'] = $value; + break; + + case 'charset': + if (isset($headers['Content-Type'])) { + $headers['Content-Type'] .= '; charset="' . $value . '"'; + } else { + $charset = $value; + } + break; + } + } + + // Default content-type + if (!isset($headers['Content-Type'])) { + $headers['Content-Type'] = 'text/plain'; + } + + //Default encoding + if (!isset($this->_encoding)) { + $this->_encoding = '7bit'; + } + + // Assign stuff to member variables + $this->_encoded = array(); + $this->_headers = $headers; + $this->_body = $body; + } + + /** + * encode() + * + * Encodes and returns the email. Also stores + * it in the encoded member variable + * + * @return An associative array containing two elements, + * body and headers. The headers element is itself + * an indexed array. + * @access public + */ + function encode() + { + $encoded =& $this->_encoded; + + if (!empty($this->_subparts)) { + srand((double)microtime()*1000000); + $boundary = '=_' . md5(uniqid(rand()) . microtime()); + $this->_headers['Content-Type'] .= ';' . MAIL_MIMEPART_CRLF . "\t" . 'boundary="' . $boundary . '"'; + + // Add body parts to $subparts + for ($i = 0; $i < count($this->_subparts); $i++) { + $headers = array(); + $tmp = $this->_subparts[$i]->encode(); + foreach ($tmp['headers'] as $key => $value) { + $headers[] = $key . ': ' . $value; + } + $subparts[] = implode(MAIL_MIMEPART_CRLF, $headers) . MAIL_MIMEPART_CRLF . MAIL_MIMEPART_CRLF . $tmp['body']; + } + + $encoded['body'] = '--' . $boundary . MAIL_MIMEPART_CRLF . + implode('--' . $boundary . MAIL_MIMEPART_CRLF, $subparts) . + '--' . $boundary.'--' . MAIL_MIMEPART_CRLF; + + } else { + $encoded['body'] = $this->_getEncodedData($this->_body, $this->_encoding) . MAIL_MIMEPART_CRLF; + } + + // Add headers to $encoded + $encoded['headers'] =& $this->_headers; + + return $encoded; + } + + /** + * &addSubPart() + * + * Adds a subpart to current mime part and returns + * a reference to it + * + * @param $body The body of the subpart, if any. + * @param $params The parameters for the subpart, same + * as the $params argument for constructor. + * @return A reference to the part you just added. It is + * crucial if using multipart/* in your subparts that + * you use =& in your script when calling this function, + * otherwise you will not be able to add further subparts. + * @access public + */ + function &addSubPart($body, $params) + { + $this->_subparts[] = new Mail_mimePart($body, $params); + return $this->_subparts[count($this->_subparts) - 1]; + } + + /** + * _getEncodedData() + * + * Returns encoded data based upon encoding passed to it + * + * @param $data The data to encode. + * @param $encoding The encoding type to use, 7bit, base64, + * or quoted-printable. + * @access private + */ + function _getEncodedData($data, $encoding) + { + switch ($encoding) { + case '8bit': + case '7bit': + return $data; + break; + + case 'quoted-printable': + return $this->_quotedPrintableEncode($data); + break; + + case 'base64': + return rtrim(chunk_split(base64_encode($data), 76, MAIL_MIMEPART_CRLF)); + break; + + default: + return $data; + } + } + + /** + * quoteadPrintableEncode() + * + * Encodes data to quoted-printable standard. + * + * @param $input The data to encode + * @param $line_max Optional max line length. Should + * not be more than 76 chars + * + * @access private + */ + function _quotedPrintableEncode($input , $line_max = 76) + { + $lines = preg_split("/\r?\n/", $input); + $eol = MAIL_MIMEPART_CRLF; + $escape = '='; + $output = ''; + + while(list(, $line) = each($lines)){ + + $linlen = strlen($line); + $newline = ''; + + for ($i = 0; $i < $linlen; $i++) { + $char = substr($line, $i, 1); + $dec = ord($char); + + if (($dec == 32) AND ($i == ($linlen - 1))){ // convert space at eol only + $char = '=20'; + + } elseif($dec == 9) { + ; // Do nothing if a tab. + } elseif(($dec == 61) OR ($dec < 32 ) OR ($dec > 126)) { + $char = $escape . strtoupper(sprintf('%02s', dechex($dec))); + } + + if ((strlen($newline) + strlen($char)) >= $line_max) { // MAIL_MIMEPART_CRLF is not counted + $output .= $newline . $escape . $eol; // soft line break; " =\r\n" is okay + $newline = ''; + } + $newline .= $char; + } // end of for + $output .= $newline . $eol; + } + $output = substr($output, 0, -1 * strlen($eol)); // Don't want last crlf + return $output; + } +} // End of class +?> diff --git a/lib/mail/smtp.php b/lib/mail/smtp.php new file mode 100644 index 0000000..903ec75 --- /dev/null +++ b/lib/mail/smtp.php @@ -0,0 +1,359 @@ +<?php +/** +* Filename.......: class.smtp.inc +* Project........: SMTP Class +* Version........: 1.0.5 +* Last Modified..: 21 December 2001 +*/ + + define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE); + define('SMTP_STATUS_CONNECTED', 2, TRUE); + + class smtp{ + + var $authenticated; + var $connection; + var $recipients; + var $headers; + var $timeout; + var $errors; + var $status; + var $body; + var $from; + var $host; + var $port; + var $helo; + var $auth; + var $user; + var $pass; + + /** + * Constructor function. Arguments: + * $params - An assoc array of parameters: + * + * host - The hostname of the smtp server Default: localhost + * port - The port the smtp server runs on Default: 25 + * helo - What to send as the HELO command Default: localhost + * (typically the hostname of the + * machine this script runs on) + * auth - Whether to use basic authentication Default: FALSE + * user - Username for authentication Default: <blank> + * pass - Password for authentication Default: <blank> + * timeout - The timeout in seconds for the call Default: 5 + * to fsockopen() + */ + + function smtp($params = array()){ + + if(!defined('CRLF')) + define('CRLF', "\r\n", TRUE); + + $this->authenticated = FALSE; + $this->timeout = 5; + $this->status = SMTP_STATUS_NOT_CONNECTED; + $this->host = 'localhost'; + $this->port = 25; + $this->helo = 'localhost'; + $this->auth = FALSE; + $this->user = ''; + $this->pass = ''; + $this->errors = array(); + + foreach($params as $key => $value){ + $this->$key = $value; + } + } + + /** + * Connect function. This will, when called + * statically, create a new smtp object, + * call the connect function (ie this function) + * and return it. When not called statically, + * it will connect to the server and send + * the HELO command. + */ + + function &connect($params = array()){ + + if(!isset($this->status)){ + $obj = new smtp($params); + if($obj->connect()){ + $obj->status = SMTP_STATUS_CONNECTED; + } + + return $obj; + + }else{ + $this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout); + if(function_exists('socket_set_timeout')){ + @socket_set_timeout($this->connection, 5, 0); + } + + $greeting = $this->get_data(); + if(is_resource($this->connection)){ + return $this->auth ? $this->ehlo() : $this->helo(); + }else{ + $this->errors[] = 'Failed to connect to server: '.$errstr; + return FALSE; + } + } + } + + /** + * Function which handles sending the mail. + * Arguments: + * $params - Optional assoc array of parameters. + * Can contain: + * recipients - Indexed array of recipients + * from - The from address. (used in MAIL FROM:), + * this will be the return path + * headers - Indexed array of headers, one header per array entry + * body - The body of the email + * It can also contain any of the parameters from the connect() + * function + */ + + function send($params = array()){ + + foreach($params as $key => $value){ + $this->set($key, $value); + } + + if($this->is_connected()){ + + // Do we auth or not? Note the distinction between the auth variable and auth() function + if($this->auth AND !$this->authenticated){ + if(!$this->auth()) + return FALSE; + } + + $this->mail($this->from); + if(is_array($this->recipients)) + foreach($this->recipients as $value) + $this->rcpt($value); + else + $this->rcpt($this->recipients); + + if(!$this->data()) + return FALSE; + + // Transparency + $headers = str_replace(CRLF.'.', CRLF.'..', trim(implode(CRLF, $this->headers))); + $body = str_replace(CRLF.'.', CRLF.'..', $this->body); + $body = $body[0] == '.' ? '.'.$body : $body; + + $this->send_data($headers); + $this->send_data(''); + $this->send_data($body); + $this->send_data('.'); + + $result = (substr(trim($this->get_data()), 0, 3) === '250'); + //$this->rset(); + return $result; + }else{ + $this->errors[] = 'Not connected!'; + return FALSE; + } + } + + /** + * Function to implement HELO cmd + */ + + function helo(){ + if(is_resource($this->connection) + AND $this->send_data('HELO '.$this->helo) + AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){ + + return TRUE; + + }else{ + $this->errors[] = 'HELO command failed, output: ' . trim(substr(trim($error),3)); + return FALSE; + } + } + + /** + * Function to implement EHLO cmd + */ + + function ehlo(){ + if(is_resource($this->connection) + AND $this->send_data('EHLO '.$this->helo) + AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){ + + return TRUE; + + }else{ + $this->errors[] = 'EHLO command failed, output: ' . trim(substr(trim($error),3)); + return FALSE; + } + } + + /** + * Function to implement RSET cmd + */ + + function rset(){ + if(is_resource($this->connection) + AND $this->send_data('RSET') + AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){ + + return TRUE; + + }else{ + $this->errors[] = 'RSET command failed, output: ' . trim(substr(trim($error),3)); + return FALSE; + } + } + + /** + * Function to implement QUIT cmd + */ + + function quit(){ + if(is_resource($this->connection) + AND $this->send_data('QUIT') + AND substr(trim($error = $this->get_data()), 0, 3) === '221' ){ + + fclose($this->connection); + $this->status = SMTP_STATUS_NOT_CONNECTED; + return TRUE; + + }else{ + $this->errors[] = 'QUIT command failed, output: ' . trim(substr(trim($error),3)); + return FALSE; + } + } + + /** + * Function to implement AUTH cmd + */ + + function auth(){ + if(is_resource($this->connection) + AND $this->send_data('AUTH LOGIN') + AND substr(trim($error = $this->get_data()), 0, 3) === '334' + AND $this->send_data(base64_encode($this->user)) // Send username + AND substr(trim($error = $this->get_data()),0,3) === '334' + AND $this->send_data(base64_encode($this->pass)) // Send password + AND substr(trim($error = $this->get_data()),0,3) === '235' ){ + + $this->authenticated = TRUE; + return TRUE; + + }else{ + $this->errors[] = 'AUTH command failed: ' . trim(substr(trim($error),3)); + return FALSE; + } + } + + /** + * Function that handles the MAIL FROM: cmd + */ + + function mail($from){ + + if($this->is_connected() + AND $this->send_data('MAIL FROM:<'.$from.'>') + AND substr(trim($this->get_data()), 0, 2) === '250' ){ + + return TRUE; + + }else + return FALSE; + } + + /** + * Function that handles the RCPT TO: cmd + */ + + function rcpt($to){ + + if($this->is_connected() + AND $this->send_data('RCPT TO:<'.$to.'>') + AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){ + + return TRUE; + + }else{ + $this->errors[] = trim(substr(trim($error), 3)); + return FALSE; + } + } + + /** + * Function that sends the DATA cmd + */ + + function data(){ + + if($this->is_connected() + AND $this->send_data('DATA') + AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){ + + return TRUE; + + }else{ + $this->errors[] = trim(substr(trim($error), 3)); + return FALSE; + } + } + + /** + * Function to determine if this object + * is connected to the server or not. + */ + + function is_connected(){ + + return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED)); + } + + /** + * Function to send a bit of data + */ + + function send_data($data){ + + if(is_resource($this->connection)){ + return fwrite($this->connection, $data.CRLF, strlen($data)+2); + + }else + return FALSE; + } + + /** + * Function to get data. + */ + + function &get_data(){ + + $return = ''; + $line = ''; + $loops = 0; + + if(is_resource($this->connection)){ + while((strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' ') AND $loops < 100){ + $line = fgets($this->connection, 512); + $return .= $line; + $loops++; + } + return $return; + + }else + return FALSE; + } + + /** + * Sets a variable + */ + + function set($var, $value){ + + $this->$var = $value; + return TRUE; + } + + } // End of class +?> \ No newline at end of file diff --git a/lib/menue_links.php b/lib/menue_links.php new file mode 100644 index 0000000..1fefe1a --- /dev/null +++ b/lib/menue_links.php @@ -0,0 +1,73 @@ +<?menuehead("Navigation"); +if ($_SESSION['login'] == 'true') {?> + + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/konto/uebersicht">Kontoübersicht</a><br /> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/konto/einzahlen">Einzahlen</a><br /> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/konto/auszahlen">Auszahlen</a><br /> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/konto/buchungen">Buchungen</a><br /> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/konto/refuebersicht">Refübersicht</a><br /> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/konto/userprofil">Userprofil</a><br /> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/intern/startseite&logout=true"><i>Logout</i></a> +<?} else {?> +<form action="" method="post"> +<table width="100%" align="center" cellpadding="0" cellspacing="0" border="0"> +<tr> + <td align="center"> + <b>Nickname:</b><br> + <input type="Text" name="nickname" value="<?=$_POST['nickname'];?>" style="width=110px;"><br> + <b>Passwort:</b><br> + <input type="Password" name="passwort" value="" style="width=110px;"><br> + <select name="autologin" size="1" style="width=110px;"> + <option value="true" SELECTED>Mit Autologin </option> + <option value="false">Ohne Autologin </option> + </select><br> + <br> + <input type="Submit" name="checkid" value="Login" style="width=110px;"><br><br> +</td> +</tr> +<tr> + <td height="15" align="left"> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/intern/daten">Daten vergessen?</a> + </td> +</tr> +<tr> + <td height="15" align="left"> + <img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/intern/anmelden">Registrieren</a> + </td> +</tr> +</table> +</form> +<?}?> +<?menuefoot();?> + +<? if ($_SESSION['login'] == 'true') {?> + + + +<?menuehead("Verdienen");?> +<img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/verdienen/klick4">Klick4Lose</a><br /> +<img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/verdienen/betteln4">Betteln4Lose</a><br /> +<img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/verdienen/paidmails">Paidmails</a> +<?menuefoot();?> + +<?menuehead("Unsere Rallys");?> +<img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/ralleys/aktiv">Aktivrally</a><br /> +<img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/ralleys/klick">Klickrally</a><br /> +<img src="images/pfeil.gif" border="0" alt=""> <a href="?content=/ralleys/ref">Refrally</a> +<?menuefoot();?> + + +<? +$filename = 'lib/texte/box2.txt'; +$fp = fopen ($filename, "r"); +$inhalt = fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +if ($inhalt != ''){ +menuehead("Unsere Sponsoren"); +echo nl2br($inhalt); +menuefoot(); +} +?> + +<? } ?> diff --git a/lib/menue_rechts.php b/lib/menue_rechts.php new file mode 100644 index 0000000..223e8fe --- /dev/null +++ b/lib/menue_rechts.php @@ -0,0 +1,31 @@ +<? if ($_SESSION['login'] == 'true') {?> + +<?menuehead("Games");?> +Link<br> +Link<br> +<?menuefoot(); + +menuehead("Wer ist online"); +include ("lib/weristonline.php"); +menuefoot(); +} + +$filename = 'lib/texte/box1.txt'; +$fp = fopen ($filename, "r"); +$inhalt = fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); + +if ($inhalt != ''){ +menuehead("Unsere Sponsoren"); +echo nl2br($inhalt); +menuefoot(); +} +?> +<!-- Diese Seite basiert auf dem VMS1.2 von Designerscripte.net das entfernen dieses Copyrighthinweises ohne Erlaubnis zieht +rechtliche Schritte mit sich +--> +<div align="center"><font size="1">© by <a href="http://www.designerscripte.net">Designerscripte.net</a></font></div> +<!-- Diese Seite basiert auf dem VMS1.2 von Designerscripte.net das entfernen dieses Copyrighthinweises ohne Erlaubnis zieht +rechtliche Schritte mit sich +--> \ No newline at end of file diff --git a/lib/module.lib.php b/lib/module.lib.php new file mode 100644 index 0000000..2da0302 --- /dev/null +++ b/lib/module.lib.php @@ -0,0 +1,54 @@ +<? +// Gibt den aktuellen Modulnamen aus +function modul_name () { +global $_GET; + return $_GET['mod']; +} + +// Gibt das aktuelle Modulverzeichnis aus +function modul_dir () { +global $dir, $_GET; + return ($dir.$_GET['mod'].'/'); +} + +// Erzeugt modulinterne Links +function modul_link ($vars='') { +global $_GET, $linkstyle; + $link = $linkstyle.$_GET['mod']; + if (!empty ($vars)) $link .= $vars; + return $link; +} + +// Sicherheitsfunktion um unerlaubte Ausrufe zu verhindern +function modul_access () { + if (!defined ('MODULSYSTEM_LOADED')) die ('Unberechtigter Zugriff!'); +} + +// Sicherheitsfunktion fuer Administration um unerlaubte Ausrufe zu verhindern +function moduladmin_access () { + if (!defined ('MODULADMIN_LOADED')) die ('Unberechtigter Zugriff!'); +} + +// MySQL-Query-Funktion +function modul_query ($query) { + return db_query ($query); +} + +function modul_easytime ($time, $trenner=FALSE) { + $diff = ( time () - $time ); + + $days = floor ( $diff / 86400 ); + if ($days > 0) $diff = ( $diff % 86400 ); + + $hours = floor ( $diff / 3600 ); + if ($hours > 0) $diff = ( $diff % 3600 ); + + $mins = floor ( $diff / 60 ); + + $trenner = ($trenner == FALSE) ? ', ' : '<br />'; + $dayend = ($days > 1) ? 'Tage' : 'Tag'; + + if ($days > 0) return ($days.' '.$dayend.$trenner.$hours.' Std.'); + else return ($hours.' Std.'.$trenner.$mins.' Min.'); +} +?> \ No newline at end of file diff --git a/lib/schnittstellen/ebesucher.php b/lib/schnittstellen/ebesucher.php new file mode 100644 index 0000000..729bbce --- /dev/null +++ b/lib/schnittstellen/ebesucher.php @@ -0,0 +1,125 @@ +<? +// eBesucher ST Fehlercodes +$trans_error[1001] = "Alles OK"; +$trans_error[1011] = "Falsche Punkteart"; +$trans_error[1012] = "Falsche Punkteanzahl (z.B. keine ganze Zahl oder negativ)"; +$trans_error[1013] = "Betreff zu lang oder nicht angegeben"; +$trans_error[1021] = "Falsche Schnittstellen-ID"; +$trans_error[1022] = "Falsches Schnittstellen-Passwort"; +$trans_error[1023] = "Zu wenig Punkte auf diesem Schnittstellenaccount"; +$trans_error[1024] = "Falsche KennungsID"; +$trans_error[1025] = "Keine Abfragen mehr auf dem Schnittstellenaccount"; +$trans_error[1031] = "Keine oder falsche UserID bzw. Usernamen angegeben"; +$trans_error[1032] = "UserID UND Username angegeben, benötigt wird nur eins!"; +$trans_error[1033] = "Kein oder falsches User-Passwort angegeben"; +$trans_error[1034] = "Dieser User ist gesperrt"; +$trans_error[1035] = "Das Guthaben des Users reicht nicht aus"; +$trans_error[1036] = "Neuer User (aus Sicherheitsgründen dürfen neue User in den ersten 7 Tagen ihrer Mitgliedschaft die Schnittstelle nicht benutzen)"; +$trans_error[1098] = "Schnittstelle z.Z. nicht verfügbar (DB-Arbeiten o.ä.)"; +$trans_error[1099] = "Unbekannter Fehler"; +$trans_error[9998] = "Fehlerhafter Aufruf (falsche Reihenfolge o.ä.)"; +$trans_error[9999] = "Timeout (Schnittstelle nicht erreichbar)"; + +// ST->User +function auszahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code) { +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$trans_betreff = urlencode($trans_betreff); +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +$trans_menge = urlencode($trans_menge); +// SecVMS change end + +$returned=''; +$ret=@file("http://st.ebesucher.de/send.php?stid=".$betreiber_id."&stpw=".$betreiber_pw."&uid=".$kunden_id."&upw=".$kunden_pw."&k=".$betreiber_kennung."&a=1&p=".$trans_menge."&b=".$trans_betreff."","r"); +for($i=0;$i<count($ret);$i++) { + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,6); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +// User->ST +function einzahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code){ +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$trans_betreff = urlencode($trans_betreff); +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +$trans_menge = urlencode($trans_menge); +// SecVMS change end + +$returned=''; +$ret=file("http://st.ebesucher.de/get.php?stid=".$betreiber_id."&stpw=".$betreiber_pw."&uid=".$kunden_id."&upw=".$kunden_pw."&k=".$betreiber_kennung."&a=1&p=".$trans_menge."&b=".$trans_betreff."","r"); +for($i=0;$i<count($ret);$i++) { + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,6); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +// ebesucher-Kontostand +function usercheck ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error,$user_saldo; + +// SecVMS change begin +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +// SecVMS change end + +$returned=''; +$ret=file("http://st.ebesucher.de/info.php?stid=".$betreiber_id."&stpw=".$betreiber_pw."&uid=".$kunden_id."&upw=".$kunden_pw."","r"); +for($i=0;$i<count($ret);$i++){ + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +if ($error != "true") $user_saldo = $trans_check[1]; +return $error; +return $trans_ausgabe; +return $user_saldo; +} + +// Usercheck +function uservalidate ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +// SecVMS change end + +$returned=''; +$ret=file("http://st.ebesucher.de/info.php?stid=".$betreiber_id."&stpw=".$betreiber_pw."&uid=".$kunden_id."&upw=".$kunden_pw."","r"); +for($i=0;$i<count($ret);$i++){ + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} + +return $error; +return $trans_ausgabe; +} +?> \ No newline at end of file diff --git a/lib/schnittstellen/funcoins.php b/lib/schnittstellen/funcoins.php new file mode 100644 index 0000000..93fc2d3 --- /dev/null +++ b/lib/schnittstellen/funcoins.php @@ -0,0 +1,114 @@ +<? +/* +Transaktionsschnittstelle für Projekt Seth +Betreibersystem Funcoins FuCoEx² +Copyright bei Detlef Tiegel +http://www.projekt-seth.de +*/ + +// Funcoins FuCoEx² Fehlercodes + +// FuCoEx² -> Funcoins +function auszahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code) { +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$trans_betreff = urlencode($trans_betreff); +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +$trans_menge = urlencode($trans_menge); +// SecVMS change end + +$returned=''; +$ret=@file("http://www.funcoinbank.de/engine/fucoex.php?typ=send&k1_nr=".$betreiber_id."&k1_pw=".$betreiber_pw."&k2_nr=".$kunden_id."&k2_pw=".$kunden_pw."&n=".$trans_menge."&s=".$trans_betreff."&transid=".$trans_code."","r"); +for($i=0;$i<count($ret);$i++) { + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_check[0]; +if ($trans_ausgabe == "") $trans_ausgabe = 'FuCoEx²-Server nicht erreichbar!'; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +// Funcoins -> FuCoEx² +function einzahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code){ +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$trans_betreff = urlencode($trans_betreff); +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +$trans_menge = urlencode($trans_menge); +// SecVMS change end + +$returned=''; +$ret=@file("http://www.funcoinbank.de/engine/fucoex.php?typ=get&k1_nr=".$betreiber_id."&k1_pw=".$betreiber_pw."&k2_nr=".$kunden_id."&k2_pw=".$kunden_pw."&n=".$trans_menge."&s=".$trans_betreff."&transid=".$trans_code."","r"); +for($i=0;$i<count($ret);$i++) { + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_check[0]; +if ($trans_ausgabe == "") $trans_ausgabe = 'FuCoEx²-Server nicht erreichbar!'; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +// Funcoins-Kontostand +function usercheck ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error,$user_saldo; + +// SecVMS change begin +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +// SecVMS change end + +$returned=''; +$ret=@file("http://www.funcoinbank.de/engine/fucoex.php?typ=saldo&k1_nr=".$betreiber_id."&k1_pw=".$betreiber_pw."&k2_nr=".$kunden_id."&k2_pw=".$kunden_pw."","r"); +for($i=0;$i<count($ret);$i++){ + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_check[0]; +if ($trans_ausgabe == "") $trans_ausgabe = 'FuCoEx²-Server nicht erreichbar!'; +$error = "true"; +} +if ($error != "true") $user_saldo = $trans_check[1]; +return $error; +return $trans_ausgabe; +return $user_saldo; +} + +// Usercheck +function uservalidate ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +// SecVMS change end + +$returned=''; +$ret=@file("http://www.funcoinbank.de/engine/fucoex.php?typ=validate&k1_nr=".$betreiber_id."&k1_pw=".$betreiber_pw."&k2_nr=".$kunden_id."&k2_pw=".$kunden_pw."","r"); +for($i=0;$i<count($ret);$i++){ + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_check[0]; +if ($trans_ausgabe == "") $trans_ausgabe = 'FuCoEx²-Server nicht erreichbar!'; +$error = "true"; +} +if ($trans_check[2] == 1) {$trans_ausgabe = 'Du stehst auf der FuCo-Blacklist!'; $error = "true";} +if ($trans_check[5] == 'ja') {$trans_ausgabe = 'Betreiberkonten dürfen sich nicht anmelden!'; $error = "true";} +return $error; +return $trans_ausgabe; +} +?> \ No newline at end of file diff --git a/lib/schnittstellen/klamm.php b/lib/schnittstellen/klamm.php new file mode 100644 index 0000000..667845f --- /dev/null +++ b/lib/schnittstellen/klamm.php @@ -0,0 +1,138 @@ +<? +/* +Transaktionsschnittstelle für Projekt Seth +Betreibersystem Klamm ExportForce² +Copyright bei Detlef Tiegel +http://www.projekt-seth.de +*/ + +// Klamm ExportForce² Fehlercodes +$trans_error[1001] = "Alles OK"; +$trans_error[1002] = "EF Account existiert nicht"; +$trans_error[1003] = "EF Passwort falsch"; +$trans_error[1004] = "Nicht genug freie EF Anfragen"; +$trans_error[1005] = "EF Kennung existiert nicht"; +$trans_error[1006] = "klammUser existiert nicht"; +$trans_error[1007] = "klammUser ist gesperrt"; +$trans_error[1008] = "klammUser hat zu wenig Lose"; +$trans_error[1009] = "Lose Passwort falsch"; +$trans_error[1010] = "Zu wenig Lose auf EF Account"; +$trans_error[1011] = "Anzahl nicht zulässig"; +$trans_error[1012] = "Betreff nicht zulässig"; +$trans_error[1013] = "Inout Parameter nicht zulässig"; +$trans_error[1014] = "Limit Parameter nicht zulässig"; +$trans_error[1015] = "ab_tid Parameter nicht zulässig"; +$trans_error[1016] = "ab_time Parameter nicht zulässig"; +$trans_error[1017] = "type Parameter nicht zulässig"; +$trans_error[1018] = "Statistik Passwort falsch"; +$trans_error[1019] = "Tresor Parameter nicht zulässig"; +$trans_error[1020] = "Empfänger EF existiert nicht"; +$trans_error[1021] = "Empfänger EF noch nicht akiviert"; +$trans_error[1022] = "Überweisung an eigenen EF nicht möglich"; +$trans_error[1023] = "target Parameter nicht zulässig"; +$trans_error[1098] = "EF Account ist gesperrt"; +$trans_error[1099] = "Unbekannter Fehler"; + +// ExportForce² -> Klamm.de +function auszahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code) { +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$trans_betreff = urlencode($trans_betreff); +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +$trans_menge = urlencode($trans_menge); +// SecVMS change end + +$returned=''; +$ret=@file("http://www.klamm.de/engine/lose/send.php?ef_id=".$betreiber_id."&ef_pw=".$betreiber_pw."&k_id=".$kunden_id."&s=".$trans_betreff."&n=".$trans_menge."&k=".$betreiber_kennung."&l_pw=".$kunden_pw."&code=".$trans_code."","r"); +for($i=0;$i<count($ret);$i++) { + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +// Klamm.de -> ExportForce² +function einzahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code){ +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$trans_betreff = urlencode($trans_betreff); +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +$trans_menge = urlencode($trans_menge); +// SecVMS change end + +$returned=''; +$ret=file("http://www.klamm.de/engine/lose/get.php?ef_id=".$betreiber_id."&ef_pw=".$betreiber_pw."&k_id=".$kunden_id."&s=".$trans_betreff."&n=".$trans_menge."&k=".$betreiber_kennung."&l_pw=".$kunden_pw."&code=".$trans_code."","r"); +for($i=0;$i<count($ret);$i++) { + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +// Klammlose-Kontostand +function usercheck ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error,$user_saldo; + +// SecVMS change begin +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +// SecVMS change end + +$returned=''; +$ret=file("http://www.klamm.de/engine/lose/saldo.php?ef_id=".$betreiber_id."&ef_pw=".$betreiber_pw."&k_id=".$kunden_id."&l_pw=".$kunden_pw."","r"); +for($i=0;$i<count($ret);$i++){ + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +if ($error != "true") $user_saldo = $trans_check[1]; +return $error; +return $trans_ausgabe; +return $user_saldo; +} + +// Usercheck +function uservalidate ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error; + +// SecVMS change begin +$kunden_id = urlencode($kunden_id); +$kunden_pw = urlencode($kunden_pw); +// SecVMS change end + +$returned=''; +$ret=file("http://www.klamm.de/engine/lose/validate.php?ef_id=".$betreiber_id."&ef_pw=".$betreiber_pw."&k_id=".$kunden_id."&l_pw=".$kunden_pw."","r"); +for($i=0;$i<count($ret);$i++){ + $returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1001") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} + +return $error; +return $trans_ausgabe; +} +?> \ No newline at end of file diff --git a/lib/schnittstellen/nickey.php b/lib/schnittstellen/nickey.php new file mode 100644 index 0000000..d833fa1 --- /dev/null +++ b/lib/schnittstellen/nickey.php @@ -0,0 +1,95 @@ +<? +/* +Transaktionsschnittstelle für Projekt Seth / VMS +Betreibersystem Nickeyforce +Copyright 2005 Michael Rosenberger +http://www.nickeyforce.de info@nickeyforce.de +*/ +// Nickeyforce Kennung +// Bitte beim Validate die Kennung eintragen !!!! + +// Nickeyforce Fehlercodes +$trans_error[1000] = "Alles OK"; +$trans_error[1001] = "ForceID / Passwortkombination stimmen nicht"; +$trans_error[1002] = "Kennung existiert nicht"; +$trans_error[1003] = "User existiert nicht"; +$trans_error[1004] = "nickeyPasswort falsch"; +$trans_error[1005] = "User gesperrt"; +$trans_error[1006] = "Forcekonto gesperrt"; +$trans_error[1007] = "nicht genügend nickeys auf dem Userkonto"; +$trans_error[1008] = "nicht genügend nickeys auf dem Forcekonto"; +$trans_error[1020] = "Parameter fehlt"; +$trans_error[1021] = "Falsche Anzahl (mindestens 10 nickeys je Transaktion)"; +$trans_error[1022] = "Forcekonto noch nicht aktiviert"; +$trans_error[1030] = "Keine freien Zugriffe (500/Tag) bzw. gekaufte Zugriffe uebrig"; +$trans_error[1031] = "Es sind nur 100000 Zugriffe/Tag erlaubt"; +$trans_error[1040] = "Keine gesperrten User im System"; +$trans_error[1051] = "SMS System nicht aktiviert für den Betreiber"; +$trans_error[1052] = "SMS Guthaben leer/aufgebraucht. Bitte aufladen"; +$trans_error[1053] = "Empfängernummer falsches Format"; +$trans_error[1054] = "SMS konnte nicht gesendet werden"; +$trans_error[1055] = "SMS Text länger als 160 Zeichen, bitte begrenzen"; +$trans_error[1080] = "Keine SMS im Ticker vorhanden"; + + + +//Buchung nickeyFORCE -> nickeyBANK +function auszahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code) { +global $error,$trans_ausgabe,$trans_error; +$trans_betreff = ereg_replace(" ", "%20", $trans_betreff); +$returned=''; +$ret=@file("http://www.nickeyforce.de/api/send2.php?api_id=".$betreiber_id."&api_passwort=".$betreiber_pw."&user=".$kunden_id."&betreff=".$trans_betreff."&anzahl=".$trans_menge."&api_kennung=".$betreiber_kennung."&code=".$trans_code."","r"); +for($i=0;$i<count($ret);$i++) { +$returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1000") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + +//Buchung nickeyBANK -> nickeyFORCE +function einzahlen ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw,$betreiber_kennung,$trans_menge,$trans_betreff,$trans_code){ +global $error,$trans_ausgabe,$trans_error; +$trans_betreff = ereg_replace(" ", "%20", $trans_betreff); +$returned=''; +$ret=file("http://www.nickeyforce.de/api/get2.php?api_id=".$betreiber_id."&api_passwort=".$betreiber_pw."&betreff=".$trans_betreff."&api_kennung=".$betreiber_kennung."&user=".$kunden_id."&user_passwort=".$kunden_pw."&anzahl=".$trans_menge."&code=".$trans_code."","r"); +for($i=0;$i<count($ret);$i++) { +$returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1000") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} +return $error; +return $trans_ausgabe; +} + + + +// Usercheck nickeyFORCE -> nickeyBANK +// Bitte hier Kennung eintragen !!!! +function uservalidate ($betreiber_id,$betreiber_pw,$kunden_id,$kunden_pw){ +global $error,$trans_ausgabe,$trans_error; +$returned=''; +$ret=file("http://www.nickeyforce.de/api/validate.php?api_id=".$betreiber_id."&api_passwort=".$betreiber_pw."&user=".$kunden_id."&user_passwort=".$kunden_pw."&api_kennung=XXXXX","r"); +for($i=0;$i<count($ret);$i++){ +$returned.=$ret[$i]; +} +$trans_check = split("[|]",$returned,7); +if ($trans_check[0] != "1000") { +$trans_ausgabe = $trans_error[$trans_check[0]]; +if ($trans_ausgabe == "") $trans_ausgabe = $trans_error[1099]; +$error = "true"; +} + +return $error; +return $trans_ausgabe; +} +?> \ No newline at end of file diff --git a/lib/session.lib.php b/lib/session.lib.php new file mode 100644 index 0000000..00f6028 --- /dev/null +++ b/lib/session.lib.php @@ -0,0 +1,121 @@ +<? +/* +Datei : session.lib.php +Änderungen in dieser Datei nur dann vornehmen wenn Sie wissen was Sie tun! +*/ +@session_start(); + +// Variabeln definieren +if (!isset($_SESSION['login'])) $_SESSION['login'] = ""; +if (!isset($_SESSION['werber'])) $_SESSION['werber'] = "0"; +if (!isset($_SESSION['uid'])) $_SESSION['uid'] = "0"; +if (!isset($_POST['nickname'])) $_POST['nickname'] = ""; +if (!isset($_POST['passwort'])) $_POST['passwort'] = ""; +if (!isset($_POST['checkid'])) $_POST['checkid'] = ""; +if (!isset($_POST['autologin'])) $_POST['autologin'] = ""; +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")); + +if ($pageconfig['wartung'] == 1 && $_SESSION['uid'] != $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"); + 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); + + // Wenn User noch nicht freigeschaltet! + if ($login_check['status'] == 0) { + $_SESSION['uid'] = ""; + $_SESSION['passwort'] = ""; + $_SESSION['login'] = ""; + $_GET['content'] = '/error/kein_zutritt'; + } + + // Wenn beim User alles O.K. ist! + 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"); + if ($_POST['autologin'] == 'true') { + setCookie('uid',$login_check['uid'],time()+86400*30); + setCookie('passwort',$login_check['passwort'],time()+86400*30); + setCookie('autologin','true',time()+86400*30); + } + $_SESSION['uid'] = $login_check['uid']; + $_SESSION['passwort'] = $login_check['passwort']; + $_SESSION['login'] = "true"; + header ("location: ".$domain); + die(); + } + + // Wenn User gesperrt wurde! + if ($login_check['status'] == 2) { + $_SESSION['uid'] = ""; + $_SESSION['passwort'] = ""; + $_SESSION['login'] = ""; + $_GET['content'] = '/error/user_gesperrt'; + } + + // Wenn es den User garnicht giebt + } else { + $_GET['content'] = '/error/kein_zutritt'; + } + +} 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); + 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"); + $_SESSION['uid'] = $login_check['uid']; + $_SESSION['passwort'] = $login_check['passwort']; + $_SESSION['login'] = "true"; + } + } +} + +// Logout +if ($_GET['logout'] == 'true') { + setCookie('uid','',time()-86400*30); + setCookie('passwort','',time()-86400*30); + setCookie('autologin','',time()-86400*30); + $_SESSION['uid'] = ""; + $_SESSION['passwort'] = ""; + $_SESSION['login'] = ""; + header ("location: ".$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"); +} +?> \ No newline at end of file diff --git a/lib/texte/agb.txt b/lib/texte/agb.txt new file mode 100644 index 0000000..b19bd32 --- /dev/null +++ b/lib/texte/agb.txt @@ -0,0 +1 @@ +agb \ No newline at end of file diff --git a/lib/texte/aktivralley.txt b/lib/texte/aktivralley.txt new file mode 100644 index 0000000..b91361a --- /dev/null +++ b/lib/texte/aktivralley.txt @@ -0,0 +1,7 @@ +Aktivralley + +Pro Funcoin 1 Aktivpunkt bei Klick4Funcoins + +Jokerslot pro Spiel 100AP +Atomic2 pro Spiel 100 AP +Atomic1 pro Spiel 10 AP \ No newline at end of file diff --git a/lib/texte/alt_bettelseitenpopup.txt b/lib/texte/alt_bettelseitenpopup.txt new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/lib/texte/alt_bettelseitenpopup.txt @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/lib/texte/alt_headerbanner.txt b/lib/texte/alt_headerbanner.txt new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/lib/texte/alt_headerbanner.txt @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/lib/texte/alt_startseitenpopup.txt b/lib/texte/alt_startseitenpopup.txt new file mode 100644 index 0000000..ab9d6fa --- /dev/null +++ b/lib/texte/alt_startseitenpopup.txt @@ -0,0 +1 @@ +<!-- Nothing --> \ No newline at end of file diff --git a/lib/texte/bettelwerbung.txt b/lib/texte/bettelwerbung.txt new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/lib/texte/bettelwerbung.txt @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/lib/texte/box1.txt b/lib/texte/box1.txt new file mode 100644 index 0000000..8853508 --- /dev/null +++ b/lib/texte/box1.txt @@ -0,0 +1 @@ +555 \ No newline at end of file diff --git a/lib/texte/box2.txt b/lib/texte/box2.txt new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/lib/texte/box2.txt @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/lib/texte/faq.txt b/lib/texte/faq.txt new file mode 100644 index 0000000..32914fe --- /dev/null +++ b/lib/texte/faq.txt @@ -0,0 +1 @@ +FAQ \ No newline at end of file diff --git a/lib/texte/klickralley.txt b/lib/texte/klickralley.txt new file mode 100644 index 0000000..e69de29 diff --git a/lib/texte/refralley.txt b/lib/texte/refralley.txt new file mode 100644 index 0000000..3c1e1bc --- /dev/null +++ b/lib/texte/refralley.txt @@ -0,0 +1 @@ +Refralley \ No newline at end of file diff --git a/lib/texte/startwerbung.txt b/lib/texte/startwerbung.txt new file mode 100644 index 0000000..a579d79 --- /dev/null +++ b/lib/texte/startwerbung.txt @@ -0,0 +1,4 @@ +<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/texte/wartung.txt b/lib/texte/wartung.txt new file mode 100644 index 0000000..dae4f3a --- /dev/null +++ b/lib/texte/wartung.txt @@ -0,0 +1 @@ +MFG \ No newline at end of file diff --git a/lib/weristonline.php b/lib/weristonline.php new file mode 100644 index 0000000..04cefc3 --- /dev/null +++ b/lib/weristonline.php @@ -0,0 +1,21 @@ +<? +$zeit = (5 * 60); // Sekunden seit der letzten Aktivität +$np = $domain.'/?content=/nickpage&nick='; // Nickpagelink + +// verhindern, dass die Datei direkt aufgerufen wird +if (!function_exists ("db_query")) 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)); + +if (mysql_num_rows ($sql) == 0) 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>'; + + if ($nr < mysql_num_rows ($sql)) echo ', '; + $nr++; + } +} +?> \ No newline at end of file diff --git a/module/testmodul/admin.php b/module/testmodul/admin.php new file mode 100644 index 0000000..d4b7ee7 --- /dev/null +++ b/module/testmodul/admin.php @@ -0,0 +1,16 @@ +<? // Sicherheits-Check +moduladmin_access (); ?> + +<? head ('Administration Testmodul'); ?> +Dies hier ist eine Testseite vom 1. Modul des Modulsystems.<br /> +<br /> +Alle Autoreninformationen stehen in einer .inf-Datei (<i>pref.inf</i>) und werden auf einer speziellen Seite angezeigt.<br /> +Auf die Seite kommt man durch einen Klick auf den im Footer stehenden Link <i>"Addoninformationen"</i>.<br /> +<br /> +Der Aufruf vom Modul erfolgt wie folgt:<br /> +<?=$domain;?>/index.php?content=/module&mod=<?=$_GET['mod'];?><br /> +<br /> +<br /> +<br /> +MfG, SebbyPHM +<? foot (); ?> \ No newline at end of file diff --git a/module/testmodul/files/mysql.sql b/module/testmodul/files/mysql.sql new file mode 100644 index 0000000..2070b65 --- /dev/null +++ b/module/testmodul/files/mysql.sql @@ -0,0 +1 @@ +// Test \ No newline at end of file diff --git a/module/testmodul/icon.png b/module/testmodul/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9be2ef4d2fe5b661a459089da1f1e6c0a0a535 GIT binary patch literal 2162 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 literal 0 HcmV?d00001 diff --git a/module/testmodul/module.php b/module/testmodul/module.php new file mode 100644 index 0000000..c5803d3 --- /dev/null +++ b/module/testmodul/module.php @@ -0,0 +1,19 @@ +<? // Sicherheits-Check +modul_access (); ?> + +<? head ('Testseite'); ?> +Dies hier ist eine Testseite vom 1. Modul des Modulsystems.<br /> +<br /> +Alle Autoreninformationen stehen in einer .inf-Datei (<i>pref.inf</i>) und werden auf einer speziellen Seite angezeigt.<br /> +Auf die Seite kommt man durch einen Klick auf den im Footer stehenden Link <i>"Addoninformationen"</i>.<br /> +<br /> +Der Aufruf vom Modul erfolgt wie folgt:<br /> +http://www.DeineSeite.de/index.php?content=/module&mod=[Modulname]<br /> +<br /> +<b>Optionale Parameter:</b><br /> +open: Greift auf eine andere Datei als auf die module.php zu (./module/[Modulname]/[open].php);<i></i><br /> +<br /> +<br /> +<br /> +MfG, SebbyPHM +<? foot (); ?> \ No newline at end of file diff --git a/module/testmodul/pref.ini b/module/testmodul/pref.ini new file mode 100644 index 0000000..8427357 --- /dev/null +++ b/module/testmodul/pref.ini @@ -0,0 +1,20 @@ +[modul] +name = Testmodul +version = 1.0 +datum = 05.08.2007 +update = +verkauft = + +[autor] +name = Sebastian Hoinkes +strasse = Am Thie 1 +ort = Hessisch Oldendorf +plz = 31840 + +[kontakt] +webseite = http://www.totaltoll.de +email = web@totaltoll.de +icq = 270528839 +msn = +telefon = +telefax = \ No newline at end of file diff --git a/pcheck.php b/pcheck.php new file mode 100644 index 0000000..472916c --- /dev/null +++ b/pcheck.php @@ -0,0 +1,71 @@ +<? +@require_once ('lib/functions.lib.php'); +@db_connect(); +if (!isset($headmsg)) $headmsg = ""; +if (!isset($wait)) $wait = ""; +if (!isset($_GET['auszahlen'])) $_GET['auszahlen'] = "false"; + +$_GET['uid'] = (int)$_GET['uid']; +$_GET['tan'] = addslashes ($_GET['tan']); + +$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']." 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']); + aktivralley ($mail['verdienst'],$mail['uid']); + bilanz(0,$forced['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"); + } + +} + + +?> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> +<?if ($wait) echo $wait;?> +<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> </td> +</tr> +</table> +</body> +</html> +<?db_close();?> \ No newline at end of file diff --git a/pclick.php b/pclick.php new file mode 100644 index 0000000..e888cae --- /dev/null +++ b/pclick.php @@ -0,0 +1,24 @@ +<? +@require_once ('lib/functions.lib.php'); +@db_connect(); + +$_GET['uid'] = (int)$_GET['uid']; +$_GET['tan'] = addslashes ($_GET['tan']); + +$mail = mysql_fetch_array(db_query("SELECT `ziel` FROM ".$db_prefix."_paidmails_versendet WHERE tan='".$_GET['tan']."' LIMIT 1")); +?> +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> + <title>Forcedklick by <?=$seitenname;?></title> +</head> + +<frameset rows="15,*" 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> +<body> +</body> +</html> +<?db_close();?> + diff --git a/topframe_forced.php b/topframe_forced.php new file mode 100644 index 0000000..da080cf --- /dev/null +++ b/topframe_forced.php @@ -0,0 +1,87 @@ +<? +@require_once ('lib/functions.lib.php'); +@require_once ('lib/session.lib.php'); + +// Variabeln definieren +if (!isset($headmsg)) $headmsg = ""; +if (!isset($puk)) $puk = ""; +if (!isset($force_error)) $force_error = ""; +if (!isset($wartezeit)) $wartezeit = ""; +if (!isset($_GET['art'])) $_GET['art'] = ""; +if (!isset($_GET['puk'])) $_GET['puk'] = ""; +if (!isset($_GET['auszahlen'])) $_GET['auszahlen'] = "false"; +if (!isset($_SESSION['uid'])) $_SESSION['uid'] = ""; +if (!isset($forced['ziel'])) $forced['ziel'] = ""; +if (!isset($forced['aufendhalt'])) $forced['aufendhalt'] = ""; +if (!isset($forced['tan'])) $forced['tan'] = ""; +$_GET['tan'] = addslashes ($_GET['tan']); + +// Nur weiter wenn eingeloggt +if ($_SESSION['login'] != 'true' || $_SESSION['uid'] <= 0){ +die('Bitte einloggen!'); +} +@db_connect(); + +// Werbedaten auslesen! +$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."')) + 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"); + + +// Reloadprüfen +if (mysql_num_rows($kamp)) { + $forced = mysql_fetch_assoc($kamp); + $wartezeit = $forced['aufendhalt']; + $headmsg = 'Vergütung in '.$forced['aufendhalt'].' Sek.!'; + $puk = md5($_SESSION['uid'].$forced['aufendhalt'].date("d.m.Y",time()).$percode); +} else { + $headmsg = 'Banner noch im Reload!'; + $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)){ + + // Um einen mysql_query zu sparen wurde hier auf kontobuchung() verzichtet... + 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']); + aktivralley ($forced['verdienst'],$_SESSION['uid']); + klickralley (); + 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']."'"); + $headmsg = $forced['verdienst'].' '.$waehrung.' erhalten!'; + +} else { + if ($_GET['auszahlen'] == 'true' && $force_error != 'true') $headmsg = 'Pin abgelaufen!'; +} +@db_close(); +?> + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> +<link rel="stylesheet" href="/css/bframe.css" type="text/css"> +<? +if ($wartezeit>=0 && $_GET['auszahlen'] != 'true') { +echo ' +<meta http-equiv="refresh" content="'.$wartezeit.';url=topframe_forced.php?art='.$_GET['art'].'&auszahlen=true&tan='.$forced['tan'].'&puk='.$puk.'"> +'; +} +?> +</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> </td> +</tr> +</table> +</body> +</html> diff --git a/vms.sql b/vms.sql new file mode 100644 index 0000000..8d28691 --- /dev/null +++ b/vms.sql @@ -0,0 +1,271 @@ +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; + + +CREATE TABLE IF NOT EXISTS `vms_aktivierungen` ( + `uid` int(7) NOT NULL default '0', + `ak` varchar(32) NOT NULL default '', + KEY `aktivierungs_code` (`ak`) +) ENGINE=MyISAM; + + + +CREATE TABLE IF NOT EXISTS `vms_aktivralley` ( + `uid` int(7) NOT NULL default '0', + `punkte` double(100,2) NOT NULL default '0.00', + `ausgezahlt` int(11) NOT NULL default '0', + PRIMARY KEY (`uid`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_bilanz` ( + `date` int(10) NOT NULL, + `ein` double(15,2) NOT NULL, + `aus` double(15,2) NOT NULL, + PRIMARY KEY (`date`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_buchungen` ( + `uid` int(7) NOT NULL default '0', + `buchungszeit` int(10) NOT NULL default '0', + `buchungs_id` varchar(14) NOT NULL default '', + `buchungsmenge` double(10,2) NOT NULL default '0.00', + `verwendungszweck` varchar(40) NOT NULL default '', + KEY `user` (`uid`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_crons` ( + `id` int(11) NOT NULL, + `cron` varchar(50) NOT NULL default '', + `laufzeit` int(11) NOT NULL default '0', + `datei` varchar(250) NOT NULL default '', + `bezeichnung` varchar(250) NOT NULL default '', + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + + +INSERT INTO `vms_crons` (`id`, `cron`, `laufzeit`, `datei`, `bezeichnung`) VALUES +(1, 'int_forcedbanner', 1184066684, 'crons/fuco-ads.int.php', 'Forcedbanner FuCo-Ads'), +(2, 'int_forcedbanner', 1187204732, 'crons/webmasterlose.int.php', 'Forcedbanner Webmasterlose'), +(3, 'int_forcedbanner', 1183938260, 'crons/hp-lose.int.php', 'Forcedbanner HP-Lose'), +(4, 'int_forcedbanner', 1106400662, 'crons/lose-ads.int.php', 'Forcedbanner Lose-Ads'), +(5, 'int_forcedbanner', 1106400676, 'crons/losebox.int.php', 'Forcedbanner Losebox'), +(6, 'ext_cron', 1105221240, 'crons/refzahlungen.knt.php', 'Ext. Refzahlungen'); + + +CREATE TABLE IF NOT EXISTS `vms_emaildaten` ( + `uid` int(7) NOT NULL default '0', + `emailadresse` varchar(100) NOT NULL default '', + `freigabe_fuer` tinyint(1) NOT NULL default '0', + PRIMARY KEY (`uid`), + KEY `freigabe_fuer` (`freigabe_fuer`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_gebuchte_werbung` ( + `uid` int(7) NOT NULL default '0', + `tan` varchar(32) NOT NULL default '', + `kid` int(11) NOT NULL default '0', + `ziel` varchar(250) NOT NULL default '', + `banner` varchar(250) NOT NULL default '', + `verdienst` double(10,2) NOT NULL default '0.00', + `preis` double(10,2) NOT NULL default '0.00', + `aufendhalt` int(11) NOT NULL default '0', + `menge` int(11) NOT NULL default '0', + `reload` int(11) NOT NULL default '0', + `sponsor` varchar(25) NOT NULL default '', + `werbeart` varchar(50) NOT NULL default '', + `status` tinyint(1) NOT NULL default '1', + KEY `klick4` (`werbeart`,`menge`,`status`,`verdienst`,`sponsor`), + KEY `crons` (`sponsor`,`werbeart`,`status`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_interface` ( + `interface` varchar(50) NOT NULL default '', + `betreiber` int(7) NOT NULL default '0', + `seite` int(7) NOT NULL default '0', + `pass` varchar(50) NOT NULL default '', + `eigenverdienst` int(2) NOT NULL default '0', + `mindestverguetung` double(8,6) NOT NULL default '0.000000', + `restklicks` int(4) NOT NULL default '0', + `umrechnung` double(10,4) NOT NULL default '0.0000', + `aufendhalt` int(3) NOT NULL default '0', + `surfview` double(10,2) NOT NULL default '0.00', + `surfklick` double(10,2) NOT NULL default '0.00', + KEY `interface` (`interface`) +) ENGINE=MyISAM; + +INSERT INTO `vms_interface` (`interface`, `betreiber`, `seite`, `pass`, `eigenverdienst`, `mindestverguetung`, `restklicks`, `umrechnung`, `aufendhalt`, `surfview`, `surfklick`) VALUES +('fuco-ads', 0, 0, '0', 0, 0.000000, 0, 0.0000, 0, 0.00, 0.00), +('webmasterlose', 0, 0, '0', 0, 0.000000, 50, 0.0000, 0, 0.00, 0.00), +('lose-ads', 0, 0, '0', 0, 0.000000, 0, 0.0000, 0, 0.00, 0.00), +('losebox', 0, 0, '0', 0, 0.000000, 0, 0.0000, 0, 0.00, 0.00), +('hp-lose', 0, 0, '0', 0, 0.000000, 0, 0.0000, 0, 0.00, 0.00); + + +CREATE TABLE IF NOT EXISTS `vms_klickralley` ( + `uid` int(7) NOT NULL default '0', + `klicks` int(11) NOT NULL default '0', + `ausgezahlt` int(11) NOT NULL default '0', + PRIMARY KEY (`uid`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_kontodaten` ( + `uid` int(7) NOT NULL default '0', + `passwort` varchar(32) NOT NULL default '', + `status` tinyint(1) NOT NULL default '0', + `hinweis` longtext NOT NULL, + `kontostand` double(100,2) NOT NULL default '0.00', + `login_ip` varchar(15) NOT NULL default '', + `loginzeit` int(11) NOT NULL default '0', + `last_active` int(11) NOT NULL default '0', + `klicks` bigint(20) NOT NULL default '0', + `kv` double(100,2) NOT NULL default '0.00', + `angebettelt` bigint(20) NOT NULL default '0', + `bv` double(100,2) NOT NULL default '0.00', + PRIMARY KEY (`uid`) +) ENGINE=MyISAM; + +CREATE TABLE IF NOT EXISTS `vms_news` ( + `id` int(11) NOT NULL, + `zeit` int(11) NOT NULL default '0', + `titel` varchar(60) NOT NULL default '', + `news` longtext NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +CREATE TABLE IF NOT EXISTS `vms_paidmails_empfaenger` ( + `uid` int(7) NOT NULL default '0', + `gueltig` int(11) NOT NULL default '0', + `tan` varchar(14) NOT NULL default '', + `status` int(11) NOT NULL default '0', + `aufendhalt` int(11) NOT NULL default '0', + `start` int(11) NOT NULL default '0', + UNIQUE KEY `primary_ersatz` (`uid`,`tan`) +) ENGINE=MyISAM; + +CREATE TABLE IF NOT EXISTS `vms_paidmails_versendet` ( + `tan` varchar(14) NOT NULL default '', + `menge` int(11) NOT NULL default '0', + `bestaedigt` int(11) NOT NULL default '0', + `verdienst` double(10,2) NOT NULL default '0.00', + `ziel` varchar(250) NOT NULL default '', + `beschreibung` varchar(50) NOT NULL default '', + `mailtext` longtext NOT NULL, + `aufendhalt` int(11) NOT NULL default '0', + `gesendet` int(11) NOT NULL default '0', + `gueltig` int(11) NOT NULL default '0', + UNIQUE KEY `primary_ersatz` (`tan`) +) ENGINE=MyISAM; + +CREATE TABLE IF NOT EXISTS `vms_ralleydaten` ( + `ralley` varchar(50) NOT NULL default '', + `start` int(11) NOT NULL default '0', + `ende` int(11) NOT NULL default '0', + `art` varchar(50) NOT NULL default '', + `pro` double(10,2) NOT NULL default '0.00', + `jackpot` double(10,2) NOT NULL default '0.00', + `plaetze` int(2) NOT NULL default '0', + `p1` double(10,2) NOT NULL default '0.00', + `p2` double(10,2) NOT NULL default '0.00', + `p3` double(10,2) NOT NULL default '0.00', + `p4` double(10,2) NOT NULL default '0.00', + `p5` double(10,2) NOT NULL default '0.00', + `p6` double(10,2) NOT NULL default '0.00', + `p7` double(10,2) NOT NULL default '0.00', + `p8` double(10,2) NOT NULL default '0.00', + `p9` double(10,2) NOT NULL default '0.00', + `p10` double(10,2) NOT NULL default '0.00', + PRIMARY KEY (`ralley`) +) ENGINE=MyISAM; + +INSERT INTO `vms_ralleydaten` (`ralley`, `start`, `ende`, `art`, `pro`, `jackpot`, `plaetze`, `p1`, `p2`, `p3`, `p4`, `p5`, `p6`, `p7`, `p8`, `p9`, `p10`) VALUES +('refralley', 1135689000, 1293455400, 'statisch', 0.00, 0.00, 3, 150.00, 500.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00), +('aktivralley', 1112047200, 1112292000, 'statisch', 6.00, 0.00, 5, 1000.00, 750.00, 500.00, 250.00, 100.00, 0.00, 0.00, 0.00, 0.00, 0.00), +('klickralley', 1104534000, 1230764400, 'dynamisch', 3.00, 0.00, 2, 1000000.00, 500.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00); + + +CREATE TABLE IF NOT EXISTS `vms_reloads` ( + `ip` varchar(15) NOT NULL default '', + `uid` int(7) NOT NULL default '0', + `tan` varchar(32) NOT NULL default '', + `bis` int(10) NOT NULL default '0', + KEY `klick4` (`tan`,`uid`,`ip`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_schnittstelle` ( + `betreiber_id` int(8) NOT NULL default '0', + `betreiber_passwort` varchar(50) NOT NULL default '', + `betreiber_kennung` int(8) NOT NULL default '0', + `schnittstelle` varchar(20) NOT NULL default '', + `einzahltext` varchar(40) NOT NULL default '', + `auszahltext` varchar(40) NOT NULL default '', + `einzahlsumme` int(11) NOT NULL default '0', + `auszahlsumme` int(11) NOT NULL default '0', + `anfragen_tag` int(11) NOT NULL default '0', + `anfragen_user` int(11) NOT NULL default '0', + PRIMARY KEY (`schnittstelle`) +) ENGINE=MyISAM; + +INSERT INTO `vms_schnittstelle` (`betreiber_id`, `betreiber_passwort`, `betreiber_kennung`, `schnittstelle`, `einzahltext`, `auszahltext`, `einzahlsumme`, `auszahlsumme`, `anfragen_tag`, `anfragen_user`) VALUES +(0, '0', 0, 'klamm', 'Einzahlung', 'Auszahlung', 0, 0, 0, 0); + +CREATE TABLE IF NOT EXISTS `vms_schnittstelle_anfragen` ( + `zeit` int(11) NOT NULL default '0', + `uid` int(7) NOT NULL default '0', + KEY `uid` (`uid`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_seitenkonfig` ( + `wartung` int(1) NOT NULL default '0', + `einzahlgrenze` int(11) NOT NULL default '0', + `re1` double(10,2) NOT NULL default '0.00', + `re2` double(10,2) NOT NULL default '0.00', + `re3` double(10,2) NOT NULL default '0.00', + `min_betteln` double(10,2) NOT NULL default '0.00', + `max_betteln` double(10,2) NOT NULL default '0.00', + `reload_betteln` int(11) NOT NULL default '0', + `denied_domains` text NOT NULL, + `admin_name` VARCHAR( 255 ) NOT NULL, + `admin_pass` VARCHAR( 255 ) NOT NULL +) ENGINE=MyISAM; + +INSERT INTO `vms_seitenkonfig` (`wartung`, `einzahlgrenze`, `re1`, `re2`, `re3`, `min_betteln`, `max_betteln`, `reload_betteln`, `denied_domains`) VALUES +(0, 100000, 8.00, 3.00, 1.00, 50.00, 250.00, 0, '@sofort-mail.de;@trash-mail.de;@mailinator.com;@spamgourmet.com;@spammotel.com;@centermail.com;@discardmail.com;@sneakemail.com;@netzidiot.de;@myTrashMail.com;@wegwerfadresse.de;@nervmich.net;@nervtmich.net;@mailinator.net;@klassmaster.com;@mailin8r.com;@sogetthis.com;@mailinator2.com'); + +CREATE TABLE IF NOT EXISTS `vms_userblacklist` ( + `uid` int(7) NOT NULL default '0', + `zeit` bigint(11) NOT NULL default '0', + PRIMARY KEY (`uid`) +) ENGINE=MyISAM; + +CREATE TABLE IF NOT EXISTS `vms_userdaten` ( + `uid` int(7) NOT NULL default '0', + `nickname` varchar(255) NOT NULL default '', + `vorname` varchar(50) NOT NULL default '', + `nachname` varchar(50) NOT NULL default '', + `angemeldet_seit` int(10) NOT NULL default '0', + `max_forced` int(11) NOT NULL default '5', + `notizen` text NOT NULL, + PRIMARY KEY (`uid`) +) ENGINE=MyISAM; + + +CREATE TABLE IF NOT EXISTS `vms_werberdaten` ( + `uid` int(7) NOT NULL default '0', + `werber` int(7) NOT NULL default '0', + `umsatz` double(10,2) NOT NULL default '0.00', + `zuordnungszeit` int(10) NOT NULL default '0', + `reset` double(10,2) NOT NULL default '0.00', + `resetzeit` int(11) NOT NULL default '0', + `gesamt` double(10,2) NOT NULL default '0.00', + `refback` int(3) NOT NULL default '0', + `aktivzeit` int(11) NOT NULL default '0', + PRIMARY KEY (`uid`) +) ENGINE=MyISAM; + diff --git a/wartung.php b/wartung.php new file mode 100644 index 0000000..17f1184 --- /dev/null +++ b/wartung.php @@ -0,0 +1,42 @@ +<? +@require_once ('lib/layout.lib.php'); +?> +<html> +<head> +<title>..:: Wartungsmodus::..</title> +<meta name="Author" content=""> +<meta name="Publisher" content=""> +<meta name="Copyright" content=""> +<meta name="Keywords" content=""> +<meta name="Description" content=""> +<meta name="Page-topic" content=""> +<meta name="Audience" content=""> +<meta name="Content-language" content="DE"> +<meta name="Page-type" content="Nicht Gewinnorientiert"> +<meta name="Robots" content="INDEX,FOLLOW"> +<link rel="stylesheet" href="/css/main.css" type="text/css"> +</head> +<body topmargin="0" leftmargin="0"> + + +<? +// Variabeln +$filename = 'lib/texte/wartung.txt'; + +// Datei auslesen +$fp = fopen ($filename, "r"); +$inhalt = fread ($fp, filesize ($filename)); +fclose ($fp); +$inhalt = str_replace('\\', '', $inhalt); +?> +<table width="500" align="center" height="100%"> +<tr> +<td height="100%" align="center" valign="middle"> +<? +head("Diese Seite ist im Wartungsmodus"); +echo nl2br($inhalt); +foot(); +?> +</td> +</tr> +</table> \ No newline at end of file -- GitLab