Benutzeranmeldung im Hintergrund: PHP + MySQL

joobie

Mitglied
Ok - ich habe mal wieder etwas, das eigentlich sehr einfach sein sollte. Vielleicht sollte ich erst mal drüber schlafen, aber ich dachte ich versuch's mal auch hier.

Situation: Ich entwickle eine Anwendung, die einen Demo-Modus erlauben soll. D.h. wenn die Seite "application.php" aufgerufen wird, checkt das Skript zuerst ob es ein geloggter User ist (über Session). Wenn der User nicht geloggt ist, dann erstellt das Skript im Hintergrung einen neuen (Demo-) User in der MySQL-Datenbank.

Nun muss ich diesen User GLEICHZEITIG automatisch einloggen, um ihm den Demo-Modus der App zu erlauben und die Einstellungen in seinem automatisch generierten Account speichern zu können.

Ich habe "gleichzeitig" großgeschrieben weil dies das eigentliche Problem ist.

Diesem temporären User soll erlaubt werden, die Anwendung zu benutzen, ohne dass er weiß dass er bereits in der Datenbank existiert. Seine Einstellungen in der Applikation sollen schließlich irgendwie gespeichert und zugeordnet werden können. Wenn er mit der App fertig ist und auf "Speichern" klickt, dann werden seine Einstellungen in der DB gespeichert, und er aufgefordert sich zu registrieren, um darauf zugreifen zu können (und um es ändern zu können, etc.).

Also:
--- Wie kann ich einen (neuen) User im Hintergrund in der DB registrieren und im selben Zug diese neue, dynamisch generierte User ID holen, ohne dass er sich selbst aktiv registriert?

Abstrakt:
--- Wie kann ich einen auto-increment Eintrag in einer MySQL Datenbank gleichzeitig erstellen und den dynamisch erstellten Wert auslesen?

Weil: sobald mehr als 1 User gleichzeitig den Demo-Modus ausprobiert, habe ich ein Problem. Ich hoffe das macht Sinn :)

Ein großes Danke im Voraus!
 
Arbeitest du nicht mit einem PHP MySqlWrapper ?

Speziell dein Problem hatte ich dadurch nie, da die meisten beim Insert gleich die generierte ID zurückliefern. Auch ansonsten nehmen die einem einfach Arbeit ab ;)
 
Ich habe eine Class gebaut, die mysqli benutzt. Die function __construct() stellt die MySQL-Verbindung her, und die __destruct schließt diese. Dazwischen habe ich public functions à la query() und insert().

In die Letztere habe ich nun dies eingebaut:
Code:
if(($insert = $this->mysql->query($query)) != NULL)
				$output = $this->mysql->insert_id;
			else	$output = $this->mysql->error;

...wo $mysql public ist und in der __construct-Funktion erstellt wird - mit der DB-Connection.

Ich finde das am Einfachsten, da ich auf der Seite einfach nur sowas machen muss, um eine neue Reihe in der DB zu erstellen und glecihzeitig die ID zu ermitteln:

Code:
$new_id = $db->insert($query);

Der MySQL-Wrapper, zu dem Du linkst, erscheint mir (auf den ersten, sehr flüchtigen Blick) als etwas umständlicher als ich es derzeit habe. Ich bin aber natürlich offen für alles :)
 
Der tut aber genau das was du beschreibst - nur das man es nicht selber schreiben muss ;) Klasse einbinden und $db->query(...) $db->insert(...) etc. nutzen. Gibt dann auch noch so tolle Sachen wie $db->escape(...) um SQL Injections zu erschweren etc.
 
Zurück