Hallo zusammen,
für einen speziellen Bereich sollen User sich nur auf "Einladung" registrieren können, gedacht ist folgendes; Der User benötigt einen Registrierungscode, diesen gibt er bei der Registrierung an z.B. "1788954a7" und nur wenn dieser Code gültig ist soll der User sich registrieren können.
Ich hab dazu eine Datenbank mit den Tabellen securityid dort befinden sich in der Spalte sid alle Rgistrierungscodes, die es gibt und werden auch neue erzeugt. In der Tabelle User befinden sich dann die registrierten User, zu jedem registrieren User wird in der Spalte sidu der Registrierungscode gespeichert, den der User verwendet hat. Also dahcte ich mir, ich lass bei der Registrierung die Gültigkeit prüfen in der Tabelle securityid / sid und dann nochmal ob der Code noch frei ist in der Tabelle users/ sidu
Leider bin ich mir gerade nicht sicher, ob ich ein Denkfehler habe oder ob ich ein Codefehler habe, denn es funktioniert nicht.
#Prüfung der Gültigkeit
if(!$error) {
$statement = $pdo->prepare("SELECT * FROM securityid WHERE sid = :sid");
$result = $statement->execute(array('sid' => $sid));
$user = $statement->fetch();
if($user !== false) {
echo 'ID ungültig<br>';
$error = false;
echo 'ID gültig<br>';
}
}
# Prüfen ob bereits verwendet wurde
if(!$error) {
$statement = $pdo->prepare("SELECT * FROM users WHERE sidu = :sidu");
$result = $statement->execute(array('sidu' => $sidu));
$user = $statement->fetch();
if($user !== false) {
$error = true;
echo 'ID bereits registriert<br>';
}
}
# Nutzer wird registriert
if(!$error) {
$passwort_hash = password_hash($passwort, PASSWORD_DEFAULT);
$statement = $pdo->prepare("INSERT INTO users (email, passwort, nick, sidu, ) VALUES (:email, :passwort, :nick, :sidu)");
$result = $statement->execute(array('email' => $email, 'passwort' => $passwort_hash, 'nick' => $nick, 'sidu' => $sidu));
if($result) {
echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
$showFormular = false;
} else {
echo 'Fehler<br>';
}
}
Alles anzeigen