digitalspecht
Mitglied
Hallo,
ich habe ein Skript, wo man sich registrieren kann. An sich funktioniert es super. Aber ich möchte, dass mit dem Registrieren nicht nur der Nutzer in der Tabelle banker_nutzer abgespeichtert wird, sondern dessen neue Id (ben_id) auch in mindestens einer anderen Tabelle eingespeichert wird. Dieser Schritt soll an sich nur einmal passieren. Daher wollte ich es ins Anmeldeskript reinpacken. Eine andere Lösung fiel mir nicht ein.
Daher ist das entstanden:
Zu einer Bestätigung, dass es geklappt hat, kommt es nicht. Die Seite bleibt weiß. Jedoch wird der Benutzer in der banker_nutzer Tabelle erfolgreich eingeschrieben. Aber die ben_id in der anderen Tabelle nicht....
Daher:
1.) Macht es Sinn diese Aktion in die Anmeldung einzufügen oder gäbe es eine einfachere und bessere Lösung es woanders zu platzieren? Bspw..: zu prüfen beim Login, ob es der erste Login ist und wenn ja, dass man dann alles einfügt?
2.) Wenn die Idee es bei der Anmeldung zu belassen gut ist, wo liegt der Hase begraben?
Bin gewillt auch nachzudenken, aber im Moment fehlt mir einfach der Denkanstoß.
Hoffe auf diesen von Außen...
Danke im Voraus.
Digitalspecht
ich habe ein Skript, wo man sich registrieren kann. An sich funktioniert es super. Aber ich möchte, dass mit dem Registrieren nicht nur der Nutzer in der Tabelle banker_nutzer abgespeichtert wird, sondern dessen neue Id (ben_id) auch in mindestens einer anderen Tabelle eingespeichert wird. Dieser Schritt soll an sich nur einmal passieren. Daher wollte ich es ins Anmeldeskript reinpacken. Eine andere Lösung fiel mir nicht ein.
Daher ist das entstanden:
PHP:
require_once('appvars.php');
require_once('verbvars.php');
// Mit Datenbank verbinden
$db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
if (isset($_POST['submit'])) {
// Anmeldedaten aus $_POST auslesen
$nutzername = mysqli_real_escape_string($db, trim($_POST['nutzername']));
$passwort1 = mysqli_real_escape_string($db, trim($_POST['passwort1']));
$passwort2 = mysqli_real_escape_string($db, trim($_POST['passwort2']));
if (!empty($nutzername) && !empty($passwort1) && !empty($passwort2) && ($passwort1 == $passwort2)) {
// Prüfen, dass dieser Benutzername noch nicht verwendet wird
$sql = "SELECT * FROM banker_nutzer WHERE nutzername = '$nutzername'";
$daten = mysqli_query($db, $sql);
if (mysqli_num_rows($daten) == 0) {
// Der Benutzername ist eindeutig, Daten können in Datenbank eingefügt werden
$sql = "INSERT INTO banker_nutzer (nutzername, passwort, anmeldedatum) VALUES ('$nutzername', SHA('$passwort1'), NOW())";
mysqli_query($db, $sql);
//die kommenden paar Zeilen sollten die neue ben_id in die anderen Tabellen einfügen, aber das Skript bricht hier wohl ab.
$ersteid = "SELECT ben_id FROM banker_nutzer WHERE nutzername = '$nutzername'";
$ersteidselect = mysqli_query($db, $ersteid) or die(mysql_error());
$sql2 = "INSERT INTO banker_konto (ben_id) VALUES ('$ersteid')";
mysqli_query($db, $sql2) or die(mysql_error());
// Dem Benutzer die erfolgreiche Anmeldung bestätigen
echo '<p>Ihr Konto wurde erstellt. Sie können sich jetzt einloggen und ihr ' .
'<a href="profilbearbeiten.php">Profil bearbeiten</a>.</p>';
mysqli_close($db);
exit();
} else {
// Benutzername wird bereits verwendet, also Fehlermeldung anzeigen
echo '<p class="error">Dieser Benutzername ist bereits belegt. ' .
'Bitte wählen Sie einen anderen.</p>';
$nutzername = "";
}
}
else {
echo '<p class="error">Bitte geben Sie alle erforderlichen Daten ein. Vergessen Sie ' .
'nicht, das Passwort zu wiederholen.</p>';
}
}
mysqli_close($db);
?>
Zu einer Bestätigung, dass es geklappt hat, kommt es nicht. Die Seite bleibt weiß. Jedoch wird der Benutzer in der banker_nutzer Tabelle erfolgreich eingeschrieben. Aber die ben_id in der anderen Tabelle nicht....
Daher:
1.) Macht es Sinn diese Aktion in die Anmeldung einzufügen oder gäbe es eine einfachere und bessere Lösung es woanders zu platzieren? Bspw..: zu prüfen beim Login, ob es der erste Login ist und wenn ja, dass man dann alles einfügt?
2.) Wenn die Idee es bei der Anmeldung zu belassen gut ist, wo liegt der Hase begraben?
Bin gewillt auch nachzudenken, aber im Moment fehlt mir einfach der Denkanstoß.
Hoffe auf diesen von Außen...
Danke im Voraus.
Digitalspecht