Alle Dateien, die hier eingesehen werden können, sind unter der GNU GPL lizenziert. Wenn du etwas darin findest, das du gerne hättest, so schreibe mir doch bitte eine Anfrage damit ich, wenn ich es rausgeben will, alle Änderungen raussuchen könnte. Denn ich übernehme keine Verantwortung, solltest du was rausnehmen und es geht nicht. Und Support deswegen geb ich schon gar nicht.
Solltest du eine Schwachstelle im Code finden, sei es eine kritische Lücke oder eine Möglichkeit zu cheaten, dann bitte ich dich, mir das mitzuteilen. Solltest du beim cheaten erwischt werden, werde ich deinen Account eigenhändig löschen & bannen; Solltest du meinen Server angreifen, so werde ich meine Rechtsschutzversicherung kontaktieren.
Verzeichnisse:
<?php
/*
(c) 28.1.2007 by Passion de la glace alias Kamui
erstmals erschienen auf:
http://www.lotgd-zanarkand.com/logd/
*/
require_once 'common.php';
addcommentary();
checkday();
/*
ToDo:
Führe folgende SQL Befehle in deinem phpmyadmin aus:
ALTER TABLE `accounts` ADD `rport` enum('0','1') NOT NULL default '0';
CREATE TABLE `rporte`(
`id` int(11) unsigned NOT NULL auto_increment,
`acctid` int(11) unsigned NOT NULL default '0',
`acctname` varchar(50) NOT NULL default '',
`name` varchar(200) NOT NULL default '',
`text` longtext NOT NULL,
PRIMARY KEY (`id`),
KEY `acctid` (`acctid`)
)TYPE=MyISAM;
CREATE TABLE `ortebann`(
`id` int(11) unsigned NOT NULL auto_increment,
`name` varchar(50) NOT NULL default '',
`ort` int(11) unsigned NOT NULL default '0',
`grund` text NOT NULL,
PRIMARY KEY (`id`),
KEY `ort` (`ort`)
)TYPE=MyISAM;
INSERT INTO `ortebann` VALUES ('1','Kamui','3','Testgrund');
Öffne setnewday.php und suche nach:
$sql = "DELETE FROM accounts WHERE acctid IN ($delaccts)";
db_query($sql) or die(db_error(LINK));
füge danach ein:
$sql = 'DELETE FORM `rporte` WHERE acctid IN ($delacctd)';
db_query($sql) or die (db_error(LINK));
speichern und schliessen.
Öffne user.php und suche nach:
"seendragon"=>"Drachen heute gesucht,bool",
füge danach ein:
"rport"=>"Hat RP Ort erstellt,bool",
speichern und schliessen
füge in passender Stelle ein:
addnav('Die RP Orte','orte.php');
Falls textarea nicht in der function showform vorhanden ist baue sie endweder ein oder
suche überall nach:
'text'=>'Ortsbeschreibung,textarea,45,20'
und ersetze es gegebenden falls.
Falls du kein html erlauben willst suche:
output(''.CloseTags(removeEvilTags($ort['text']),'`n`c`b`i').'`n`n`n',true);
und ersetze es mit:
output(''.CloseTags($ort['text'],'`n`c`b`i').'`n`n`n');
die zwei folgenden Functionen kannst du damit auch rausnehmen.
*/
/*erlaubt Bilder und andere htmltags. Functionen by unkown*/
$allowedTags = '<h1><b><i><a><ul><li><pre><hr><blockquote><img><h3>';
$stripAttrib = 'javascript:|onclick|ondblclick|onmousedown|onmouseup|onmouseover|'.
'onmousemove|onmouseout|onkeypress|onkeydown|onkeyup|onabort|'.
'onfocus|onload|onblur|onchange|onerror|onreset|onselect|obsubmit|onunload';
function removeEvilTags($source)
{
global $allowedTags;
$source = strip_tags($source, $allowedTags);
return preg_replace('/<(.*?)>/ie', "'<'.removeEvilAttributes('\\1').'>'", $source);
}
function removeEvilAttributes($tagSource)
{
global $stripAttrib;
return stripslashes(preg_replace("/$stripAttrib/i", 'forbidden', $tagSource));
}
$acctid = $session['user']['acctid'];
page_header('Die RPG Orte');
switch($_GET['op']){
default:
addnav('Optionen');
if ($session['user']['rport']>=0)
addnav('RP Ort erstellen','orte.php?op=erstellen');
addnav('Aktualisieren','orte.php');
addnav('Zurück','village.php');
if ($session['user']['superuser']>=2){
addnav('SU Optionen');
addnav('Orte Administration','orte.php?op=admin&suop=');
}
output('`&`c`bDie RPG Orte`c`b`n`n`n');
output('Hier sind all die RPG Orte aufgelistet die die Spieler erstellt haben. Du kannst jeden dieser Orte besuchen und dort RP betreiben.');
output('`c');
output('<table border=0 cellpadding=2 cellspacing=1 bgcolor=\"#000000\" align=\"center\">',true);
output('<tr class=\"trhead\" align=\"center\">
<td><b>Ersteller</b></td>
<td><b>Ortsname</b></td>
<td><b>Betreten</b></td>',true);
$sql = 'SELECT id,acctname,name FROM rporte ORDER BY id ASC';
$result = db_query($sql) or die (db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$class = ($class=='trdark'?'trlight':'trdark');
output("<tr class='$class'><td>",true);
output($row['acctname']);
output('</td><td>',true);
output($row['name']);
output("</td><td>
<a href='orte.php?op=ort&id=".$row['id']."'>Betreten",true);
addnav('','orte.php?op=ort&id='.$row['id'].'');
output("</td>",true);
}
output('</table>',true);
output('`c');
break;
/* Die Orte -start- */
case 'ort':
$sql = 'SELECT * FROM rporte WHERE id='.$_GET['id'].'';
$result = db_query($sql) or die (db_error(LINK));
$ort = db_fetch_assoc($result);
$search = 'SELECT name,ort,grund FROM ortebann WHERE ort='.$_GET['id'].' AND name="'.$session['user']['login'].'"';
$result = db_query($search) or die (db_error(LINK));
if (db_num_rows($result)>0){
$bann = db_fetch_assoc($result) or die (db_error(LINK));
output(''.$session['user']['name'].' du wurdest von '.$ort['acctname'].' dem Ersteller dieses Ortes gebannt er/sie hat dir folgenden Grund genannt: '.$bann['grund'].'');
addnav('Zurück','orte.php');
}else{
output('`$Diesen Ort hat '.$ort['acctname'].' erstellt`n`n');
output('`c'.$ort['name'].'`c`n');
output(''.CloseTags(removeEvilTags($ort['text']),'`n`c`b`i').'`n`n`n',true);
viewcommentary('Ort_'.$ort['id'].'','Hier schreiben',$session['user']['pps']);
if ($acctid==$ort['acctid']){
addnav('Deine Ortsadministration');
addnav('Dein Ort editieren','orte.php?op=ort&editop=edit&id='.$ort['id'].'');
//addnav('Bannübersicht','orte.php?op=ort&act=bann&id='.$ort['id'].'');
addnav('----');
addnav('Dein Ort löschen','orte.php?op=ort&editop=delete&id='.$ort['id'].'');
}
addnav('Sonstiges');
addnav('Aktualisieren','orte.php?op=ort&id='.$ort['id'].'');
addnav('Zurück zu den Orten','orte.php');
}
/*Besitzeroptionen -start- */
switch($_GET['editop']){
case 'edit':
$ortsinfo = array('name'=>'Name deines Ortes',
'text'=>'Ortsbeschreibung,textarea,45,20');
$select = "SELECT acctid,name,text FROM rporte WHERE id=".$_GET['id']."";
$result = db_query($select) or die(db_error(LINK));
$row = db_fetch_assoc($result);
output("<form action='orte.php?op=ort&editop=save&id=".$_GET['id']."' method='POST'>",true);
addnav('','orte.php?op=ort&editop=save&id='.$_GET['id'].'');
output("<input type='submit' class='button' value='Speichern'>",true);
showform($ortsinfo,$row);
output("</form>", true);
addnav('Zurück','orte.php?op=ort&id='.$_GET['id'].'');
break;
case 'save':
$sql = 'UPDATE `rporte` SET
`name` = "'.$_POST['name'].'"
,`text` = "'.$_POST['text'].'"
WHERE
`id` = "'.(int)$_GET['id'].'"';
db_query($sql) or die (db_error($sql));
redirect('orte.php?op=ort&id='.$_GET['id'].'');
break;
case 'delete':
$sql = 'DELETE FROM `rporte` WHERE acctid='.$acctid.'';
db_query($sql)or die (db_error(LINK));
$sql = 'DELETE FROM `ortebann` WHERE ort='.$_GET['id'].'';
db_query($sql)or die (db_error(LINK));
$sql = 'UPDATE `accounts` SET rport=0 WHERE acctid='.$acctid.'';
db_query($sql)or die (db_error(LINK));
redirect('orte.php');
break;
}
switch($_GET['act']){
case 'bann':
$select = "SELECT id,acctid FROM rporte WHERE id=".$_GET['id']."";
$result = db_query($select) or die(db_error(LINK));
$row = db_fetch_assoc($result);
output('`$`bDie von dir gebannten Spieler`b`n`n');
output('`c');
output('<table border=0 cellpadding=2 cellspacing=1 bgcolor=\"#000000\" align=\"center\">',true);
output('<tr class=\"trhead\" align=\"center\">
<td><b>Name</b></td>
<td><b>Löschen</b></td>',true);
$sql = 'SELECT id,name,ort FROM ortebann WHERE ort='.$_GET['id'].' ORDER BY id ASC';
$result = db_query($sql) or die (db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$class = ($class=='trdark'?'trlight':'trdark');
output("<tr class='$class'><td>",true);
output($row['name']);
output("</td><td>
<a href='orte.php?op=ort&act=delete&id=".$row['id']."'>Löschen",true);
addnav('','orte.php?op=ort&act=delete&id='.$row['id'].'');
output("</td>",true);
}
output('</table>',true);
output('`c');
output("<form action='orte.php?op=ort&act=save&id=".$ort['id']."' method='POST'>",true);
$ort = array(
'id'=>'ID,hidden',
'name'=>'Loginname des Spielers',
'grund'=>'Grund des banns'
);
showform($ort);
output("</form>",true);
addnav('','orte.php?op=ort&act=save&id='.$ort['id'].'');
break;
case 'delete':
$sql = 'DELETE FROM `ortebann` WHERE id='.$_GET['id'].'';
db_query($sql) or die (db_error(LINK));
redirect('orte.php?op=ort&act=bann&id='.$_GET['id'].'');
break;
case 'save':
$name = $_POST['name'];
$ort = $_GET['id'];
$grund = $_POST['grund'];
$anlegen = "INSERT INTO `ortebann` (name,ort,grund) VALUES ($name,\"$ort\",\"$grund\")";
db_query($anlegen)or die (db_error(LINK));
redirect('orte.php?op=ort&act=bann&id='.$_GET['id'].'');
$search = 'SELECT acctname,name FROM rporte WHERE id='.$_GET['id'].'';
$result = db_query($search) or die (db_error(LINK));
$ort = db_fetch_assoc($result);
$sql = 'SELECT acctid FROM accounts WHERE login='.$_POST['name'].'';
$result = db_query($sql) or die (db_error(LINK));
$row = db_fetch_assoc($result);
systemmail($row['acctid'],'`$Du wurdest von '.$ort['name'].' gebannt','Hallo '.$row['name'].' du wurdest von '.$ort['acctname'].' dem Ersteller des Ortes: '.$ort['name'].' gebannt. Ab nun hast du kein Zutritt mehr zu diesem Ort falls du den Grund wissen willst frage endweder nach oder schaue an dem Ort nach dort wird dir der Grund genannt.');
break;
}
break;
/* Besitzeroptionen -end-*/
/* Die Orte -end- */
/* Ort erstellen für Spieler start-*/
case 'erstellen':
output("<form action='orte.php?op=save' method='POST'>",true);
$ort = array(
'name'=>'Name des Ortes',
'text'=>'Ortsbeschreibung,textarea,45,20'
);
showform($ort);
output("</form>",true);
addnav('Zu den Orten','orte.php');
addnav('','orte.php?op=save');
break;
case 'save':
$login = $session['user']['login'];
$name = $_POST['name'];
$text = $_POST['text'];
$anlegen = "INSERT INTO `rporte` (acctid,acctname,name,text) VALUES ($acctid,\"$login\",\"$name\",\"$text\")";
db_query($anlegen)or die (db_error(LINK));
output('`#Der Ort wurde angelegt. Du kannst ihn nun betreten und deine Texte und alles weitere editieren');
$session['user']['rport'] = 1;
addnav('Zurück zu den Orten','orte.php');
break;
/* Ort erstellen für Spieler */
/* SU Optionen -start- */
case 'admin':
switch($_GET['suop']){
default:
output('`c');
output('<table border=0 cellpadding=2 cellspacing=1 bgcolor=\"#000000\" align=\"center\">',true);
output('<tr class=\"trhead\" align=\"center\">
<td><b>OrtsID</b></td>
<td><b>Ersteller</b></td>
<td><b>Ortsname</b></td>
<td><b>Editieren</b></td>
<td><b>Löschen</b></td>',true);
$sql = 'SELECT id,acctname,name FROM rporte ORDER BY id ASC';
$result = db_query($sql) or die (db_error(LINK));
while ($row = db_fetch_assoc($result)) {
$class = ($class=='trdark'?'trlight':'trdark');
output("<tr class='$class'><td>",true);
output($row['id']);
output('</td><td>',true);
output($row['acctname']);
output('</td><td>',true);
output($row['name']);
output("</td><td>
<a href='orte.php?op=admin&suop=edit&id=".$row['id']."'>Editieren",true);
addnav('','orte.php?op=admin&suop=edit&id='.$row['id'].'');
output("</td><td>
<a href='orte.php?op=admin&suop=delete&id=".$row['id']."'>Löschen",true);
addnav('','orte.php?op=admin&suop=delete&id='.$row['id'].'');
output('</td>',true);
}
output('</table>',true);
output('`c');
addnav('SU Optionen');
addnav('Ort anlegen','orte.php?op=admin&suop=anlegen');
addnav('------');
if ($session['user']['superuser']>=3)
addnav('Tabelle leeren','orte.php?op=admin&suop=leeren');
addnav('Sonstiges');
addnav('Zurück zu den Orten','orte.php');
break;
/* SUoptionen editieren löschen und Tabellen leeren -start- */
case 'edit':
$su_ortsinfo = array('id'=>'ID,viewonly',
'acctid'=>'BesitzerID,int',
'acctname'=>'Loginname des Besitzers',
'name'=>'Name des Ortes',
'text'=>'Ortsbeschreibung,textarea,20,20');
$select = "SELECT * FROM rporte WHERE id=".$_GET['id']."";
$result = db_query($select) or die(db_error(LINK));
$row = db_fetch_assoc($result);
output("<form action='orte.php?op=admin&suop=save&id=".$_GET['id']."' method='POST'>",true);
addnav('','orte.php?op=admin&suop=save&id='.$_GET['id'].'');
output("<input type='submit' class='button' value='Speichern'>",true);
showform($su_ortsinfo,$row);
output("</form>", true);
addnav('Zurück','orte.php?op=admin&suop=');
break;
case 'save':
$sql = 'UPDATE `rporte` SET
`acctid` = "'.(int)$_POST['acctid'].'"
,`acctname` = "'.$_POST['acctname'].'"
,`name` = "'.$_POST['name'].'"
,`text` = "'.$_POST['text'].'"
WHERE
`id` = "'.(int)$_GET['id'].'"';
db_query($sql) or die (db_error($sql));
redirect('orte.php?op=admin&suop=');
break;
case 'delete':
$sql = 'DELETE FROM `rporte` WHERE id='.$_GET['id'].'';
db_query($sql) or die (db_error(LINK));
$sql = 'DELETE FROM `ortebann` WHERE ort='.$_GET['id'].'';
db_query($sql) or die (db_error(LINK));
redirect('orte.php?op=admin&suop=');
break;
case 'leeren':
$sql = 'TRUNCATE TABLE `rporte`';
db_query($sql) or die (db_error(LINK));
$sql = 'TRUNCATE TABLE `ortebann`';
db_query($sql) or die (db_error(LINK));
redirect('orte.php?op=admin&suop=');
break;
/* SUoptionen editieren löschen und Tabellen leeren -end- */
/*Anlegen eines Ortes für SU -start-*/
case 'anlegen':
output("<form action='orte.php?op=admin&suop=erstellen' method='POST'>",true);
$ort = array(
'id'=>'ID,hidden',
'acctid'=>'BesitzerID,int',
'acctname'=>'Loginname des Besitzers',
'name'=>'Name des Ortes',
'text'=>'Ortsbeschreibung,textarea,45,20'
);
showform($ort);
output("</form>",true);
addnav('Zurück zur Übersicht','orte.php?op=admin&suop=');
addnav('','orte.php?op=admin&suop=erstellen');
break;
case 'erstellen':
$besitzer_id = $_POST['acctid'];
$login = $_POST['acctname'];
$name = $_POST['name'];
$text = $_POST['text'];
$anlegen = "INSERT INTO `rporte` (acctid,acctname,name,text) VALUES ($besitzer_id,\"$login\",\"$name\",\"$text\")";
db_query($anlegen)or die (db_error(LINK));
output('Der Ort wurde angelegt');
addnav('Zurück zur Übersicht','orte.php?op=admin&suop=');
break;
/*Anlegen eines Ortes für SU -end-*/
}
break;
/* SU Optionen -end- */
}
page_footer();
?>