[gelöst] Auto Login nach Registration

Fragen zur Installation von CONTENIDO 4.9? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
Antworten
mikesteiner99
Beiträge: 93
Registriert: Mi 12. Aug 2009, 11:01
Wohnort: Au, Zürich
Kontaktdaten:

[gelöst] Auto Login nach Registration

Beitrag von mikesteiner99 »

Hallo liebe Leute

Hat jemand schon versucht mit PHP gleich nach der Registration den Benutzer in das Frontend Login einzuloggen? Den Benutzer trage ich nach der Registrierung wie im folgenden Script zu sehen ein und setzte den "Active" Tag gleich online auf '1'. Nun möchte ich jedoch den Benutzer gleich eingeloggt haben um weitere Funktionen bereitstellen zu können. Hat jemand damit Erfahrung?

Code: Alles auswählen

   if ($reg_check_email == "1" AND $reg_check_pass == "1" AND $reg_check_pass_again == "1" AND $reg_check_captcha == "1") {
            $uuser = new cApiFrontendUserCollection();
            if (!$uuser->userExists($reg_username)) {
            $uuser->create($reg_username, $reg_password);

            $sql = "UPDATE ".$cfg["tab"]["frontendusers"]." SET active = '1' WHERE username = '".cSecurity::escapeDB($reg_username)."'";
            $db->query($sql);
Zuletzt geändert von mikesteiner99 am Fr 21. Feb 2014, 21:45, insgesamt 1-mal geändert.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Auto Login nach Registration

Beitrag von xmurrix »

Hallo mikesteiner99,

die Authentifizierung geschieht in einer sehr frühen Phase der Applikation, bevor eine Ausgabe an den Browser geschickt wird. Normalerweise muss die Webseite mit einem POST Request aufgerufen werden, in der auch die Daten für das Login vorhanden sind.

Du kannst folgendes Probieren, ob das klappt kann ich nicht sagen:

Code: Alles auswählen

$_POST['username'] = $reg_username;
$_POST['password'] = $reg_password;
$auth = cRegistry::getAuth();
$auth->start();
Dabei werden die Werte für das Login in der Superglobalen $_POST gesetzt, danach wird die start() Methode des auth-Objektes aufgerufen. Diese Funktion sorgt während der Initialisierung von CONTENIDO für die Prüfung eingehender Login-Versuche uns für das Authentifizieren des Benutzers, sofern die Daten stimmen.

Wenn du nun das in einem Modul verwendest, musst du damit rechnen, dass Module, die im Layout vorher eingebunden sind, nichts von dem nachträglichen Login mitbekommen, die Module danach schon. Du kannst auch das Modul, welches neue Benutzer anmeldet, am Anfang deines Layouts einbinden.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
mikesteiner99
Beiträge: 93
Registriert: Mi 12. Aug 2009, 11:01
Wohnort: Au, Zürich
Kontaktdaten:

Re: Auto Login nach Registration

Beitrag von mikesteiner99 »

Grüss Dich xmurrix

Vielen Dank für Deine Antwort. Leider führt dies zu keinem Erfolg. Der print_r($auth); ergibt nach dem $auth->start(); folgende Ausgabe:

Code: Alles auswählen

cAuthHandlerFrontend Object ( [_defaultNobody:protected] => 1 [auth] => Array ( [uid] => nobody [perm] => [exp] => 2147483647 [uname] => nobody ) [_lifetime:protected] => 15 [_in:cAuth:private] => 1 )
Grüsse aus dem sonnigen Zürich
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Auto Login nach Registration

Beitrag von xmurrix »

Hmm,

wäre schön gewesen, wenn es geklappt hätte. Kannst du nicht die Funktion in cAuth::start() debuggen um herauszufinden, an was es scheitert?

Versuch mal folgendes:

Code: Alles auswählen

$_POST['username'] = $reg_username;
$_POST['password'] = $reg_password;
$auth = cRegistry::getAuth();
unset($auth->auth['uid']);
$auth->start();
Wenn in $auth->auth['uid'] schon der Wert "nobody" steht, dann kann es sein, dass eine nachträgliche Authentifizierung nicht klappt, siehe cAuth::isAuthenticated();

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
mikesteiner99
Beiträge: 93
Registriert: Mi 12. Aug 2009, 11:01
Wohnort: Au, Zürich
Kontaktdaten:

[gelöst] Auto Login nach Registration

Beitrag von mikesteiner99 »

Ciao xmurrix

Yesss!!!!!!! Es funktioniert!!!! Da sag ich nur: "Du bisch än Siebesiech" (Schweizerdeutscher Ausdruck aus Bern, was soviel bedeutet wie Crack, Profi usw.)

Grazie mille Dir.. Forum- Beitrag ist somit gelöst... Schöne Grüsse aus Zürich
Mike
Antworten