コード例 #1
0
ファイル: registrer.php プロジェクト: Kuzat/kofradia
    function step1_2()
    {
        global $__server;
        // er skjemaet sendt inn?
        if ($_SERVER['REQUEST_METHOD'] == "POST") {
            // sjekk for gyldig trinn
            if (!isset($_POST['step']) || $_POST['step'] != 1 && $_POST['step'] != 2) {
                redirect::handle();
            }
            $step = $_POST['step'];
            // trin 1
            if ($step == 1) {
                // epost1, epost2, b_dag, b_maaned, b_aar, forste_bruker
                $epost1 = trim(postval("epost1"));
                $epost2 = trim(postval("epost2"));
                $b_dag = intval(postval("b_dag"));
                $b_maaned = intval(postval("b_maaned"));
                $b_aar = intval(postval("b_aar"));
                $forste_bruker = isset($_POST['forste_bruker']);
                $date = ess::$b->date->get();
                $n_day = $date->format("j");
                $n_month = $date->format("n");
                $n_year = $date->format("Y");
                $age = $n_year - $b_aar - ($n_month < $b_maaned || $b_maaned == $n_month && $n_day < $b_dag ? 1 : 0);
                $birth = $b_aar . "-" . str_pad($b_maaned, 2, "0", STR_PAD_LEFT) . "-" . str_pad($b_dag, 2, "0", STR_PAD_LEFT);
                // sjekk om fødselsdatoen er gyldig
                $birth_date = ess::$b->date->get();
                $birth_date->setDate($b_aar, $b_maaned, $b_dag);
                $birth_valid = $birth_date->format("Y-m-d") == $birth;
                // sjekk e-post
                $email_valid = game::validemail($epost1);
                // kontroller om e-postadressen eller domenet er blokkert
                if ($email_valid) {
                    $pos = mb_strpos($epost1, "@");
                    $domain = mb_strtolower(mb_substr($epost1, $pos + 1));
                    $result = \Kofradia\DB::get()->query("SELECT eb_id, eb_type FROM email_blacklist WHERE (eb_type = 'address' AND eb_value = " . \Kofradia\DB::quote($epost1) . ") OR (eb_type = 'domain' AND eb_value = " . \Kofradia\DB::quote($domain) . ") ORDER BY eb_type = 'address' LIMIT 1");
                    $error_email = $result->fetch();
                }
                // sjekk e-post (1)
                if (!$email_valid) {
                    ess::$b->page->add_message("Ugyldig e-postadresse.", "error");
                } elseif ($error_email) {
                    if ($error_email['eb_type'] == "address") {
                        ess::$b->page->add_message("E-postadressen <b>" . htmlspecialchars($epost1) . "</b> er blokkert for registrering.", "error");
                    } else {
                        ess::$b->page->add_message("Domenet <b>" . htmlspecialchars($domain) . "</b> er blokkert for registrering og kan ikke benyttes.", "error");
                    }
                } elseif ($epost1 != $epost2) {
                    ess::$b->page->add_message("Den gjentatte e-postadressen var ikke lik den første.", "error");
                } elseif ($b_dag < 1 || $b_dag > 31) {
                    ess::$b->page->add_message("Du må velge en gyldig dag.", "error");
                } elseif ($b_maaned < 1 || $b_maaned > 12) {
                    ess::$b->page->add_message("Du må velge en gyldig måned.", "error");
                } elseif ($b_aar < 1900 || $b_aar > ess::$b->date->get()->format("Y")) {
                    ess::$b->page->add_message("Du må velge et gyldig år.", "error");
                } elseif (!$birth_valid) {
                    ess::$b->page->add_message("Datoen du fylte inn for fødselsdatoen din eksisterer ikke.");
                } elseif ($age < 13) {
                    putlog("ABUSE", "%c9%bUNDER ALDERSGRENSEN:%b%c %u{$_SERVER['REMOTE_ADDR']}%u prøvde å registrere seg med fødselsdato %u{$birth}%u (%u{$age}%u år) og e-posten %u{$epost1}%u!");
                    ess::$b->page->add_message("Du må ha fylt 13 år for å registrere deg og spille Kofradia!", "error");
                    redirect::handle("", redirect::ROOT);
                } elseif (!$forste_bruker) {
                    ess::$b->page->add_message("I følge betingelsene kan du kun ha en bruker. Bruk den!", "error");
                    redirect::handle("", redirect::ROOT);
                } else {
                    // hent DB info
                    $result1 = \Kofradia\DB::get()->query("SELECT id, time, expire FROM registration WHERE email = " . \Kofradia\DB::quote($epost1));
                    $result2 = \Kofradia\DB::get()->query("SELECT u_id FROM users WHERE u_email = " . \Kofradia\DB::quote($epost1) . " AND u_access_level != 0");
                    // e-post allerede i registreringssystemet?
                    if ($row = $result1->fetch()) {
                        $time = game::timespan($row['expire'], game::TIME_ABS | game::TIME_FULL);
                        ess::$b->page->add_message("E-postadressen er allerede aktivt i registeringssystemet. Sjekk e-posten for e-postkode eller vent {$time}, for så å prøve igjen.", "error");
                    } elseif ($row = $result2->fetch()) {
                        putlog("ABUSE", "%c9%bREGISTRER KONTO:%b%c %u{$_SERVER['REMOTE_ADDR']}%u prøvde å registrere seg en e-post som allerede finnes: %u{$epost1}%u!");
                        ess::$b->page->add_message("Denne e-posten er allerede i bruk.", "error");
                        redirect::handle("", redirect::ROOT);
                    } else {
                        // sett opp kode
                        $code = mb_substr(md5(uniqid("kofradia_")), 0, 16);
                        // legg til i databasen
                        \Kofradia\DB::get()->exec("INSERT INTO registration SET time = " . time() . ", birth = '{$birth}', email = " . \Kofradia\DB::quote($epost1) . ", code = '{$code}', ip = '{$_SERVER['REMOTE_ADDR']}', expire = " . (time() + 7200));
                        // send e-post
                        $email = new email();
                        $email->text = 'Hei,

Du har begynt registrering av bruker på Kofradia.
Dersom du ikke har bedt om denne e-posten kan du se bort ifra den.

For å bekrefte e-postadressen din må du følge denne lenken:
' . $__server['path'] . '/registrer?e=' . $code . '

Din verifiseringskode er: ' . $code . '

Forespørselen ble utført fra ' . $_SERVER['REMOTE_ADDR'] . '.

Du må fortsette innen ' . game::timespan(7200, game::TIME_FULL | game::TIME_NOBOLD) . ' (' . ess::$b->date->get(time() + 7200)->format(date::FORMAT_SEC) . '). Etter den tid må du be om ny e-post.

--
www.kofradia.no';
                        $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR'];
                        $email->headers['Reply-To'] = "*****@*****.**";
                        $email->send($epost1, "Starte registrering på Kofradia");
                        ess::$b->page->add_message("En e-post med verifiseringskode har blitt sendt til <b>" . htmlspecialchars($epost1) . "</b>. Sjekk e-posten snarest!");
                        redirect::handle("?e");
                    }
                }
            } else {
                // e
                $ecode = trim(postval("e"));
                // sjekk e-postkode
                if (empty($ecode)) {
                    ess::$b->page->add_message("Du må fylle ut e-postkoden du har fått på epost.", "error");
                } else {
                    // sjekk om den finnes
                    $result = \Kofradia\DB::get()->query("SELECT id, time, email, code, ip, expire, user FROM registration WHERE code = " . \Kofradia\DB::quote($ecode));
                    if (!($row = $result->fetch())) {
                        putlog("ABUSE", "%c9%bE-POST KODE:%b%c %u{$_SERVER['REMOTE_ADDR']}%u prøvde å fortsette registreringen med ugyldig e-postkode (%u{$ecode}%u)!");
                        ess::$b->page->add_message("Fant ikke e-postkoden i databasen! Kontroller at den er riktig og evt. be om ny e-postkode.", "error");
                    } else {
                        // oppdater oppføringen
                        \Kofradia\DB::get()->exec("UPDATE registration SET verified = 1 WHERE id = {$row['id']}");
                        $_SESSION[$GLOBALS['__server']['session_prefix'] . 'reg'] = array("id" => $row['id'], "step" => 3);
                        redirect::handle();
                    }
                }
            }
        }
        echo '
<p><b>Velkommen</b> til Kofradia sine nettsider! Kofradia er et tekstbassert nettspill som handler om å utføre forskjellige funksjoner for å stige i gradene. I tillegg finnes det både forum og diverse annen informasjon på siden!</p>
<p>På denne siden oppretter du din bruker og spiller. Merk! Det er kun lov å ha én bruker. Har du allerede en bruker fra før har du ikke lov til å registrere ny bruker.</p>';
        if (!isset($_REQUEST['e'])) {
            ess::$b->page->add_js_domready('$("epost1").focus();');
            echo '
<form action="registrer" method="post">
	<input type="hidden" name="step" value="1" />
	<div class="registrer_felt">
		<boxes />
		<dl class="dd_right dl_2x">
			<dt>E-postadresse</dt>
			<dd><input type="text" id="epost1" name="epost1" value="' . htmlspecialchars(postval("epost1")) . '" class="styled w150" /></dd>
			
			<dt>Gjenta e-postadresse</dt>
			<dd><input type="text" name="epost2" value="' . htmlspecialchars(postval("epost2")) . '" class="styled w150" /></dd>
			
			<dt>Fødselsdato</dt>
			<dd>
				<select name="b_dag">
					<option value="">Dag</option>';
            $active = postval("b_dag");
            for ($i = 1; $i <= 31; $i++) {
                echo '
					<option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . $i . '</option>';
            }
            echo '
				</select>
				<select name="b_maaned">
					<option value="">Måned</option>';
            global $_lang;
            $active = postval("b_maaned");
            for ($i = 1; $i <= 12; $i++) {
                echo '
					<option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . ucfirst($_lang['months'][$i]) . '</option>';
            }
            echo '
				</select>
				<select name="b_aar">
					<option value="">År</option>';
            $active = postval("b_aar");
            for ($i = ess::$b->date->get()->format("Y"); $i >= 1900; $i--) {
                echo '
					<option value="' . $i . '"' . ($i == $active ? ' selected="selected"' : '') . '>' . $i . '</option>';
            }
            echo '
				</select>
			</dd>
			
			<dd><input type="checkbox" name="forste_bruker" id="c1" /><label for="c1"> Jeg har ingen aktiv bruker fra før</label></dd>
		</dl>
		<p class="c">' . show_sbutton("Gå til neste trinn") . '</p>
	</div>
</form>';
        } else {
            ess::$b->page->add_js_domready('$("verife").focus();');
            echo '
<p><b>Verifiseringskode</b></p>
<p>Når du har mottatt e-post etter å ha fylt inn e-postadresse og fødelsdato, mottar du en verifiseringskode som fylles inn her. Du kan deretter fortsette din registrering.</p>
<form action="registrer" method="post">
	<input type="hidden" name="step" value="2" />
	<div class="registrer_felt">
		<boxes />
		<dl class="dd_right">
			<dt>Verifiseringskode</dt>
			<dd><input type="text" id="verife" name="e" value="' . htmlspecialchars(requestval("e")) . '" maxlength="32" class="styled w120" /></dd>
		</dl>
		<p class="c">' . show_sbutton("Valider", 'class="indent"') . '</p>
	</div>
	<p><a href="registrer">Tilbake</a></p>
</form>';
        }
    }
