LoGD Standardrelease steht hier zum Download zur Verfügung!

Zeige Source: /petition.php

Hier klicken für den Source, ODER
Weitere Dateien, von denen du den Quelltext sehen kannst:
(Das Lesen des Source, um sich spielerische Vorteile zu verschaffen, ist nicht erlaubt. Solltest du Schwachstellen oder Fehler entdecken, bist du als Spieler verpflichtet, diese zu melden.)

Source von: /petition.php

<?php
/*

Spam-Protection
aus der Todo:
Pflichtfeld Mail-adresse, wenn nicht eingeloggt

Speicherung von Session-ID und IP und anzeige dessen (+ link zu domaintools für die IP)

Step 1: Speicherung Verbindungsdaten (IP, Hostnamen, Proxies, etc)
Step 2: Session-Daten
Step 3: Stopforumspam-Api ?
Step 4: ... mehr überlegen


aragon
2014-04-08    Anti-Spam-Mod ... Step 1
2021-06-05        aragon    bugfix php8
2024-04-28    aragon    bugfix php8
*/

require_once "common.php";

$op $_GET['op'] ?? "";


if (
$op == "faq") {
    
$id = (int)($_GET['id'] ?? 0);

    if (
$id 0) {
        
$row db_fetch_assoc(db_query("SELECT * FROM ruleset WHERE id={$id}"));

        
popup_header($row['title']);
        
output("<a href='petition.php?op=faq'>Inhaltsverzeichnis</a>`n`n"true);
        
output("`c`b" $row['subtitle'] . "`b`c`n`n");

        
$res db_query("SELECT * FROM rules WHERE rsid={$id} ORDER BY orderid ASC");

        while (
$row db_fetch_assoc($res)) {
            
$content $row['content'];

            
$dynamic $row['variable'];

            if (
strlen($dynamic) > 0) {
                
$dynamic explode("\n"$dynamic); // ** every line is 1 setting
                
foreach ($dynamic as $k => $v) {
                    
$v explode(":"$v); // 3-4 options
                    
$set explode(","$v[0]);
                    
$text "";

                    if (
$set[0] == "setting") {
                        
$v[1] = explode(","$v[1]);
                        
$case getsetting($v[1][0], $v[1][1]); // getsetting(setting-name, default value)

                        
if ($case == $v[1][2])
                            
$text $v[2];
                        else
                            
$text $v[3];
                    } elseif (
$set[0] == "getsetting") {
                        
$v[1] = explode(","$v[1]);
                        
$text getsetting($v[1][0], $v[1][1]); // getsetting(setting-name, default value)
                    
} else {
                        
$text $v[1];
                    }

                    
$content str_replace("{{" $set[1] . "}}"$text$content);
                }
            }
            
output("`^" $row['id'] . " " $row['title'] . "`@`n" $content "`n`n");
        }
    } else {

        
popup_header("Frequently Asked Questions (FAQ)");
        
output("
        `^Willkommen bei Legend of the Green Dragon. `n
        `n`@
        Eines Tages wachst du in einem Dorf auf. Du weisst nicht warum. Verwirrt läufst du durch das Dorf, bis du schliesslich auf den Dorfplatz stolperst. Da du nun schonmal da bist, fängst du an, lauter dumme Fragen zu stellen. Die Leute (die aus irgendeinem Grund alle fast nackt sind) werfen dir alles mögliche an den Kopf. Du entkommst in eine Kneipe, wo du in der nähe des Eingangs ein Regal mit Flugblättern findest. Der Titel der Blätter lautet: \"Fragen, die schon immer fragen wolltest, es dich aber nie getraut hast\". Du schaust dich um, um sicherzustellen, dass dich niemand beobachtet, und fängst an zu lesen:`n
        `n
        \"Du bist also ein Newbie. Willkommen im Club. Hier findest du Antworten auf Fragen, die dich quälen. Nun, zumindest findest du Antworten auf Fragen, die UNS quälten. So, und jetzt lese und lass uns in Ruhe!\" `n
        `n
        `bInhalt:`b`n
        "
true);
        
$res db_query("SELECT * FROM ruleset ORDER BY orderid ASC;");
        while (
$row db_fetch_assoc($res)) {
            
$url "petition.php?op=faq&id=" $row['id'] . "";
            
output("<a href=\"{$url}\">{$row['title']}</a>`n"true);
        }
        
output("`n
        ~Danke,`n
        das Management.`n
        "
true);
    }
} else {
    
popup_header("Anfrage für Hilfe");
    if ((
count($_POST) > 0) and (isset($_POST['description'])) and (trim($_POST['description'] != ""))) {
        
$reply false;
        if (
$_POST['pid'] != '') {
            
$sql 'SELECT petitionid,subject FROM petitionmail WHERE MD5(CONCAT(petitionid,msgfrom))="' $_POST['pid'] . '"';
            
$result db_query($sql);
            if (
db_num_rows($result) != 0) {
                
$reply true;
                
$row db_fetch_assoc($result);
            }
        }
        if (!
$reply) {
            unset(
$_POST['pid']);
            
$p $session["user"]["password"];
            if (
array_key_exists('password'$session['user'])) {
                unset(
$session["user"]["password"]);
            }
            
#            $sql = "INSERT INTO petitions (author,date,body,pageinfo,lastact) VALUES (".(int)$session[user][acctid].",now(),\"".addslashes(output_array($_POST))."\",\"".addslashes(output_array($session,"Session:"))."\",NOW())";

            // *** ANTI SPAM Mod
            
$radd '';
            
$rnam '';
            
$radd $_SERVER['REMOTE_ADDR'];
            if (
array_key_exists('REMOTE_HOST'$_SERVER)) {
                
$radd $_SERVER['REMOTE_HOST'];
                
$rnam $_SERVER['REMOTE_HOST'];
            }

            
$additional "";

            
$proxy_headers = array(
                
'HTTP_VIA',
                
'HTTP_X_FORWARDED_FOR',
                
'HTTP_FORWARDED_FOR',
                
'HTTP_X_FORWARDED',
                
'HTTP_FORWARDED',
                
'HTTP_CLIENT_IP',
                
'HTTP_FORWARDED_FOR_IP',
                
'VIA',
                
'X_FORWARDED_FOR',
                
'FORWARDED_FOR',
                
'X_FORWARDED',
                
'FORWARDED',
                
'CLIENT_IP',
                
'FORWARDED_FOR_IP',
                
'HTTP_PROXY_CONNECTION'
            
);
            foreach (
$proxy_headers as $x) {
                if (isset(
$_SERVER[$x])) {
                    
$additional .= $x "=" $_SERVER[$x] . ",";
                }
            }

            
$acctid 0;
            if (
array_key_exists('acctid'$session['user'])) {
                (int)
$session["user"]["acctid"] ?? 0;
            }

            
$sql "INSERT INTO petitions (author,date,body,pageinfo,lastact,
            ip,
            hostname,
            additionalinfo
            )
            VALUES (" 
$acctid ",now(),\"" addslashes(output_array($_POST)) . "\",\"" addslashes(output_array($session"Session:")) . "\",NOW(),
            \"
{$radd}\",
            \"" 
urlencode($rnam) . "\",
            \"" 
urlencode($additional) . "\"
            )
            "
;
            
db_query($sql);
            
$session["user"]["password"] = $p;
        } else {
            
petitionmail('RE: ' $row['subject'], $_POST['description'], $row['petitionid'], $session['user']['acctid']);
        }
        
output("Deine Anfrage wurde an die Admins gesendet. Bitte hab etwas Geduld, die meisten Admins
        haben Jobs und Verpflichtungen ausserhalb dieses Spiels. Antworten und Reaktionen können eine Weile dauern."
);
    } else {
        
$pid = @$_GET['pid'] || "";
        if (
$pid != '') {
            
$pid $pid;
            
$sql 'SELECT body FROM petitionmail WHERE MD5(CONCAT(petitionid,msgfrom))="' $pid '"';
            
$result db_query($sql);
            if (
db_num_rows($result) == 0) {
                
output('`c`b`4Die Anfrage existiert nicht. Bitte erstelle eine neue Anfrage!`0`b`c`n`n');
                
$charname $email $description $pid '';
            } else {
                
$row db_fetch_assoc($result);
                
preg_match('/\[email\] = (.+)/'$row['body'], $email);
                
$email trim($email[1]);
                
preg_match('/\[charname\] = (.+)/'$row['body'], $loginname);
                
$charname trim($loginname[1]);
                
$description "\n\n----- Deine Anfrage -----\n" $row['body'];
            }
        } else {
            
$charname $email $description $pid '';
        }
        
output("<form action='petition.php?op=submit' method='POST'>
        <input type='hidden' name='pid' value='
$pid'>`n
        Name deines Characters: <input name='charname' value='
$charname'>`n
        Deine E-Mail Adresse: <input name='email' value='
$email'>`n
        Beschreibe dein Problem:`n
        <textarea name='description' cols='30' rows='5' class='input'>
$description</textarea>`n
        <input type='submit' class='button' value='Absenden'>`n
        Bitte beschreibe das Problem so präzise wie möglich. Wenn du Fragen über das Spiel hast,
        check die <a href='petition.php?op=faq'>FAQ</a>. `nAnfragen, die das Spielgeschehen betreffen, werden
        nicht bearbeitet - es sei denn, sie haben etwas mit einem Fehler zu tun.
        </form>
        "
true);

        
$radd = @$_SERVER['REMOTE_ADDR'];
        
$rnam = @$_SERVER['REMOTE_HOST'];

        
output("Spam-Protection: folgende Daten werden zusätzlich gespeichert:`n
        deine IP: 
$radd `n
        dein Anschlussname: 
$rnam `n");
    }
}
popup_footer();