Seite sehen, wenn in Gruppe

Hast du Probleme Admidio einzurichten? Hier kannst du Fragen rund um die Einrichtung stellen.
Antworten
Dj_PD
Beiträge: 61
Registriert: 23. Okt 2009, 12:04

Seite sehen, wenn in Gruppe

Beitrag von Dj_PD »

Hallo,

ich habe da mal wieder eine kurze Frage.
Und zwar ist es ja mit $g_valid_login möglich, eine Abfrage zu machen, ob das Mitglied angemeldet ist.
Gibt es auch so eine einfache Variable um zu Prüfen ob die Person in einer bestimmten Gruppe, äh Liste bzw. Rolle ist?
Also z.B.,

Code: Alles auswählen

// Ist die Person angemeldet und Mitglied einer Rolle
if ($g_valid_login and $in_rolle == "2") {
echo "Dein Name: ".$user."<br />";
echo "Deine ID: ".$user_id."<br />";
echo "in Gruppe: ".$g_valid_rol_id."<br />";
//...
//Ist das Mitglied nicht angemeldet
} elseif (!$g_valid_login) {
echo "Melde dich bitte an!";
//...
//Ist das Mitglied angemeldet aber nicht in der Rolle
} elseif ($g_valid_login and $g_valid_rol_id != "2") {
echo "Du bist kein Mitglied der Gruppe ".$g_valid_rol_id_name.". Du kannst dich aber hier nun anmelden. Nach Prüfung des Leiters, wird man dich in die Gruppe aufnehmen oder dich informieren.";
//hier kommt das Kontaktformular hin

//Trifft nichts zu, dann
} else {
echo "Du hast keine Berechtigung";
}
Wäre sehr freundlich, wenn jemand mir helfen könnte.
Ich muss wie gesagt wissen:
a) ob die Person angemeldet ist (das weiß ich ja mit $g_valid_login)
b) Ob die angemeldete Person in der einer bestimmten Rolle ist
c) ich muss auslesen wie die Rolle heißt
d) Ich möchte zusätzlich seinen Namen und seine ID anzeigen
momo
Beiträge: 24
Registriert: 21. Okt 2009, 13:35

Beitrag von momo »

hallo

ich prüf das ganze so,

if(hasRole("Rollenname") or hasRole("Rollenname")){

die Ausgabe
}


gruss
Momo
Zuletzt geändert von momo am 14. Mai 2010, 17:38, insgesamt 1-mal geändert.
Dj_PD
Beiträge: 61
Registriert: 23. Okt 2009, 12:04

Beitrag von Dj_PD »

Vielen Dank für die Info. Dein Code ist zwar nicht ganz so richtig (glaub ich), aber ich habe mal hier nach hasRole gesucht und viele Beiträge gefunden.

Jetzt fehlt mir noch noch das Auslesen des Benutzernamens und seiner ID.
Hab im Forum geschaut, aber irgendwie finde ich nichts.
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Dj_PD hat geschrieben:Jetzt fehlt mir noch noch das Auslesen des Benutzernamens und seiner ID.
Hab im Forum geschaut, aber irgendwie finde ich nichts.
Das Auslesen von Daten zum User lässt sich problemlos mit der Variablen

Code: Alles auswählen

$g_current_user->getValue("FELDNAME")
durchführen.

In Deinem Fall wäre das:

Code: Alles auswählen

// Username
echo $g_current_user->getValue("usr_login_name");
echo "<br>";
// User-ID
echo $g_current_user->getValue("usr_id");
Gruss,
Matze
Dj_PD
Beiträge: 61
Registriert: 23. Okt 2009, 12:04

Beitrag von Dj_PD »

Hallo,

vielen Dank matzmann für deine tolle und informative Hilfe.
Ich habe da diesbezüglich aber noch eine Frage.
Ich habe eine externe Datei und möchte nun dass man wenn man nicht eingelogt ist, dass man dann einen Link zum Login oder zur Anmeldung bekommt und wenn man eingeloggt ist, dass man dann sieht: "Angemeldet als: ".
Ich habe folgenden Code eingebaut:

Code: Alles auswählen

include_once("adm_program/system/common.php");

            if($g_valid_login)
            {
                echo "Angemeldet als ";
				echo $g_current_user->getValue("usr_login_name"); 
            }
            else
            {
                echo '<a href="#">Login</a>';
				echo '<span class="text-separator">|</span>';
				echo '<a href="#">Anmelden</a>';
            }
Das Funktioniert aber nicht. Es wird immer Login|Anmelden angezeigt, auch wenn ich eingeloggt bin.
Wenn ich einfach mal eine Variable aus der common.php auslese, z.B. echo $g_tbl_praefix;
Dann zeigt er mir den Inhalt der Variable an. Also, eingebunden ist die Datei.

Was mache ich falsch? Liegt es evtl. daran, dass die Seite noch local (Xampp) ist?
Ich weiß nicht, was ich falsch mache. :oops:
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Lass Dir doch einfach mal ausgeben, welchen Wert die Variable $g_valid_login hat. Wenn man eingeloggt ist, sollte sie den Wert 1 haben...
Dj_PD
Beiträge: 61
Registriert: 23. Okt 2009, 12:04

Beitrag von Dj_PD »

Hm, Ja, wäre wahrscheinlich logischer gewesen.
Also ausgeben tut es garnichts.

Code: Alles auswählen

echo "valid: ".$g_valid_login;
Versteh ich nicht. Ich habe jetzt einfach mal das plugin Login an der Stelle eingefügt und auch da zeigt er mir an, dass ich nicht online bin obwohl ich Online bin. Etwas weiter unten habe ich nämlich das plugin nämlich auch eingebaut und da zeigt er an, dass ich Online bin,
Echt merkwürdig.
Dj_PD
Beiträge: 61
Registriert: 23. Okt 2009, 12:04

Beitrag von Dj_PD »

Ich glaube ich bin schon ein Schritt weiter.
Ich denke, es liegt daran, dass die Datei includet wird. Ich versuche das ein bisschen genauer zu erklären.

Ich habe in dem Ordner admidio (da wo die index.php von admidio ist) noch weitere Dateien hin gepackt, da ich mit ja admidio in meinen Template einbauen wollte.
Ich habe mein Template mit php unterteilt. In der index2.php (die Seite die Gäste sehen) steht nur der eigentliche Content und ich include alles weitere. Also, am Anfang die header.php und am ende die footer.php.
Jetzt habe ich aber im Header die Login-Leiste, also da wo für Gäste "Login | Registrieren" und für angemeldete "Angemeldet als <username>" stehen sollte.
Ich habe mir gedacht, diese info include ich auch wieder, dass heißt in der index2.php include ich die header.php und in der header.php include ich die menu.php
Am Anfang dachte ich, dass es evtl. daran liegen könnte, dass ich in der header.php auch die Datei include. Aber durch include_onces ist es ja egal wo und wann ich die Datei einfüge. Sie wird ja nur dann eingefügt, wenn es noch nicht passiert ist.
Ich habe also, hier und da mal was versucht. Wenn ich jetzt den Inhalt der menu.php in die header.php einfüge, dann funktioniert die Leiste wieder.

Ich wollte aber ganz gerne die Login-Leiste trotzdem in einer separaten Datei (menu.php) haben, da ich diese ja an 2 Orten brauche. Einmal für meine Seite und einmal für admidio.

Versteht ihr das?
Kann man da was machen?
Dj_PD
Beiträge: 61
Registriert: 23. Okt 2009, 12:04

Beitrag von Dj_PD »

Also, ich bin nochmal ein ganzes Stück weiter gekommen.
Bei meinen normalen Template-Bereich habe ich das nun so gelöst, dass ich in Content-Seiten die common.php eingefügt habe. Dann habe ich die menu.php nicht direkt ausgegeben, sondern in eine Variable getan. So brauche ich dann nur noch an der Stelle echo $hp_status; machen und es funktioniert.

Beim adimido kann ich aber leider immer noch nicht diese menu.php Datei ausführen. Da zeigt er mir nichts an.
Zum besseren Verständnis:
Ich das Template in my_body_top.php eingefügt. Dort habe ich dann ein include zu dem Menü gemacht.

Code: Alles auswählen

include_once($g_root_path.'/menu_top.php');
In dieser menu_top.php wollte ich nun einige Menüs einbauen, die nur angezeigt werden, wenn man angemeldet ist.
Dies mache ich mit

Code: Alles auswählen

<?php
if($g_valid_login) {
echo '<li><a href="#">Interner Bereich</a></li>';
}
?>
Funktionieren tut das so aber leider nicht. Den Inhalt der menu_top.php sehe ich. Was in der if-Anweisung steht, wird nicht ausgeführt.
Hat jemand eine Idee, wie ich das lösen kann?
Antworten