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>'; }
function run($params) { return login::do_login($params); }
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; }