コード例 #2
0
ファイル: min_side_user.php プロジェクト: Kuzat/kofradia
    /**
     * Innstillinger
     */
    protected static function page_set()
    {
        global $__server;
        $subpage2 = getval("b");
        redirect::store(page_min_side::addr(NULL, $subpage2 != "" ? "b=" . $subpage2 : ''));
        ess::$b->page->add_title("Innstillinger");
        ess::$b->page->add_css('
.minside_set_links .active { color: #CCFF00 }');
        echo '
	<p class="c minside_set_links">
		<a href="' . htmlspecialchars(page_min_side::addr(NULL, "")) . '"' . ($subpage2 == "" ? ' class="active"' : '') . '>Generelt</a> |
		<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=email")) . '"' . ($subpage2 == "email" ? ' class="active"' : '') . '>Skift e-postadresse</a> |
		<a href="' . htmlspecialchars(page_min_side::addr(NULL, "b=pass")) . '"' . ($subpage2 == "pass" ? ' class="active"' : '') . '>Skift passord</a>
	</p>';
        // endre passord?
        if ($subpage2 == "pass") {
            ess::$b->page->add_title("Endre passord");
            // må logge inn med utvidede tilganger
            if (isset(login::$extended_access) && !login::$extended_access['authed']) {
                echo '
	<div class="bg1_c center" style="width: 350px">
		<h1 class="bg1">Skift passord<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />
			<p>Du må logge inn med utvidede tilganger for å få tilgang til denne funksjonen.</p>
		</div>
	</div>';
            } elseif (access::has("mod") && page_min_side::$active_user->id != login::$user->id) {
                // kan ikke endre denne brukerens passord?
                if (page_min_side::$active_user->data['u_access_level'] != 0 && page_min_side::$active_user->data['u_access_level'] != 1 && !access::has("sadmin")) {
                    echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Skift passord<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Du har ikke rettigheter til å endre passordet til denne brukeren. Kun senioradministrator kan gjøre det.</p>
		</div>
	</div>';
                } else {
                    // lagre passordet?
                    if (isset($_POST['pass'])) {
                        $pass = trim(postval("pass"));
                        $error = password::validate($pass, password::LEVEL_LOGIN);
                        $log = trim(postval("log"));
                        if ($error > 0) {
                            $errors = array();
                            if ($error & password::ERROR_SHORT) {
                                $errors[] = 'Passordet er for kort. Må være minimum 8 tegn.';
                            }
                            if ($error & password::ERROR_NONCAP || $error & password::ERROR_CAP || $error & password::ERROR_NUM) {
                                $errors[] = 'Passordet må inneholde både små bokstaver, store bokstaver og tall.';
                            }
                            ess::$b->page->add_message(implode('<br />', $errors), "error");
                        } elseif ($log == "") {
                            ess::$b->page->add_message("Mangler logg melding.", "error");
                        } else {
                            // samme passord?
                            if (password::verify_hash($pass, page_min_side::$active_user->data['u_pass'], 'user')) {
                                ess::$b->page->add_message("Passordet er det samme som nåværende. Velg et annet.", "error");
                            } else {
                                $pass_new = password::hash($pass, null, 'user');
                                // lagre endringer
                                \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******" WHERE u_id = " . page_min_side::$active_user->id);
                                // legg til crewlogg
                                crewlog::log("user_password", page_min_side::$active_player->id, $log, array("pass_old" => page_min_side::$active_user->data['u_pass'], "pass_new" => $pass_new));
                                ess::$b->page->add_message("Passordet ble endret.");
                            }
                        }
                    }
                    echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Endre passord<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p class="r">Tilgangsnivå: Moderator</p>
			<p>Her endrer du passordet til ' . page_min_side::$active_player->profile_link() . '.</p>
			<form action="" method="post" autocomplete="off">
				<dl class="dd_right dl_2x">
					<dt>Nytt passord</dt>
					<dd><input type="password" value="" name="pass" id="pass" class="styled w120" /></dd>
					<dt>Begrunnelse for endring</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
					<dd>' . show_sbutton("Lagre") . '</dd>
				</dl>
			</form>
		</div>
	</div>';
                }
            } else {
                // lagre passord
                if (isset($_POST['save_pass'])) {
                    // kontroller alle feltene
                    $pass_old = trim(postval("pass_old"));
                    $pass_new = trim(postval("pass_new"));
                    $pass_repeat = trim(postval("pass_repeat"));
                    // kontroller at alle feltene er fylt ut
                    if ($pass_old == "" || $pass_new == "" || $pass_repeat == "") {
                        ess::$b->page->add_message("Alle feltene må fylles ut.", "error");
                    } elseif (!password::verify_hash($pass_old, page_min_side::$active_user->data['u_pass'], 'user')) {
                        ess::$b->page->add_message("Det gamle passordet stemte ikke.", "error");
                    } elseif ($pass_new != $pass_repeat) {
                        ess::$b->page->add_message("De nye passordene var ikke like.", "error");
                    } elseif ($pass_old == $pass_new) {
                        ess::$b->page->add_message("Du må velge et nytt passord.", "error");
                    } elseif (mb_strlen($pass_new) < 6) {
                        ess::$b->page->add_message("Det nye passordet må inneholde minimum 6 tegn.", "error");
                    } elseif (password::validate($pass_new, password::LEVEL_LOGIN) != 0) {
                        ess::$b->page->add_message("Du må velge et vanskeligere passord.", "error");
                    } elseif (password::verify_hash($pass_new, page_min_side::$active_user->data['u_bank_auth'], 'bank_auth')) {
                        ess::$b->page->add_message("Velg et annet passord enn du har i banken.");
                    } else {
                        \Kofradia\DB::get()->exec("UPDATE users SET u_pass = "******" WHERE u_id = " . page_min_side::$active_user->id);
                        // melding
                        ess::$b->page->add_message("Passordet ble endret. Alle andre steder brukeren var logget inn er nå logget ut.");
                        putlog("NOTICE", "%bPASSORD-ENDRING%b: %u" . page_min_side::$active_player->data['up_name'] . "%u byttet passordet på sin bruker. {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                        // logg ut alle andre brukere
                        \Kofradia\DB::get()->exec("UPDATE sessions SET ses_active = 0, ses_logout_time = " . time() . " WHERE ses_active = 1 AND ses_u_id = " . page_min_side::$active_user->id . " AND ses_id != " . login::$info['ses_id']);
                        redirect::handle();
                    }
                }
                echo '
	<div class="bg1_c" style="width: 300px">
		<h1 class="bg1">Skift passord<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>For å kunne skifte passord må alle 3 feltene være fylt ut.</p>
			<form action="" method="post" autocomplete="off">
				<dl class="dd_right dl_2x">
					<dt>Nåværende passord</dt>
					<dd><input type="password" class="styled w100" name="pass_old" /></dd>
					<dt>Nytt passord</dt>
					<dd><input type="password" class="styled w100" name="pass_new" /></dd>
					<dt>Gjenta nytt passord</dt>
					<dd><input type="password" class="styled w100" name="pass_repeat" /></dd>
				</dl>
				<p class="c">' . show_sbutton("Skift passordet", 'name="save_pass"') . '</p>
			</form>
		</div>
	</div>';
            }
        } elseif ($subpage2 == "email") {
            // skifte e-postadresse?
            /* Trinn i skifte e-postadresse:
            				1. Skriver inn ønsket e-postadresse man vil skifte til
            				2. E-post blir sendt til gammel e-postadresse med info og link til validering
            				3. Validering av gammel e-postadresse (step 1)
            				4. E-post blir sendt til ny e-postadresse med info og link til validering
            				5. E-potadresse blir skiftet (step 2)
            			*/
            ess::$b->page->add_title("Skifte e-postadresse");
            // må logge inn med utvidede tilganger
            if (isset(login::$extended_access) && !login::$extended_access['authed']) {
                echo '
	<div class="bg1_c center" style="width: 350px">
		<h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />
			<p>Du må logge inn med utvidede tilganger for å få tilgang til denne funksjonen.</p>
		</div>
	</div>';
            } elseif (access::has("mod") && (page_min_side::$active_user->id != login::$user->id || isset($_GET['o']))) {
                // kan ikke endre denne brukerens e-postadresse?
                if (page_min_side::$active_user->data['u_access_level'] != 0 && page_min_side::$active_user->data['u_access_level'] != 1 && !access::has("sadmin")) {
                    echo '
	<div class="bg1_c" style="width: 350px">
		<h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<p>Du har ikke rettigheter til å skifte e-postadressen til denne brukeren. Kun senioradministrator kan gjøre det.</p>
		</div>
	</div>';
                } else {
                    // lagre ny e-post?
                    $email_ex = false;
                    if (isset($_POST['email'])) {
                        $email = trim(postval("email"));
                        $log = trim(postval("log"));
                        // sjekk om e-postadressen allerede er i bruk
                        $result = \Kofradia\DB::get()->query("SELECT u_id, up_id, up_name, up_access_level FROM users LEFT JOIN users_players ON up_id = u_active_up_id WHERE u_email = " . \Kofradia\DB::quote($email) . " AND u_access_level != 0");
                        $email_ex = $result->fetch();
                        // ikke gyldig e-postadresse?
                        if (!game::validemail($email)) {
                            ess::$b->page->add_message("Ugyldig e-postadresse.", "error");
                        } elseif (empty($log)) {
                            ess::$b->page->add_message("Du må fylle inn en loggmelding.", "error");
                        } elseif ($email == page_min_side::$active_user->data['u_email']) {
                            ess::$b->page->add_message("Du må skrive inn en ny e-postadresse.");
                        } elseif ($email_ex && !isset($_POST['ignore_ex'])) {
                            ess::$b->page->add_message("Denne e-posten er allerede i bruk av " . game::profile_link($email_ex['up_id'], $email_ex['up_name'], $email_ex['up_access_level']) . ". Bekreft at du ønsker å la begge brukerene ha denne e-postadresse, evt. endre til en annen e-postadresse.");
                        } else {
                            // lagre endringer
                            \Kofradia\DB::get()->exec("UPDATE users SET u_email = " . \Kofradia\DB::quote($email) . " WHERE u_id = " . page_min_side::$active_user->id);
                            // legg til crewlogg
                            crewlog::log("user_email", page_min_side::$active_player->id, $log, array("email_old" => page_min_side::$active_user->data['u_email'], "email_new" => $email));
                            // fjern mulige params for egen bytting av e-post
                            page_min_side::$active_user->params->remove("change_email_step");
                            page_min_side::$active_user->params->remove("change_email_new_address");
                            page_min_side::$active_user->params->remove("change_email_hash");
                            page_min_side::$active_user->params->remove("change_email_time", true);
                            ess::$b->page->add_message("E-postadressen ble endret.");
                            redirect::handle(page_min_side::addr(""));
                        }
                    }
                    echo '
	<div class="bg1_c center" style="width: 350px">
		<h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />
			<form action="" method="post" autocomplete="off">
				<dl class="dd_right dl_2x">
					<dt>Nåværende e-postadresse</dt>
					<dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd>
					<dt>Ny e-postadresse</dt>
					<dd><input type="text" value="' . htmlspecialchars(postval("email", page_min_side::$active_user->data['u_email'])) . '" name="email" id="email" class="styled w150" /></dd>
					<dt>Begrunnelse for endring</dt>
					<dd><textarea name="log" id="log" cols="30" rows="5">' . htmlspecialchars(postval("log")) . '</textarea></dd>
				</dl>
				<p class="c">' . ($email_ex ? show_sbutton("Lagre ny e-postadresse, ignorer advarsel", 'name="ignore_ex"') : show_sbutton("Lagre ny e-postadresse")) . '</p>
			</form>
		</div>
	</div>';
                }
            } else {
                // blokkert fra å skifte e-postadressen?
                $blokkering = blokkeringer::check(blokkeringer::TYPE_EPOST);
                if ($blokkering) {
                    ess::$b->page->add_message("Du er blokkert fra å skifte e-postadressen din. Blokkeringen varer til " . ess::$b->date->get($blokkering['ub_time_expire'])->format(date::FORMAT_SEC) . ".<br /><b>Begrunnelse:</b> " . game::format_data($blokkering['ub_reason'], "bb-opt", "Ingen begrunnelse gitt."), "error");
                    redirect::handle(page_min_side::addr(""));
                }
                // hent status
                $status = page_min_side::$active_user->params->get("change_email_step", false);
                $email_addr = page_min_side::$active_user->params->get("change_email_new_address");
                $html_pre = '
	<div class="bg1_c center" style="width: 350px">
		<h1 class="bg1">Skifte e-postadresse<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />';
                $html_suf = '
		</div>
	</div>';
                $in_use = false;
                $expire = false;
                if ($status) {
                    // se om e-postadressen allerede er i bruk
                    $result = \Kofradia\DB::get()->query("SELECT COUNT(u_id) FROM users WHERE u_email = " . \Kofradia\DB::quote($email_addr) . " AND u_access_level != 0");
                    $in_use = $result->fetchColumn(0) > 0;
                } elseif ($status && page_min_side::$active_user->params->get("change_email_time") + 86400 < time()) {
                    $expire = true;
                }
                // avbryte?
                if (isset($_POST['abort']) && $status || $in_use || $expire) {
                    if ($in_use) {
                        // logg
                        putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u kunne ikke skifte e-postadresse fordi den nye adressen er i bruk (ville skifte fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u" . $email_addr . "%u) {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                        // info
                        ess::$b->page->add_message("E-postadressen <b>" . htmlspecialchars($email_addr) . "</b> har blitt benyttet av en annen bruker. Du kan ikke skifte til denne e-postadressen.", "error");
                    } elseif ($expire) {
                        // logg
                        putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u kunne ikke skifte e-postadresse fordi det ble brukt for lang tid (egentlig startet " . ess::$b->date->get(page_min_side::$active_user->params->get("change_email_time"))->format() . ") (ville skifte fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u) {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                        // info
                        ess::$b->page->add_message("Du brukte for lang tid med å bekrefte e-postadressen. Skifting av e-post er avbrutt.", "error");
                    } else {
                        // logg
                        putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u avbrøt skifting av e-postadresse (ville skifte fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u) {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                        // info
                        ess::$b->page->add_message("Du har avbrutt skifting av e-postadresse.");
                    }
                    // fjern fra params
                    page_min_side::$active_user->params->remove("change_email_step");
                    page_min_side::$active_user->params->remove("change_email_new_address");
                    page_min_side::$active_user->params->remove("change_email_hash");
                    page_min_side::$active_user->params->remove("change_email_time", true);
                    redirect::handle();
                }
                // behandle trinn 1
                if (isset($_GET['old'])) {
                    // er ikke på trinn 1 eller feil kode?
                    if ($status != 1 || page_min_side::$active_user->params->get("change_email_hash") != $_GET['old']) {
                        ess::$b->page->add_message("E-posten du har blitt henvist fra gjelder ikke lenger.", "error");
                        redirect::handle();
                    }
                    // gå videre til neste trinn?
                    if (isset($_POST['continue']) && validate_sid(false)) {
                        // generer kode
                        $hash = mb_substr(md5(uniqid("kofradia_")), 0, 16);
                        // sett status
                        page_min_side::$active_user->params->update("change_email_step", 2);
                        page_min_side::$active_user->params->update("change_email_new_address", $email_addr);
                        page_min_side::$active_user->params->update("change_email_hash", $hash);
                        page_min_side::$active_user->params->update("change_email_time", time(), true);
                        // send e-post til nye e-posten
                        $email = new email();
                        $email->text = 'Hei,

Du har bedt om å skifte e-postadressen for din spiller ' . page_min_side::$active_player->data['up_name'] . ' på ' . $__server['path'] . '.
Den gamle e-postadressen har blitt bekreftet.

Gammel/nåværende e-postadresse: ' . page_min_side::$active_user->data['u_email'] . '
Ny e-postadresse: ' . $email_addr . '

For å godta eller avslå dette gå inn på følgende adresse:
' . $__server['path'] . '/min_side?u&a=set&b=email&new=' . $hash . '

--
www.kofradia.no';
                        $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR'];
                        $email->headers['Reply-To'] = "*****@*****.**";
                        $email->send($email_addr, "Skifte e-postadresse (bekrefte ny adresse)");
                        // logg
                        putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u har bekreftet gammel e-postadresse (%u" . page_min_side::$active_user->data['u_email'] . "%u) og skal nå bekrefte %u{$email_addr}%u {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                        // info
                        ess::$b->page->add_message("En e-post har blitt sendt til <b>" . htmlspecialchars($email_addr) . "</b> for bekreftelse.");
                        redirect::handle();
                    }
                    echo $html_pre . '
		<p>Du har bekreftet nåværende e-postadresse.</p>
		<dl class="dd_right">
			<dt>Nåværende e-postadresse</dt>
			<dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd>
			<dt>Ny ønsket e-postadresse</dt>
			<dd>' . htmlspecialchars($email_addr) . '</dd>
		</dl>
		<p><u>Du må nå bekrefte den nye e-postadressen.</u></p>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<p class="c">
				' . show_sbutton("Send e-post for bekreftelse", 'name="continue"') . '
				' . show_sbutton("Avbryt", 'name="abort"') . '
			</p>
		</form>' . $html_suf;
                } elseif (isset($_GET['new'])) {
                    // er ikke på trinn 2 eller feil kode?
                    if ($status != 2 || page_min_side::$active_user->params->get("change_email_hash") != $_GET['new']) {
                        ess::$b->page->add_message("E-posten du har blitt henvist fra gjelder ikke lenger.", "error");
                        redirect::handle();
                    }
                    // fullføre skifting av e-postadresse?
                    if (isset($_POST['confirm']) && validate_sid(false)) {
                        $note = trim(postval("note"));
                        // mangler logg?
                        if ($note == "") {
                            ess::$b->page->add_message("Mangler begrunnelse.");
                        } else {
                            // lagre endringer
                            \Kofradia\DB::get()->exec("UPDATE users SET u_email = " . \Kofradia\DB::quote($email_addr) . " WHERE u_id = " . page_min_side::$active_user->id);
                            // legg til crewlogg
                            crewlog::log("user_email", page_min_side::$active_player->id, $note, array("email_old" => page_min_side::$active_user->data['u_email'], "email_new" => $email_addr));
                            // logg
                            putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u skiftet e-postadresse fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u" . $email_addr . "%u {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                            // info
                            ess::$b->page->add_message("E-postadressen ble skiftet fra <b>" . htmlspecialchars(page_min_side::$active_user->data['u_email']) . "</b> til <b>" . htmlspecialchars($email_addr) . "</b>.");
                            // fjern fra params
                            page_min_side::$active_user->params->remove("change_email_step");
                            page_min_side::$active_user->params->remove("change_email_new_address");
                            page_min_side::$active_user->params->remove("change_email_hash");
                            page_min_side::$active_user->params->remove("change_email_time", true);
                            redirect::handle();
                        }
                    }
                    echo $html_pre . '
		<p>Du har bekreftet både den nåværende og den nye e-postadressen.</p>
		<dl class="dd_right">
			<dt>Nåværende e-postadresse</dt>
			<dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd>
			<dt>Ny ønsket e-postadresse</dt>
			<dd><b><u>' . htmlspecialchars($email_addr) . '</u></b></dd>
		</dl>
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<dl class="dd_right">
				<dt>Begrunnelse</dt>
				<dd><textarea name="note" rows="5" cols="10" class="w200">' . htmlspecialchars(postval("note")) . '</textarea></dd>
			</dl>
			<p class="c">
				' . show_sbutton("Skift e-postadresse", 'name="confirm"') . '
				' . show_sbutton("Avbryt", 'name="abort"') . '
			</p>
		</form>' . $html_suf;
                } elseif (!$status) {
                    // velge ny e-postadresse
                    if (isset($_POST['new_email']) && validate_sid(false)) {
                        // se om e-postadressen allerede er i bruk
                        $result = \Kofradia\DB::get()->query("SELECT COUNT(u_id) FROM users WHERE u_email = " . \Kofradia\DB::quote($_POST['new_email']) . " AND u_access_level != 0");
                        $in_use = $result->fetchColumn(0) > 0;
                        // valider e-post
                        $email_addr = $_POST['new_email'];
                        $email_valid = game::validemail($email_addr);
                        // kontroller om e-postadressen eller domenet er blokkert
                        if ($email_valid) {
                            $pos = mb_strpos($email_addr, "@");
                            $domain = mb_strtolower(mb_substr($email_addr, $pos + 1));
                            $result = \Kofradia\DB::get()->query("SELECT eb_id, eb_type FROM email_blacklist WHERE (eb_type = 'address' AND eb_value = " . \Kofradia\DB::quote($email_addr) . ") OR (eb_type = 'domain' AND eb_value = " . \Kofradia\DB::quote($domain) . ") ORDER BY eb_type = 'address' LIMIT 1");
                            $error_email = $result->fetch();
                        }
                        // ugyldig e-postadresse?
                        if (!$email_valid) {
                            ess::$b->page->add_message("Ugyldig e-postadresse.", "error");
                        } elseif ($in_use) {
                            putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u forsøkte å skifte e-postadresse fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u som allerde er i bruk {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                            ess::$b->page->add_message("E-posten du ønsker å skifte til er allerede benyttet av en annen bruker.");
                        } elseif ($error_email) {
                            if ($error_email['eb_type'] == "address") {
                                ess::$b->page->add_message("E-postadressen <b>" . htmlspecialchars($email_addr) . "</b> er blokkert og kan ikke benyttes.", "error");
                            } else {
                                ess::$b->page->add_message("Domenet <b>" . htmlspecialchars($domain) . "</b> er blokkert og kan ikke benyttes.", "error");
                            }
                        } else {
                            // generer kode
                            $hash = mb_substr(md5(uniqid("kofradia_")), 0, 16);
                            // sett status
                            page_min_side::$active_user->params->update("change_email_step", 1);
                            page_min_side::$active_user->params->update("change_email_new_address", $email_addr);
                            page_min_side::$active_user->params->update("change_email_hash", $hash);
                            page_min_side::$active_user->params->update("change_email_time", time(), true);
                            // send e-post til gamle e-posten
                            $email = new email();
                            $email->text = 'Hei,

Du har bedt om å skifte e-postadressen for din spiller ' . page_min_side::$active_player->data['up_name'] . ' på ' . $__server['path'] . '.

Gammel/nåværende e-postadresse: ' . page_min_side::$active_user->data['u_email'] . '
Ny e-postadresse: ' . $email_addr . '

For å godta eller avslå dette gå inn på følgende adresse:
' . $__server['path'] . '/min_side?u&a=set&b=email&old=' . $hash . '

--
www.kofradia.no';
                            $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR'];
                            $email->headers['Reply-To'] = "*****@*****.**";
                            $email->send(page_min_side::$active_user->data['u_email'], "Skifte e-postadresse (bekrefte gammel adresse)");
                            // logg
                            putlog("CREWCHAN", "%u" . page_min_side::$active_player->data['up_name'] . "%u har startet skifting av e-postadresse fra %u" . page_min_side::$active_user->data['u_email'] . "%u til %u{$email_addr}%u {$__server['path']}/min_side?u_id=" . page_min_side::$active_user->id);
                            // info
                            ess::$b->page->add_message("En e-post har blitt sendt til <b>" . htmlspecialchars(page_min_side::$active_user->data['u_email']) . "</b> for bekreftelse.");
                            redirect::handle();
                        }
                    }
                    echo $html_pre . '
		<form action="" method="post">
			<input type="hidden" name="sid" value="' . login::$info['ses_id'] . '" />
			<dl class="dd_right">
				<dt>Nåværende e-postadresse</dt>
				<dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd>
				<dt>Ny ønsket e-postadresse</dt>
				<dd><input type="text" name="new_email" value="' . htmlspecialchars(postval("new_email", "")) . '" class="styled w150" /></dd>
			</dl>
			<p>Du vil motta en e-post for bekreftelse på den gamle e-postadressen, for deretter å få en bekreftelse på den nye før e-postadressen blir skiftet.</p>
			<p>Husk at du ikke har lov til å gi bort eller selge brukeren til andre personer. <u>Brukeren skal ikke brukes av andre enn deg.</u></p>
			<p class="c">' . show_sbutton("Fortsett") . '</p>' . (access::has("mod") ? '
			<p class="c"><a href="' . htmlspecialchars(page_min_side::addr("set", "b=email&o")) . '">Endre e-postadresse som moderator</a></p>' : '') . '
		</form>' . $html_suf;
                } else {
                    echo $html_pre . '
		<p>Du er i ferd med å skifte e-postadresse for brukeren din.</p>
		<p>Informasjon:</p>
		<dl class="dd_right">
			<dt>Nåværende e-postadresse</dt>
			<dd>' . htmlspecialchars(page_min_side::$active_user->data['u_email']) . '</dd>
			<dt>Ny ønsket e-postadresse</dt>
			<dd>' . htmlspecialchars($email_addr) . '</dd>
			<dt>Status</dt>
			<dd>' . ($status == 1 ? 'Venter på bekreftelse av <b>gammel</b> e-postadresse.' : 'Venter på bekreftelse av <b>ny</b> e-postadresse') . '</dd>
		</dl>
		<form action="" method="post">
			<p class="c">' . show_sbutton("Avbryt", 'name="abort"') . '</p>
		</form>' . $html_suf;
                }
            }
        } elseif ($subpage2 == "") {
            // lagre innstillinger?
            if (isset($_POST['save'])) {
                if (page_min_side::$active_user->id != login::$user->id && !access::has("sadmin")) {
                    ess::$b->page->add_message("Du har ikke tilgang til å redigere disse innstillingene for andre brukere.", "error");
                    redirect::handle();
                }
                $show_signature = LOCK ? page_min_side::$active_user->data['u_forum_show_signature'] : (isset($_POST['show_signature']) ? 1 : 0);
                $forum_page = LOCK ? page_min_side::$active_user->data['u_forum_per_page'] : max(5, min(100, intval(postval("forum_page"))));
                $force_ssl = isset($_POST['force_ssl']) ? 1 : 0;
                $music_auto = LOCK ? page_min_side::$active_user->data['u_music_auto'] : (isset($_POST['music']) && $_POST['music'] == "auto" ? 1 : 0);
                $music_manual = LOCK ? page_min_side::$active_user->params->get("music_manual") ? true : false : isset($_POST['music']) && $_POST['music'] == "manual";
                $hide_progressbar_left = LOCK ? page_min_side::$active_user->params->get("hide_progressbar_left") ? true : false : isset($_POST['hide_progressbar_left']);
                $changed = false;
                $user_change = array();
                if ($force_ssl != page_min_side::$active_user->data['u_force_ssl']) {
                    $user_change[] = "u_force_ssl = {$force_ssl}";
                }
                if ($music_auto != page_min_side::$active_user->data['u_music_auto']) {
                    $user_change[] = "u_music_auto = {$music_auto}";
                }
                if ($show_signature != page_min_side::$active_user->data['u_forum_show_signature']) {
                    $user_change[] = "u_forum_show_signature = {$show_signature}";
                }
                if ($forum_page != page_min_side::$active_user->data['u_forum_per_page']) {
                    $user_change[] = "u_forum_per_page = {$forum_page}";
                }
                if ($hide_progressbar_left != (page_min_side::$active_user->params->get("hide_progressbar_left") ? true : false)) {
                    if (!$hide_progressbar_left) {
                        page_min_side::$active_user->params->remove("hide_progressbar_left");
                    } else {
                        page_min_side::$active_user->params->update("hide_progressbar_left", "1");
                    }
                    $changed = true;
                }
                if ($music_manual != (page_min_side::$active_user->params->get("music_manual") ? true : false)) {
                    if (!$music_manual) {
                        page_min_side::$active_user->params->remove("music_manual");
                    } else {
                        page_min_side::$active_user->params->update("music_manual", "1");
                    }
                    $changed = true;
                }
                if ($changed) {
                    page_min_side::$active_user->params->commit();
                }
                // noe som skal endres?
                if (count($user_change) > 0) {
                    \Kofradia\DB::get()->exec("UPDATE users SET " . implode(", ", $user_change) . " WHERE u_id = " . page_min_side::$active_user->id);
                    $changed = true;
                }
                if ($changed) {
                    ess::$b->page->add_message("Endringene ble lagret.");
                } else {
                    ess::$b->page->add_message("Ingen endringer ble utført.");
                }
                redirect::handle();
            }
            ess::$b->page->add_css('
.minside_set { margin: 0 20px; background-color: #222222; padding: 1px 5px }
.minside_set p { margin: 5px 0 }');
            echo '
	<div class="bg1_c" style="width: 400px">
		<h1 class="bg1">Innstillinger<span class="left2"></span><span class="right2"></span></h1>
		<div class="bg1">
			<boxes />
			<form action="" method="post">
				<p><b>Forumalternativer:</b></p>
				<div class="minside_set">
					<p><input type="checkbox" name="show_signature" id="show_signature"' . (page_min_side::$active_user->data['u_forum_show_signature'] != 0 ? ' checked="checked"' : '') . ' /><label for="show_signature"> Vis signaturer i forumet</label></p>
					<p>Antall foruminnlegg per side: <input type="text" name="forum_page" maxlength="2" value="' . page_min_side::$active_user->data['u_forum_per_page'] . '" class="styled w40" /></p>
				</div>
				
				<p><b>Sikkerhet:</b></p>
				<div class="minside_set">
					<p><input type="checkbox" name="force_ssl" id="force_ssl"' . (page_min_side::$active_user->data['u_force_ssl'] != 0 ? ' checked="checked"' : '') . ' /><label for="force_ssl"> Alltid benytt sikker tilkobling (SSL)</label>' . (page_min_side::$active_user->data['u_access_level'] != 0 && page_min_side::$active_user->data['u_access_level'] != 1 ? ' <span class="dark">(Som crew benytter du uansett alltid SSL.)</span>' : '') . '</p>
				</div>
				
				<p><b>Spillinnstillinger:</b></p>
				<div class="minside_set">
					<p><input type="checkbox" name="hide_progressbar_left" id="hide_progressbar_left"' . (page_min_side::$active_user->params->get("hide_progressbar_left") ? ' checked="checked"' : '') . ' /><label for="hide_progressbar_left"> Skjul &laquo;Rank&raquo; og &laquo;Wanted nivå&raquo; fra toppen av siden</label></p>
				</div>
				
				<p><b>Annet:</b></p>
				<div class="minside_set">
					<p>Musikkalternativer:<br />
						<input type="radio" name="music" value="auto" id="music_auto"' . (!page_min_side::$active_user->params->get("music_manual") && page_min_side::$active_user->data['u_music_auto'] ? ' checked="checked"' : '') . ' /><label for="music_auto"> Spill av musikk automatisk</label><br />
						<input type="radio" name="music" value="preload" id="music_preload"' . (!page_min_side::$active_user->params->get("music_manual") && !page_min_side::$active_user->data['u_music_auto'] ? ' checked="checked"' : '') . ' /><label for="music_preload"> Last inn musikkfil, men ikke spill av automatisk</label><br />
						<input type="radio" name="music" value="manual" id="music_manual"' . (page_min_side::$active_user->params->get("music_manual") ? ' checked="checked"' : '') . ' /><label for="music_manual"> Ikke last inn musikkfil -- trykk på spiller for å laste inn</label>
					</p>
				</div>' . (page_min_side::$active_user->id != login::$user->id ? '
				<p class="c">Du har ikke tilgang til å endre disse innstillingene</p>' : '
				<p class="c">' . show_sbutton("Lagre endringer", 'name="save"') . '</p>') . '
			</form>
		</div>
	</div>';
        }
    }
コード例 #3
0
ファイル: henvendelser.php プロジェクト: Kuzat/kofradia
    }
}
// ny henvendelse?
$preview = false;
if (isset($_POST['new']) && (isset($_POST['add']) || isset($_POST['preview']))) {
    $category = postval("category");
    $name = trim(postval("name"));
    $email = $user ? $user : trim(postval("email"));
    $subject = trim(postval("subject"));
    $content = trim(postval("content"));
    // sjekk kategori
    if (!isset($categories[$category])) {
        $_base->page->add_message("Du må velge en kategori.", "error");
    } elseif (mb_strlen($name) == 0) {
        $_base->page->add_message("Du må fylle ut et navn.", "error");
    } elseif (!game::validemail($email)) {
        $_base->page->add_message("Du må skrive inn en gyldig e-postadresse.", "error");
    } elseif (mb_strlen($subject) == 0) {
        $_base->page->add_message("Du må fylle ut et emne.", "error");
    } elseif (mb_strlen($content) < 20) {
        $_base->page->add_message("Henvendelsen kan ikke inneholde mindre enn 20 tegn.", "error");
    } elseif (isset($_POST['preview'])) {
        $preview = true;
        $_base->page->add_message("Viser forhåndsvisning.");
    } else {
        // legg til hovedoppføring
        $random = rand(10000, 99999);
        \Kofradia\DB::get()->exec("INSERT INTO henvendelser SET h_name = " . \Kofradia\DB::quote($name) . ", h_category = " . \Kofradia\DB::quote($categories[$category]) . ", h_email = " . \Kofradia\DB::quote($email) . ", h_subject = " . \Kofradia\DB::quote($subject) . ", h_time = " . time() . ", h_hm_time = " . time() . ", h_random = {$random}");
        $h_id = \Kofradia\DB::get()->lastInsertId();
        // legg til meldingen
        \Kofradia\DB::get()->exec("INSERT INTO henvendelser_messages SET hm_h_id = {$h_id}, hm_content = " . \Kofradia\DB::quote($content) . ", hm_time = " . time() . ", hm_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . ", hm_up_id = " . (login::$logged_in ? login::$user->player->id : "NULL") . ", hm_browser = " . \Kofradia\DB::quote($_SERVER['HTTP_USER_AGENT']));
コード例 #4
0
ファイル: email_blacklist.php プロジェクト: Kuzat/kofradia
    /**
     * Opprette ny oppføring
     */
    protected function add()
    {
        // opprette?
        if (isset($_POST['eb_type'])) {
            $type = $_POST['eb_type'];
            $value = trim(postval("eb_value"));
            $note = trim(postval("eb_note"));
            // ugyldig type?
            if ($type != "address" && $type != "domain") {
                ess::$b->page->add_message("Ugyldig type.", "error");
            } elseif ($type == "address" && !game::validemail($value)) {
                ess::$b->page->add_message("Verdien du skrev inn er ikke en gyldig e-postadresse.", "error");
            } elseif ($type == "domain" && !preg_match("/^[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]\$/Diu", $value)) {
                ess::$b->page->add_message("Verdien du skrev inn er ikke et gyldig domenenavn eller underdomene.", "error");
            } else {
                // sjekk om den allerede eksisterer
                $result = \Kofradia\DB::get()->query("SELECT eb_time, eb_up_id FROM email_blacklist WHERE eb_type = " . \Kofradia\DB::quote($type) . " AND eb_value = " . \Kofradia\DB::quote($value));
                $row = $result->fetch();
                if ($row) {
                    ess::$b->page->add_message('En identisk oppføring ble lagt til av <user id="' . $row['eb_up_id'] . '" /> ' . ess::$b->date->get($row['eb_time'])->format() . '.', "error");
                } else {
                    // opprett oppføringen
                    \Kofradia\DB::get()->exec("INSERT INTO email_blacklist SET eb_type = " . \Kofradia\DB::quote($type) . ", eb_value = " . \Kofradia\DB::quote($value) . ", eb_time = " . time() . ", eb_up_id = " . login::$user->player->id . ", eb_note = " . \Kofradia\DB::quote($note));
                    // logg
                    putlog("CREWCHAN", "E-POST BLOKKERING: " . login::$user->player->data['up_name'] . " la til oppføringen {$value} ({$type})");
                    ess::$b->page->add_message("Oppføringen ble lagt til.");
                    redirect::handle();
                }
            }
        }
        ess::$b->page->add_title("Ny blokkering");
        ess::$b->page->add_js_domready('$("eb_value").focus();');
        echo '
<div class="bg1_c xsmall">
	<h1 class="bg1">Ny blokkering av e-post<span class="left"></span><span class="right"></span></h1>
	<div class="bg1">
		<p class="c"><a href="email_blacklist">Tilbake</a></p>
		<form action="" method="post">
			<dl class="dd_right">
				<dt>Type</dt>
				<dd>
					<select name="eb_type">
						<option value="address"' . (postval("eb_type") == "address" ? ' selected="selected"' : '') . '>Spesifikk e-post</option>
						<option value="domain"' . (postval("eb_type") == "domain" || !isset($_POST['eb_type']) ? ' selected="selected"' : '') . '>Domenenavn</option>
					</select>
				</dd>
				<dt>Verdi</dt>
				<dd><input type="text" name="eb_value" id="eb_value" class="styled w150" value="' . htmlspecialchars(postval("eb_value")) . '" /></dd>
				<dt>Notat</dt>
				<dd><textarea name="eb_note" rows="3" cols="30">' . htmlspecialchars(postval("eb_note")) . '</textarea></dd>
			</dl>
			<p class="c">' . show_sbutton("Legg til") . '</p>
		</form>
	</div>
</div>';
    }