Пример #1
0
    function step4()
    {
        global $__server, $_game;
        // er skjemaet sendt inn?
        if ($_SERVER['REQUEST_METHOD'] == "POST") {
            // sjekk for gyldig trinn
            if (!isset($_POST['step']) || $_POST['step'] != 4) {
                redirect::handle();
            }
            // betingelser, alder, forste_bruker
            $betingelser = isset($_POST['betingelser']);
            $alder = isset($_POST['alder']);
            $forste_bruker = isset($_POST['forste_bruker']);
            // er ikke betingelsene godtatt?
            if (!$betingelser) {
                ess::$b->page->add_message("Hvis du ikke godtar betingelsene kan du dessverre ikke registrere deg her.", "error");
            } elseif (!$alder) {
                ess::$b->page->add_message("Hvis du ikke har fylt 13 år kan du dessverre ikke registrere deg her.", "error");
            } elseif (!$forste_bruker) {
                ess::$b->page->add_message("Hvis du allerede har en bruker fra før så bruk den! Å opprette ny konto gjør det bare dumt for deg selv og kan i værste tilfelle føre til politianmeldelse.", "error");
            } else {
                // finn en tilfeldig bydel
                $result = \Kofradia\DB::get()->query("SELECT id FROM bydeler WHERE active = 1 ORDER BY RAND()");
                $bydel = $result->fetchColumn(0);
                // sett opp nødvendig info
                $user = \Kofradia\DB::quote($this->info['user']);
                $pass = \Kofradia\DB::quote($this->info['pass']);
                $email = \Kofradia\DB::quote($this->info['email']);
                $referer = \Kofradia\DB::quote($this->info['referer']);
                $tos_version = intval(game::$settings['tos_version']['value']);
                $birth = \Kofradia\DB::quote($this->info['birth']);
                $recruiter = array("up_id" => 'NULL', "up_u_id" => 'NULL');
                global $__server;
                // er denne brukeren vervet?
                if (isset($_COOKIE[$__server['cookie_prefix'] . "rid"])) {
                    $rid = $_COOKIE[$__server['cookie_prefix'] . "rid"];
                    // finnes denne brukeren?
                    $result = \Kofradia\DB::get()->query("SELECT up_id, up_u_id FROM users_players WHERE up_id = " . \Kofradia\DB::quote($rid));
                    if ($row = $result->fetch()) {
                        $recruiter = $row;
                    }
                }
                \Kofradia\DB::get()->beginTransaction();
                // deaktiver kontroll av foreign key
                \Kofradia\DB::get()->exec("SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0");
                // opprett bruker
                $time = time();
                \Kofradia\DB::get()->exec("INSERT INTO users SET u_email = {$email}, u_pass = {$pass}, u_birth = {$birth}, u_tos_version = {$tos_version}, u_created_time = {$time}, u_created_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . ", u_created_referer = {$referer}, u_recruiter_u_id = {$recruiter['up_u_id']}, u_recruiter_points_last = 0");
                $u_id = \Kofradia\DB::get()->lastInsertId();
                // opprett spiller og tilknytt brukeren
                \Kofradia\DB::get()->exec("INSERT INTO users_players SET up_u_id = {$u_id}, up_name = {$user}, up_created_time = {$time}, up_recruiter_up_id = {$recruiter['up_id']}, up_b_id = {$bydel}");
                $up_id = \Kofradia\DB::get()->lastInsertId();
                \Kofradia\DB::get()->exec("UPDATE users SET u_active_up_id = {$up_id} WHERE u_id = {$u_id}");
                // aktiver kontroll av foreign key
                \Kofradia\DB::get()->exec("SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS");
                // sett opp riktig rank plassering
                #\Kofradia\DB::get()->exec("UPDATE users_players AS main, (SELECT COUNT(users_players.up_id)+1 AS pos, ref.up_id FROM users_players AS ref LEFT JOIN users_players ON users_players.up_points > ref.up_points AND users_players.up_access_level < {$_game['access_noplay']} AND users_players.up_access_level != 0 WHERE ref.up_id = $up_id GROUP BY ref.up_id) AS rp SET main.up_rank_pos = rp.pos WHERE main.up_id = rp.up_id");
                \Kofradia\DB::get()->exec("INSERT INTO users_players_rank SET upr_up_id = {$up_id}");
                ranklist::update();
                // slett registrasjonsoppføringen
                \Kofradia\DB::get()->exec("DELETE FROM registration WHERE id = {$this->id}");
                \Kofradia\DB::get()->commit();
                // send e-post
                $email = new email();
                $email->text = 'Hei,

Du har registrert deg som ' . $this->info['user'] . ' på Kofradia.

Velkommen til spillet!

--
www.kofradia.no';
                $email->headers['X-SMafia-IP'] = $_SERVER['REMOTE_ADDR'];
                $email->headers['Reply-To'] = "*****@*****.**";
                $email->send($this->info['email'], "Velkommen til Kofradia");
                ess::$b->page->add_message('Velkommen til Kofradia!<br /><br />Du er nå registrert som <b>' . $this->info['user'] . '</b> og automatisk logget inn.<br /><br />Sjekk ut menyen til venstre så ser du hva vi har å tilby i dag.<br /><br />Hvis du har noen spørsmål ta en titt under <a href="' . ess::$s['relative_path'] . '/node">hjelp</a> og ta evt. kontakt med <a href="support/">support</a> om du ikke finner svar på det du lurer på!<br /><br />Ikke glem og les gjennom <a href="' . ess::$s['relative_path'] . '/node/6">reglene for forumene</a> før du skriver i forumet. Lykke til i spillet!');
                // hent antall medlemmer
                $result = \Kofradia\DB::get()->query("SELECT COUNT(up_id) FROM users_players WHERE up_access_level < {$_game['access_noplay']} AND up_access_level != 0");
                putlog("INFO", "%bNY SPILLER:%b (#{$up_id} - Nummer %b" . $result->fetchColumn(0) . "%b) %u{$this->info['user']}%u registrerte seg! {$__server['absolute_path']}{$__server['relative_path']}/p/" . rawurlencode($this->info['user']));
                // logg inn brukeren
                login::do_login($u_id, $this->info['pass'], LOGIN_TYPE_TIMEOUT, false);
                // slett registrasjonsoppføringen fra session etc
                $this->trash();
                // sjekk om det er mulig multi
                $result = \Kofradia\DB::get()->query("\n\t\t\t\t\tSELECT up_name\n\t\t\t\t\tFROM users_players, users\n\t\t\t\t\tWHERE u_online_ip = " . \Kofradia\DB::quote($_SERVER['REMOTE_ADDR']) . "\n\t\t\t\t\t\tAND u_id != {$u_id}\n\t\t\t\t\t\tAND u_active_up_id = up_id AND up_access_level != 0\n\t\t\t\t\t\tAND up_last_online > " . (time() - 86400 * 30) . "\n\t\t\t\t\tLIMIT 10");
                if ($result->rowCount() > 0) {
                    $names = array();
                    while ($row = $result->fetch()) {
                        $names[] = $row['up_name'];
                    }
                    putlog("CREWCHAN", "%b%c4NY REGISTERT, MULIG MULTI:%c%b (#{$up_id}) %u{$this->info['user']}%u registrerte seg. Andre spillere på IP-en: " . implode(", ", $names) . ". {$__server['path']}/admin/brukere/finn?ip=" . rawurlencode($_SERVER['REMOTE_ADDR']));
                }
                // videresend til hovedsiden
                redirect::handle("", redirect::ROOT);
            }
        }
        echo '
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<h1>Bekreftelse av betingelsene</h1>
	<p class="h_right">' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '</p>
</form>
<p>
	På denne siden finner du en oversikt over betingelsene. Betingelsene er ikke lange og er kjapt å lese igjennom. Det er viktig at du er klar over innholdet i disse betingelsene og at du følger dem. Følger du ikke disse betingelsene vil brukeren din bli deaktivert. For å kunne opprette må du godta betingelsene.
</p>
<boxes />
<form action="registrer" method="post">
	<input type="hidden" name="step" value="4" />
	<p>
		Betingelser:<br />
		<div id="betingelser_content">' . game::$settings['tos']['value'] . '</div>
	</p>
	<p>
		<input type="checkbox" name="betingelser" id="betingelser" /><label for="betingelser"> Jeg har lest gjennom og aksepterer betingelsene</label>
	</p>
	<p>
		<input type="checkbox" name="alder" id="alder" /><label for="alder"> Jeg har fylt 13 år</label>
	</p>
	<p>
		<input type="checkbox" name="forste_bruker" id="forste_bruker" /><label for="forste_bruker"> Jeg har ingen bruker som er aktivert fra før av</label> <span class="dark">(Hvis du allerede har en bruker, må du deaktivere den <u>før</u> du registrerer deg på nytt.)</span>
	</p>
	<p>
		' . show_sbutton("Opprett bruker") . '
	</p>
</form>
<form action="registrer" method="post">
	<input type="hidden" name="abort" />
	<p>
		' . show_sbutton("Avbryt registrering", 'onclick="return confirm(\'Er du sikker på at du vil AVBRYTE?\')"') . '
	</p>
</form>';
    }
Пример #2
0
 function run($params)
 {
     return login::do_login($params);
 }
Пример #3
0
 public function action_index()
 {
     // vis feilmelding hvis noen
     if ($err = $this->show_errors()) {
         return $err;
     }
     #ess::$b->page->add_title("Logg inn");
     #ess::$b->page->theme_file = "logginn";
     // tillate logginn uten passord
     $devlogin = !MAIN_SERVER;
     if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['id'])) {
         // skjekk logg inn formen
         $err = false;
         $id = postval("id");
         $pass = postval("passord");
         if (empty($id) && empty($pass) && !$devlogin) {
             \ess::$b->page->add_message("Mangler ID og passord.", "error", 'login');
             $err = true;
         } elseif (empty($id)) {
             // mangler id
             \ess::$b->page->add_message("Mangler ID.", "error", 'login');
             $err = true;
         } elseif (empty($pass) && !$devlogin) {
             // mangler passord
             \ess::$b->page->add_message("Mangler passord.", "error", 'login');
             $err = true;
         }
         $type = intval(postval('expire_type'));
         if ($type < 0 || $type > 2) {
             // ugyldig expire type
             \ess::$b->page->add_message("Ugyldig expire type!", "error", 'login');
             $err = true;
         }
         // sikker tilkobling?
         $secure_only = isset($_POST['secure_only']);
         if (!$err) {
             // prøv å logg inn
             switch (\login::do_login($id, $pass, $type, true, $secure_only, $devlogin)) {
                 case LOGIN_ERROR_USER_OR_PASS:
                     \ess::$b->page->add_message("Feil ID" . (!$devlogin ? ' eller passord' : '') . ".", "error", 'login');
                     // logg
                     putlog("ABUSE", "%c4%bUGYLDIG BRUKERNAVN/PASSORD:%b%c {$_SERVER['REMOTE_ADDR']} forsøkte å logge inn med ID %u{$id}%u!");
                     break;
                     // utestengt
                 // utestengt
                 case LOGIN_ERROR_ACTIVATE:
                     global $uid;
                     // hent begrunnelse og info
                     $result = \Kofradia\DB::get()->query("SELECT u_id, u_email, u_deactivated_reason, u_deactivated_time, up_name FROM users LEFT JOIN users_players ON up_id = u_active_up_id WHERE u_id = {$uid}");
                     $info = $result->fetch();
                     $_SESSION[$GLOBALS['__server']['session_prefix'] . 'login_error'] = array("deactivated", $info);
                     putlog("ABUSE", "%c8%bLOGG INN - DEAKTIVERT%b%c: %u{$_SERVER['REMOTE_ADDR']}%u forsøkte å logge inn på %u{$info['u_email']}%u som er en deaktivert bruker!");
                     // send til feilside
                     \redirect::handle("", \redirect::ROOT);
                     break;
                 default:
                     if (!\login::$logged_in) {
                         \ess::$b->page->add_message("Ukjent innloggingsfeil!", "error");
                     } else {
                         // logget inn
                         putlog("NOTICE", "%c7%bLOGG INN%b%c: (%u{$_SERVER['REMOTE_ADDR']}%u) %u" . \login::$user->player->data['up_name'] . "%u (" . \login::$user->data['u_email'] . ") ({$_SERVER['HTTP_USER_AGENT']}) " . \ess::$s['path'] . "/min_side?up_id=" . \login::$user->player->id);
                         if (isset($_GET['orign'])) {
                             \redirect::handle($_GET['orign'], \redirect::SERVER, \login::$info['ses_secure']);
                         }
                         \redirect::handle("", NULL, \login::$info['ses_secure']);
                     }
             }
         }
     }
     // spør brukeren etter en spesifikk side?
     if (isset($_GET['orign']) && $_GET['orign'] != "/") {
         \ess::$b->page->add_message("Du må logge inn for å se denne siden.", "error", 'login');
     }
     // sett opp e-posten vi ber om
     $id = '';
     if (isset($_SESSION[$GLOBALS['__server']['session_prefix'] . 'logginn_id'])) {
         $id = $_SESSION[$GLOBALS['__server']['session_prefix'] . 'logginn_id'];
         unset($_SESSION[$GLOBALS['__server']['session_prefix'] . 'logginn_id']);
     }
     $id = requestval("id", $id);
     // expire type
     $expire = 0;
     if (isset($_REQUEST['expire_type'])) {
         $val = intval($_POST['expire_type']);
         if ($val >= 0 && $val <= 2) {
             $expire = $val;
         }
     }
     $r = new \Kofradia\Response();
     $r->data = \Kofradia\View::forgeTwig("users/login/login", array("norobots" => isset($_GET['orign']), "userid" => $id, "expire" => $expire, "secure_only" => isset($_POST['secure_only'])));
     return $r;
 }