function bark($msg){
stderr("Registrierung fehlgeschlagen!", $msg);
}
function validusername($username){
if($username == "")
return false;
$allowedchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for($i = 0; $i < strlen($username); ++$i)
if(strpos($allowedchars, $username[$i]) === false)
return false;
return true;
}
$registered = number_format($database->row_count('users'));
if($registered >= $GLOBALS["MAX_USERS"])
stderr("Sorry", "Das aktuelle Benutzerlimit (" . number_format($GLOBALS["MAX_USERS"]) . ") wurde erreicht. Inactive Accounts werden regelmäßig gelöscht, versuche es also einfach später nochmal...");
if($_SERVER["REQUEST_METHOD"] == "POST"){
foreach(explode(":","wantusername:wantpassword:passagain:email") as $k){
if(!isset($_POST[$k]))
bark("Eingaben fehlen!");
else
$$k = $_POST[$k];
}
if(empty($wantusername) || empty($wantpassword) || empty($email))
bark("Du musst alle Felder ausfüllen.");
if(strlen($wantusername) > 12)
bark("Sorry, Dein Benutzername ist zu lang (Maximum sind 12 Zeichen)");
if($wantpassword != $passagain)
bark("Die Passwörter stimmen nicht überein! Du musst Dich vertippt haben. bitte versuche es erneut!");
if(strlen($wantpassword) < 6)
bark("Sorry, Dein Passwort ist zu kurz (Mindestens 6 Zeichen)");
if(strlen($wantpassword) > 40)
bark("Sorry, Dein Passwort ist zu lang (Maximal 40 Zeichen)");
if($wantpassword == $wantusername)
bark("Sorry, Dein Passwort darf nicht mit Deinem Benutzernamen identisch sein.");
if(!validemail($email))
bark("Die E-Mail Adresse sieht nicht so aus, als ob sie gültig wäre.");
if(!validusername($wantusername))
bark("Ungültiger Benutzername.");
if($_POST["rulesverify"] != "yes" || $_POST["faqverify"] != "yes" || $_POST["ageverify"] != "yes")
bark("Sorry, aber Du bist nicht dafür qualifiziert, ein Mitglied dieser Seite zu werden.");
$con = "email='" . $email . "' OR username='" . $wantusername . "'";
$c = number_format($database->row_count("users", $con));
if($c != 0)
bark("Der Username oder die E-Mail Adresse werden schon verwendet.");
foreach($GLOBALS["EMAIL_BADWORDS"] as $badword){
if(preg_match("/".preg_quote($badword)."/i", $email))
bark("Diese E-Mail Adresse kann nicht für eine Anmeldung an diesem Tracker verwendet werden. Wir akzeptieren keine Wegwerf-Mailadressen!");
}
$secret = mksecret();
$wantpasshash = md5($secret . $wantpassword . $secret);
$editsecret = mksecret();
$passkey = mksecret(8);
$qry = $GLOBALS['DB']->prepare("SELECT `id` FROM `stylesheets` WHERE `default`='yes'");
$qry->execute();
if($qry->rowCount() > 0){
$row = $qry->fetchObject();
$stylesheet = $row->id;
}else
$stylesheet = 1;
$dt = get_date_time();
$status = "confirmed";
$res = user::addUser($wantusername,$wantpasshash,$passkey,$secret,$editsecret,$email,$status,$stylesheet,$dt);
if($res === false)
bark("db-error");
if($status != "confirmed"){
$psecret = md5($editsecret);
$body = "Du oder jemand anderes hat auf " . $GLOBALS["SITENAME"] . " einen neuen Account erstellt und diese E-Mail Adresse (" . $email . ") dafür verwendet.\n\n ".
"Wenn Du den Account nicht erstellt hast, ignoriere diese Mail. In diesem Falle wirst Du von uns keine weiteren Nachrichten mehr erhalten. Die Person, ".
"die Deine E-Mail Adresse benutzt hat, hatte die IP-Adresse " . $_SERVER["REMOTE_ADDR"] . ". Bitte antworte nicht auf diese automatisch erstellte Nachricht.\n\n ".
"Um die Anmeldung zu bestätigen, folge bitte dem folgenden Link: " . $DEFAULTBASEURL . "/confirm.php?id=" . $res . "&secret=" . $psecret . "\n\n".
"Wenn du dies getan hast, wirst Du in der Lage sein, Deinen neuen Account zu verwenden. Wenn die Aktivierung fehlschlägt, oder Du diese nicht vornimmst, wird ".
"Dein Account innerhalb der nächsten Tage wieder gelöscht. Wir empfehlen Dir dringlichst, die Regeln und die FAQ zu lesen, bevor Du unsere seite verwendest.";
mail($email, $GLOBALS["SITENAME"]." Anmeldebestätigung", $body, "From: ".$GLOBALS["SITEEMAIL"]);
header("Refresh: 0; url=ok.php?type=signup&email=" . urlencode($email));
}else
header("Refresh: 0; url=ok.php?type=confirmed");
}