Nach längerer Zeit release ich auch mal wieder was!
Ist an sich ein ganz nützliches Tool, vorallem für Serveradmins, um die
Spenden zu bearbeiten.
Features:
- Prüft ob spenden.php verändert wurde(kleines Extra)
- Login+User System
- Coins werden automatisch mit nur einem Klick gegeben, der Betrag an Coins steht für den Betrag an Euro automatisch im Textfeld, aber ist natürlich auch änderbar
- Nicht funkionierende PSCs können mit nur einem Klick gelöscht werden
- Bearbeitete PSCs werden automatisch gelöscht
- PSC-Code wird automatisch in Format XXXX-XXXX-XXXX-XXXX umgewandelt(das erleichtert die Eingabe erheblich!)
Das Tool ist vorallem aus Langeweile entstanden, und da ich es selber momentan nicht brauche, jedoch nicht möchte, dass die Arbeit umsonst ist, veröffentliche ich es hier mal
Feedback ist erwünscht, das Script war eigentlich nur eine kleine Übung um mal wieder ein bisschen in PHP reinzukommen.
Variablen müssen nur im Script geändert werden, aber ich denke das kann jeder anhand der Kommentare selbst machen.
Kleine Anmerkung: Mein System benutzt 2 Unterschiedliche MySQL-Server, einen für die PSCs und den ganz normalen Game-Server mit den Accounts. Ist sicherer.
So genug gefaselt(und danke wer bis hierher gelesen hat):
coins.php
PHP Code:
<?PHP
session_start();
//Vars
#PSCs
$host0 = ""; //Host
$user0 = ""; //User
$pw0 = ""; //Password
$db0 = ""; //Databasename
#Accounts
$host1 = ""; //Game Host
$user1 = ""; //Game User
$pw1 = ""; //Password for "Game Host"
$db1 = "account"; //Database in which $.account is(usually account.account) ->no need to change usually
#User
$user=array();
$pass=array();
$user[]="root"; //User 1
$pass[]="daroo"; //Password for "User 1"
/*Shema to add new users:
$user[]="username";
$pass[]="password";
The key should be kept dynamic!*/
#MD5
$nHash="0ca7d7315acbf69122d0139038b29bdc"; //Hash of the file "spenden.php"(usually in ./pages)
$aHash=md5_file("../home/pages/spenden.php"); //Path to "spenden.php"
?>
<html>
<head>
<!-- SCRIPT BY DAROO -->
<!-- (c)2012 -->
<title>Coin Administrationpanel by Daroo</title>
</head>
<body>
<h2>Coin Administrationpanel by Daroo</h2><br/>
<?PHP
//Check active sessions
if(isset($_SESSION['user']) OR isset($_SESSION['password']) OR (isset($_SESSION['login']) AND $_SESSION['login']==TRUE))
{
foreach($user as $key => $value)
{
if($_SESSION['user']==$value)
{
if($_SESSION['password']==$pass[$key])
{
$stat0=TRUE;
}
}
}
if(!$stat0)
{
unset($_SESSION['login']);
unset($_SESSION['user']);
unset($_SESSION['password']);
session_unset();
session_destroy();
die('Login ist abgelaufen. Bitte klicke <a href="coins.php">hier</a> um dich erneut anzumelden.');
}
}
//Page-Index
if(isset($_SESSION['login']) AND $_SESSION['login']==TRUE AND (!isset($_GET['act']) OR empty($_GET['act'])) )
{
//Connection
$mysql = array();
$mysql['host'] = $host0;
$mysql['user'] = $user0;
$mysql['pw'] = $pw0;
$mysql['db'] = $db0;
$suc_0 = @mysql_connect($mysql['host'], $mysql['user'], $mysql['pw']) OR $err="Could not connect to MySQL-Server on <b>'".$mysql['user']."'@'".$mysql['host']."'</b>: ".mysql_error();
if(!isset($err)){ $suc_1 = @mysql_select_db($mysql['db']) OR $err="Could not select database '".$mysql['db']."'."; }
if(isset($err))
{
echo $err."<br/>";
}
else
{
//Output
$hashResult = '<span style="color:';
$hashResult .= $aHash==$nHash ? 'green">OK' : 'red">ERROR';
$hashResult .= "</span>";
echo 'MD5 Hash: '.$aHash.' - ['.$hashResult.']<br/>';
echo 'Letzte Aktualisierung: '.date("d.m.Y H:i:s").'<br/><br/>';
echo '[<a href="coins.php?act=logout">Ausloggen</a>][<a href="coins.php?act=add">Benutzer hinzufügen</a>][<a href="coins.php">Aktualisieren</a>]<br/>';
echo "[STATUS] Connection to '".$mysql['host']."' successful.<br/>";
$cmd = "SELECT code, user, id, value, password, comment FROM psc_log";
$qry = mysql_query($cmd);
$rows = mysql_num_rows($qry);
#PSC-Coins Change
$value=array();
$value[10]=45000;
$value[25]=105000;
$value[50]=245000;
$value[100]=700000;
if($rows > 0)
{
echo "[QUERY] Row count: ".$rows.".<br/>";
echo '<table border=true>';
echo '<tr><th>Spender</th><th>PSC-Code</th><th>Wert</th><th>Password(optional)</th><th>Kommentar</th><th>Status</th><th></th></tr>';
while($obj = mysql_fetch_object($qry))
{
echo '<tr><td>'.$obj->user.'</td><td>'.wordwrap($obj->code, 4, "-", 1).'</td><td>'.$obj->value.'</td><td>'.$obj->password.'</td><td>'.$obj->comment.'</td><td><form method="POST" action="coins.php?act=give&id='.$obj->id.'&usr='.$obj->user.'"><input type="text" name="coins" size=5 value="'.$value[$obj->value].'"> Coins <input type="submit" name="submit" value="Auszahlen&Löschen"/></form></td><td><form method="post" action="coins.php?act=del&id='.$obj->id.'"><input type="submit" name="delsub" value="Löschen"/></form></td></tr>';
}
echo '</table>';
echo "[STATUS] Fetched objects from ".$db0.".psc_log.<br/>";
echo "[STATUS] Closed connection to '".$mysql['host']."'.<br/>";
}
else
{
echo "[QUERY] Row count: ".$rows."<br/>";
echo 'Es wurden keine Einträge gefunden.<br/>';
echo "[STATUS] Closed connection to '".$mysql['host']."'.<br/>";
}
mysql_close();
//End
}
}
elseif(isset($_SESSION['login']) AND $_SESSION['login']==TRUE AND isset($_GET['act']) AND $_GET['act']=="give")
{
if(isset($_POST['submit']) AND isset($_GET['id']) AND !empty($_GET['id']) AND isset($_POST['coins']) AND !empty($_POST['coins']) AND isset($_GET['usr']) AND !empty($_GET['usr']))
{
//Check
//Connection
$mysql = array();
$mysql['host'] = $host0;
$mysql['user'] = $user0;
$mysql['pw'] = $pw0;
$mysql['db'] = $db0;
$suc_0 = @mysql_connect($mysql['host'], $mysql['user'], $mysql['pw']) OR $err="Could not connect to MySQL-Server on '".$mysql['user']."@".$mysql['host']."'.";
if(!isset($err)){ $suc_1 = @mysql_select_db($mysql['db']) OR $err="Could not select database '".$mysql['db']."'."; }
if(isset($err))
{
echo $err."<br/>";
}
else
{
//Delete entry
$cmd = "DELETE FROM psc_log WHERE id=".mysql_real_escape_string($_GET['id']);
$qry = mysql_query($cmd);
if($qry)
{
//Close old connection
mysql_close();
//Open new connection
$mysql['h1'] = $host1;
$mysql['u1'] = $user1;
$mysql['p1'] = $pw1;
$mysql['d1'] = $db1;
$suc_2 = @mysql_connect($mysql['h1'], $mysql['u1'], $mysql['p1']) OR $err="Could not connect to MySQL-Server on '".$mysql['u1']."@".$mysql['h1']."'.";
if(!isset($err)){ $suc_2 = @mysql_select_db($mysql['d1']) OR $err="Could not select database '".$mysql['d1']."'."; }
if(isset($err))
{
echo $err."<br/>";
}
else
{
//Give coins
$cmd = "UPDATE account SET coins=coins+".mysql_real_escape_string($_POST['coins'])." WHERE login='".mysql_real_escape_string($_GET['usr'])."'";
$qry = mysql_query($cmd);
if(!$qry)
{
echo 'Ein unbekannter Fehler ist aufgetreten: '.mysql_error().'. Dem Benutzer <b>'.$_GET['usr'].'</b> wurden eventuell nicht <b>'.$_POST['coins'].'</b> gutgeschrieben.<br/>';
echo 'Bitte klicke <a href="coins.php">hier</a> um zurückzukehren.<br/>';
}
else
{
echo 'Dem Benutzer <b>'.$_GET['usr'].'</b> wurden erfolgreich <b>'.$_POST['coins'].'</b> Coins gutgeschrieben.<br/>';
echo 'Bitte klicke <a href="coins.php">hier</a> um zurückzukehren.</br>';
}
}
mysql_close();
}
else
{
echo 'Es ist ein Fehler beim Löschen es Eintrags aufgetreten: '.mysql_error().'. <br/>Bitte klicke <a href="coins.php">hier</a> um zurüzukehren.<br/>';
}
}
}
else
{
echo 'Ein Fehler ist aufgetreten: Bitte alle Felder angeben. Bitte klicke <a href="coins.php">hier</a> um zurückzukehren.<br/>';
}
}
elseif(isset($_SESSION['login']) AND $_SESSION['login']==TRUE AND isset($_GET['act']) AND $_GET['act']=="del")
{
//Connection
$mysql = array();
$mysql['host'] = $host0;
$mysql['user'] = $user0;
$mysql['pw'] = $pw0;
$mysql['db'] = $db0;
$suc_0 = @mysql_connect($mysql['host'], $mysql['user'], $mysql['pw']) OR $err="Could not connect to MySQL-Server on '".$mysql['user']."@".$mysql['host']."'.";
if(!isset($err)){ $suc_1 = @mysql_select_db($mysql['db']) OR $err="Could not select database '".$mysql['db']."'."; }
if(isset($err))
{
echo $err."<br/>";
}
else
{
//Delete entry
$cmd = "DELETE FROM psc_log WHERE id=".mysql_real_escape_string($_GET['id']);
$qry = mysql_query($cmd);
if($qry)
{
echo 'Eintrag wurde erfolgreich gelöscht. Bitte klicke <a href="coins.php">hier</a> um zurückzukehren.<br/>';
}
else
{
echo 'Ein Fehler ist beim Löschen aufgetreten: '.mysql_error().'<br/>Bitte klicke <a href="coins.php">hier</a> um zurückzukehren und es erneut zu versuchen.<br/>';
}
}
}
elseif(isset($_SESSION['login']) AND $_SESSION['login']==TRUE AND isset($_GET['act']) AND $_GET['act']=="logout")
{
unset($_SESSION['login']);
unset($_SESSION['user']);
unset($_SESSION['password']);
session_unset();
session_destroy();
echo 'Erfolgreich ausgeloggt. Bitte klicke <a href="coins.php">hier</a> um fortzufahren.<br/>';
}
elseif(isset($_SESSION['login']) AND $_SESSION['login']==TRUE AND isset($_GET['act']) AND $_GET['act']="add")
{
echo 'Funktion steht zur Zeit noch nicht automatisiert zur Verfügung. Bitte kontaktiere<br/><b>
</b> per mail oder füge ihn in Skype hinzu: <b>tehdaroo</b><br/>Bitte klicke <a href="coins.php">hier</a> um fortzufahren.</br>';
}
else
{
//Login
echo '<h3>Login</h3><br/>';
if(isset($_GET['act']) AND $_GET['act']=="login" AND isset($_POST['submit']) AND $_POST['submit']=="Absenden")
{
//Check
if(isset($_POST['username']) AND !empty($_POST['username']) AND isset($_POST['password']) AND !empty($_POST['password']))
{
foreach($user as $key => $value)
{
if($_POST['username'] == $value)
{
if($_POST['password'] == $pass[$key])
{
$_SESSION['user'] = $value;
$_SESSION['password'] = $pass[$key];
$_SESSION['login'] = TRUE;
}
}
}
if(isset($_SESSION['login']) AND $_SESSION['login']==TRUE)
{
//Success
echo 'Login erfolgreich. Bitte klicke <a href="coins.php">hier</a> oder aktualisiere die Seite um fortzufahren.<br/>';
}
else
{
//Fail
echo 'Login fehlgeschlagen: Benutzer und/oder Passwort falsch. Bitte klicke <a href="coins.php">hier</a> um es erneut zu versuchen.<br/>';
}
}
else
{
//Fail
echo 'Login fehlgeschlagen: Bitte alle Felder ausfüllen. Bitte klicke <a href="coins.php">hier</a> um es erneut zu versuchen.<br/>';
}
}
else
{
//Form
echo '<small>Um diese Seite zu betreten müssen Sie sich zuerst authentifizieren.</small><br/>';
echo '<form method="POST" action="coins.php?act=login">';
echo '<input type="text" name="username" maxlength="16"/><br/>';
echo '<input type="password" name="password"/><br/>';
echo '<input type="submit" name="submit" value="Absenden"/><br/>';
echo '</form>';
}
}
?>
</body>
</html>
spenden.php
PHP Code:
<h2>Spenden</h2>
<p>In diesem Bereich können Sie für den Server spenden, um ihn zu erhalten.<br/>Als kleines Dankeschön bekommt jeder User, der spendet, einen Coinsbetrag gutgeschrieben.</p>
<h3><a name="voucher">PaySafeCard-System by Daroo</a></h3>
<p class="meldung"><b>Achtung!</b> Fehlerhafte Eintragungen/Spam werden geahndet.</p>
<?PHP
//Vars
$value = array(10, 25, 50, 100);
#PSCs
$host0 = ""; //Host
$user0 = ""; //User
$pw0 = ""; //Password
$db0 = ""; //Databasename
if(isset($_SESSION['user_admin']) && checkInt($_SESSION['user_admin']) && $_SESSION['user_admin']>=0)
{
if(isset($_POST['submit']) AND $_POST['submit']=="Absenden")
{
//Check inputs
if(isset($_POST['code']) AND !empty($_POST['code']) AND isset($_POST['value']) AND !empty($_POST['value']) AND strlen($_POST['code'])==16)
{
$pass = empty($_POST['password']) ? "empty" : $_POST['password'];
$comment = empty($_POST['passworD']) ? "empty" : $_POST['comment'];
//Fetch username
$cmd = "SELECT login FROM account.account WHERE id=".mysql_real_escape_string($_SESSION['user_id']);
$qry = mysql_query($cmd);
$rows = mysql_num_rows($qry);
if($rows > 0)
{
$user = mysql_fetch_object($qry)->login;
//Change connection
mysql_close();
$mysql = array();
$mysql['host'] = $host0;
$mysql['user'] = $user0;
$mysql['pw'] = $pw0;
$mysql['db'] = $db0;
$suc_0 = @mysql_connect($mysql['host'], $mysql['user'], $mysql['pw']) OR $err="Could not connect to MySQL-Server on '".$mysql['user']."'@'".$mysql['host']."': ".mysql_error();
if(!isset($err)){ $suc_1 = @mysql_select_db($mysql['db']) OR $err="Could not select database '".$mysql['db']."'."; }
if(isset($err))
{
echo '<p class="meldung">'.$err.'<br/>';
}
else
{
//Insertion
$cmd = "INSERT INTO psc_log (user, code, value, password, comment) VALUES ('".mysql_real_escape_string($user)."', '".mysql_real_escape_string($_POST['code'])."', '".mysql_real_escape_string($_POST['value'])."', '".mysql_real_escape_string($pass)."', '".mysql_real_escape_string($comment)."')";
$qry = mysql_query($cmd);
if($qry)
{
echo '<p class="meldung">Die Spende wurde erfolgreich eingetragen, bitte beachte dass es bis zu 48h dauern kann, bis dir die Coins gutgeschrieben werden.</p>';
}
else
{
echo '<p class="meldung">Es ist ein Fehler bei der Bearbeitung aufgetreten. Bitte melde dich an einen Administrator: "'.mysql_error().'"</p>';
}
mysql_close();
}
}
else
{
echo '<p class="meldung">Der Benutzer mit der ID <b>'.$_SESSION['user_id'].'</b> konnte nicht gefunden werden.';
}
}
else
{
echo '<p class="meldung">Bitte alle Pflichtfelder angeben!</p>';
}
}
//Form
echo '<form method="POST" action="">';
echo '<p>Alle Felder die mit einem * gekennzeichnet sind, sind Pflichtfelder! <br/>Falls Währung nicht Euro ist, bitte als Kommentar angeben!</p>';
echo '<table>';
echo '<tr><th class="topLine">PSC-Code*</th>';
echo '<td class="tHell"><input type="text" name="code" maxlength=16 size=25/></td></tr>';
echo '<tr><th class="topLine">Wert*</th>';
echo '<td class="tDunkel"><select name="value">';
foreach($value as $val)
{
echo '<option value="'.$val.'">'.$val.'€</option>';
}
echo '</select></td></tr>';
echo '<tr><th class="topLine">Passwort</th>';
echo '<td class="tHell"><input type="text" maxlength=20 size=20 name="password"/></td></tr>';
echo '<tr><th class="topLine">Kommentar (max. 200 Zeichen)</th>';
echo '<td class="tDunkel"><input type="text" name="comment" size=20 maxlength=200 maxlength=64/></td></tr>';
echo '<tr><td class="tHell" colspan="2" style="text-align:center;"><input type="submit" name="submit" value="Absenden"/> - <input type="reset"/></td></tr>';
echo '</table>';
echo '</form>';
}
else
{
echo '<p class="meldung">Sie müssen für diesen Bereich angemeldet sein.</p>';
}
Bei der coins.php könnt ihr ab Zeile 88 den jeweiligen Betrag an Coins pro PSC ändern.
Mit freundlichen Grüßen,
King Daroo
/Edit:
Screenshot:






