AutoLoader::registerDirectory('../src/classes'); require "config.php"; require "MailFiles/PHPMailerAutoload.php"; // Initialize error messages to blank. $r = new Register(); if (!empty($_POST)) { // Ensure that the user fills out fields. if ($r->checkNoFormErrors($_POST, $db)) { $hash = md5(rand(0, 2147483647)); // check if the email exists $r->checkEmailExists($_POST['email'], $db); // If the email is not registered yet, send them a confirmation email // and add it to the database. if (empty($r->registeredEmail)) { $link = "http://wal-engproject.rhcloud.com/src/verify.php?email=" . $_POST['email'] . "&hash=" . $hash; if (!$r->sendRegistrationEmail($_POST['email'], $link)) { $r->registrationFailure = "Verification email could not be sent."; } else { $r->registrationSuccess = "A confirmation email has been sent to the email address that you provided"; $r->saveRegistration($_POST, $hash, $db); } } } } ?> <!doctype html> <html lang="en"> <head> <style>.error {color: #FF0000;}</style> <style>.success {color: #00FF00;</style>
/** * Create a new user * @author Clemens John <*****@*****.**> * @param $nickname nickname of the user * @param $password plain text password of the user * @param $passwordchk plain text password doublecheck * @param $email emailaddress of the user * @param $agb has the user accepted the agb (is only beeing checked if the agb is enabled)? * @param $openid openid if the user wants to register by openid * @return boolean true if the was created successfull */ public function insertNewUser($nickname, $password, $passwordchk, $email, $agb, $openid) { $message = array(); //check weatcher the given data is valid if (empty($nickname)) { $message[] = array("Du musst einen Nickname angeben.", 2); } elseif (!User_old::isUniqueNickname($nickname)) { $message[] = array("Der ausgewählte Nickname <i>{$nickname}</i> existiert bereits.", 2); } elseif (empty($password)) { $message[] = array("Du musst ein Passwort angeben.", 2); } elseif ($password != $passwordchk) { $message[] = array("Deine beiden Passwörter stimmen nicht überein.", 2); } elseif (strlen($password) > 72) { $message[] = array("Dein Passwort darf nicht länger als 72 Zeichen sein.", 2); } elseif (empty($email)) { $message[] = array("Du musst eine Emailadresse angeben.", 2); } elseif (!User_old::isUniqueEmail($email)) { $message[] = array("Es existiert bereits ein Benutzer mit der ausgewhälten Emailadresse <i>{$email}</i>.", 2); } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $message[] = array("Die ausgewählte Emailadresse " . $email . " ist keine gültige Emailadresse.", 2); } elseif (!empty($openid) and !User_old::isUniqueOpenID($openid)) { $message[] = array("Die ausgewählte OpenID <i>" . $openid . "</i> ist bereits mit einem Benutzer verknüpft.", 2); } elseif (ConfigLine::configByName('enable_network_policy') == "true" and !$agb) { $message[] = array("Du musst die Netzwerkpolicy akzeptieren.", 2); } elseif (!preg_match('/^([a-zA-Z0-9_\\.-])+$/i', $nickname)) { $message[] = array("Dein Nickname enthält nicht erlaubte Zeichen (erlaubt sind Buchstaben, Ziffern, Unterstrich, Minus und Punkt).", 2); } if (count($message) > 0) { Message::setMessage($message); return false; } else { //the first user that registers will get root access try { $stmt = DB::getInstance()->prepare("SELECT * FROM users"); $stmt->execute(); if (!$stmt->rowCount()) { $permission = 120; } else { $permission = 8; } } catch (PDOException $e) { echo $e->getMessage(); } //hash password to store in db $phpass = new PasswordHash(8, false); $password_hash = $phpass->HashPassword($password); if (strlen($password_hash) < 20) { $message[] = array("Beim Hashen des Passworts trat ein Fehler auf.", 2); Message::setMessage($message); return false; } //create acivation hash $activation = Helper::randomPassword(8); do { $api_key = Helper::randomPassword(32); $is_unique_api_key = User_old::isUniqueApiKey($api_key); } while (!$is_unique_api_key); echo $api_key; if (empty($openid)) { $openid = ""; } try { $stmt = DB::getInstance()->prepare("INSERT INTO users (nickname, password, openid, api_key, email, notification_method, permission, create_date, activated) VALUES (?, ?, ?, ?, ?, 'email', ?, NOW(), ?)"); $stmt->execute(array($nickname, $password_hash, $openid, $api_key, $email, $permission, $activation)); $user_id = DB::getInstance()->lastInsertId(); } catch (PDOException $e) { $message[] = array("Beim erstellen des Datenbankeintrags ist ein Fehler aufgetreten.", 2); $message[] = array($e->getMessage(), 2); Message::setMessage($message); return false; } if (Register::sendRegistrationEmail($email, $nickname, $passwordchk, $activation, time(), $openid)) { $message[] = array("Dein Benutzer " . $nickname . " wurde erfolgreich angelegt.", 1); Message::setMessage($message); return true; } else { $message[] = array("Die Email mit dem Link zum aktivieren des Nutzerkontos konnte nicht an " . $email . " verschickt werden.", 2); $message[] = array("Der neu angelegte User " . $nickname . " wird wieder gelöscht.", 2); Message::setMessage($message); User_old::userDelete($user_id); return false; } } }