FrontendUser auslesen?

Gesperrt
Enrico
Beiträge: 22
Registriert: Mo 26. Mär 2012, 14:07
Kontaktdaten:

FrontendUser auslesen?

Beitrag von Enrico » Do 24. Jan 2013, 14:20

Hi, Leute,

ich habe mir verschiedene Gruppen mit Usern angelegt. Das Klappt auch wunderbar. Jetzt möchte ich auf der Seite nach dem Login einen Satz zeigen der etwa so aussieht.
"Willkommen %username% du bist in der %gruppe%"

Die Frage ist nur wie komm ich in meinem eigenen Modul an die Daten von dem aktuell eingeloggten Benutzer?

Vielen dank für eure Hilfe!

xmurrix
Beiträge: 3154
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von xmurrix » Do 24. Jan 2013, 15:06

Hallo Enrico,

schau dir mal folgendes Beispiel an:

Code: Alles auswählen

if ($auth->auth['uid'] != 'nobody') {
    cInclude('classes', 'class.frontend.users.php');
    cInclude('classes', 'class.frontend.groups.php');

    $name = '';
    $groups = array();

    // Load user
    $oFeUser = new FrontendUser();
    if ($oFeUser->loadByPrimaryKey($auth->auth['uid'])) {
        $name = $oFeUser->get('username');

        // Load all groups
        $groupsIds = $oFeUser->getGroupsForUser();
        foreach ($groupsIds as $groupId) {
            $oFeGroup = new FrontendGroup();
            if ($oFeGroup->loadByPrimaryKey($groupId)) {
                $groups[] = $oFeGroup->get('groupname');
            }
        }
    }
    
    if (count($groups) > 1) {
        echo "Willkommen $name du bist in den Gruppen " . implode(', ', $groups);
    } elseif (count($groups) == 1) {
        echo "Willkommen $name du bist in den Gruppe " . $groups[0];
    } else {
        echo "Willkommen $name";
    }
}
Habe es nicht getestet, sollte aber funktionieren.

Du hast die Klasse FrontendUser und FrontendGroup um an die nötigen Informationen ranzukommen. Kannst es auch mit einer eigenen SQL-Abfrage machen...

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.

Enrico
Beiträge: 22
Registriert: Mo 26. Mär 2012, 14:07
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von Enrico » Do 24. Jan 2013, 15:31

Vielen dank, genau so funktioniert es. Das ich über FrontendUser und die Collection an die Infos komme war mir klar. Das $auth->auth['uid'] ist für mich entscheident gewesen. Danke nochmal!

Enrico
Beiträge: 22
Registriert: Mo 26. Mär 2012, 14:07
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von Enrico » Do 24. Jan 2013, 16:33

...Ich hätte da noch eine kleine andere Frage. Wenn ich als eingeloggter Frontenduser ein formular abschicke, dann schmeisst er mich raus. Wieso ist das so? und wie bekomm ich es hin, das eingeloggte Frontenduser ein Formular abschicken können und dann wieder auf der gleichen seite landen?

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: FrontendUser auslesen?

Beitrag von Spider IT » Do 24. Jan 2013, 17:00

Hallo Murat,
xmurrix hat geschrieben:

Code: Alles auswählen

if ($auth->auth['uid'] == 'nobody') {
Änder das mal in

Code: Alles auswählen

if ($auth->auth['uid'] != 'nobody') {
Gruß
René

xmurrix
Beiträge: 3154
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von xmurrix » Do 24. Jan 2013, 17:50

Spider IT hat geschrieben:...Änder das mal in

Code: Alles auswählen

if ($auth->auth['uid'] != 'nobody') {
...
Danke für die Info, habe es korrigiert.

Gruß
Murat
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.

Enrico
Beiträge: 22
Registriert: Mo 26. Mär 2012, 14:07
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von Enrico » Do 24. Jan 2013, 17:52

...Ich hätte da noch eine kleine andere Frage. Wenn ich als eingeloggter Frontenduser ein Formular abschicke, dann schmeisst er mich raus. Wieso ist das so? und wie bekomm ich es hin, das eingeloggte Frontenduser ein Formular abschicken können und dann wieder auf der gleichen seite landen?

Überlesen? Oder soll ich für die Frage einen neuen Thread aufmachen, da es ja nur bedingt mit dem Thema zutun hat.

xmurrix
Beiträge: 3154
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von xmurrix » Do 24. Jan 2013, 17:53

Enrico hat geschrieben:...Wenn ich als eingeloggter Frontenduser ein formular abschicke, dann schmeisst er mich raus. Wieso ist das so? und wie bekomm ich es hin, das eingeloggte Frontenduser ein Formular abschicken können und dann wieder auf der gleichen seite landen?
Da ich nicht weiß, wie dein Code aussieht, ist es schwierig. Wen du mein meinem Beispiel von vorhin verwendet hast, da war noch ein Fehler drin, die Bedingung am Anfang muss so lauten, wie René es beschrieben hat.
http://forum.contenido.org/viewtopic.ph ... 70#p156770

Vielleicht ist das das Problem...
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.

Enrico
Beiträge: 22
Registriert: Mo 26. Mär 2012, 14:07
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von Enrico » Fr 25. Jan 2013, 09:33

Code: Alles auswählen

<?php
cInclude('classes', 'class.frontend.users.php');
cInclude('classes', 'class.frontend.groups.php');

if (!isset($db)) {
    $db = new DB_Contenido();
}
if (!isset($tpl)) {
    $tpl = new Template();
}
$tpl->reset();

$oFeUser = new FrontendUser();
if ($oFeUser->loadByPrimaryKey($auth->auth['uid'])) {

    $name = $oFeUser->get('username');
    $groups = $oFeUser->getGroupsForUser();
}

$sFormAction = $sess->url("front_content.php?idcat=$idcat&idart=$idart");

$tpl->set('s', 'ACTION', $sFormAction );
$tpl->set('s', 'NAME', $name);

print_r($_POST);

switch($groups[0])
{
    case 1: // Mitarbeiter
        echo 'mitarbeiter';
    break;
    
    case 2: // Lieferanten
        echo 'lieferanten';
    break;
    
    default:
        echo 'Keine gültige Gruppe';
    break;
}
$tpl->generate('templates/mein_konto.html');
?>

Code: Alles auswählen

<h3>{NAME}</h3>
<form action="{ACTION}" method="post">
    <div>
        <label>Benutzername:</label>
        <input type="text" value="{NAME}" name="username">
    </div>
    <div>
        <label>Passwort:</label>
        <input type="password" value="" name="password">
    </div>
    <div>
        <label></label>
        <input type="submit" value="Speichern" name="submit">
    </div>
</form>
Diesen Modulcode binde ich auf einer Seite ein die NUR für eingeloggte Frontend-User sichtbar ist. Wenn man jetzt allerdings das formular via submit absendet, schmeisst contenido mich raus (ich lande wieder auf der seite zum einloggen von frontend-Usern)

Meine Frage daher, wie kann ich Formulare absenden und trozdem noch als frontenduser eingeloggt bleiben?

Danke für eure Hilfe!

Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: FrontendUser auslesen?

Beitrag von Spider IT » Fr 25. Jan 2013, 09:59

Hallo Enrico,

der Fehler liegt wahrscheinlich darin, dass du für deine Felder die gleichen Namen nutzt, wie auch das Login-Formular ("username" und "password").
Dadurch könnte das Contenido mit einem Login-Versuch verwechseln.

Gruß
René

Enrico
Beiträge: 22
Registriert: Mo 26. Mär 2012, 14:07
Kontaktdaten:

Re: FrontendUser auslesen?

Beitrag von Enrico » Fr 25. Jan 2013, 10:08

Tatsache ... grml :/ Jetzt klappts, danke für die schnelle Hilfe!

Gesperrt