login-frage

Gesperrt
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

login-frage

Beitrag von #ayshe »

Hallo,

das Thema Login taucht ja immer wieder auf, aber ich habe nichts gefunden, was meinem akuten Fall entspricht. Daher also eine Frage an euch:

Ich habe eine Website mit momentan drei verschiedenen Bereichen:
- öffentlicher Teil
- passwortgeschützter Bereich Seminar A
- passwortgeschützter Bereich Seminar B

Nun möchte ich auf einer eigenen Seite ein Login anbieten. Das ist auch leicht zu machen und funktioniert.
Frontenduser und Frontendgruppe sind angelegt, Login funktioniert.

Aber es gibt nun für Seminar A und B einerseits gemeinsam zu nutzende Informationen (die werden über die Hauptnavigation angeboten), aber auch Informationen, die für jedes Seminar individuell sind und jeweils unsichtbar bleiben sollen für das andere.

Diese individuellen Informationen sind in einer separaten Kategorie abgelegt. Sie werden durch eine Artikelliste ausgegeben.

Das Ganze sieht also so aus:

|-- Öffentlicher Bereich
|-- Seminarmaterialien (für alle Seminare gleich)
|-- Seminar A
|--------- Infos Seminar A
|-- Seminar B
|--------- Infos Seminar B
|-- Login

Wie übermittle ich jetzt beim Login, welche Artikelliste zusätzlich nach dem Einloggen angezeigt werden soll, also welche Seminarinfos sichtbar werden?

Ich hoffe, ich habe mich verständlich ausgedrückt...

Viele Grüße,
Ayshe
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Re: login-frage

Beitrag von mvf »

in dem du die benutzergruppen für die entsprechenden kategorien berechtigst

group a
group b

seminar a access by group a only
seminar b access by group b only

Seminarmaterialien access by group a and b

oder habe ich mal wieder nix verstanden :roll:
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Re: login-frage

Beitrag von #ayshe »

mvf hat geschrieben: oder habe ich mal wieder nix verstanden :roll:
Ganz so schlimm ist es nicht :)

Aber ich weiß schon vom Prinzip und auch aus der Praxis, wie ich die Berechtigungen setzen muß. Das ist ja auch alles OK.

Ich denke, es liegt vielmehr am Modul, mit dem die Sachen angezeigt werden sollen. Die Hauptnavigation zu den Seminarinhalten wird ja gezeigt, aber es gibt halt auch eine Subnavigation, die über die w3concept Artikelliste v1 geregelt wird. Und ich denke, die kann eben nicht die Parameter verarbeiten wie die Hauptnavigation.
Der Code der Artikelliste:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts_alist_v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-05-2004
* Modified    :     06-05-2004 by Ayshe: <ul> statt Tabelle
* Modified    :     13-05-2005 by Ayshe: CSS-Klasse für aktive Kategorie, Standarzeichen für "Mehr" und "Zurück"
* Modifide    :     17-03-2006 by Ayshe: title-Attribut wird in den URLs generiert; alle "&"-Zeichen im URL ersetzt durch "&" (Validität!)
************************************************/

    // konfiguration

    $categorie = "CMS_VALUE[0]";

    $angezeigte_anzahl = "CMS_VALUE[1]";
    if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10;

    $startartikel = "CMS_VALUE[2]";
    if ($startartikel == '') $startartikel = false;

    $subheadline = "CMS_VALUE[3]";
    if ($subheadline == '') $subheadline = 200;

    $navigationslink['previous'] = "CMS_VALUE[4]";
    if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[ &laquo&laquo; ]';

    $navigationslink['next'] = "CMS_VALUE[5]";
    if ($navigationslink['next'] == '') $navigationslink['next'] = '[ &raquo;&raquo; ]';

    $ebene = "CMS_VALUE[6]";

    $limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);

    $db = new DB_Contenido;
    $db2 = new DB_Contenido;

    // wenn startartikel true ist, werden die startartikel dargestellt, sonst nicht
    $nurstartartikel = ($startartikel)?(''):('AND d.is_start = 0');

    // liest die anzahl betroffener artikel aus der datenbank
    switch ($ebene) {
        case -2:
            $sql_1 = "
                SELECT count(*) AS anzahl
                FROM {$cfg['tab']['cat']} AS a,
                     {$cfg['tab']['cat']} AS b,
                     {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.parentid = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM {$cfg['tab']['cat']} AS a,
                {$cfg['tab']['cat']} AS b,
                {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.parentid = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    $nurstartartikel
                ORDER BY e.artsort, e.title ASC
                LIMIT $limit, $angezeigte_anzahl
                ";
            break;
        case -1:
            $sql_1 = "
                SELECT count(*) AS anzahl
                FROM {$cfg['tab']['cat']} AS a,
                     {$cfg['tab']['cat']} AS b,
                     {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM {$cfg['tab']['cat']} AS a,
                {$cfg['tab']['cat']} AS b,
                {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.parentid = a.idcat
                        )
                        OR
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    $nurstartartikel
                ORDER BY e.artsort, e.title ASC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
        case 0:
            $sql_1 = "
                SELECT count(*) AS anzahl
                FROM {$cfg['tab']['cat']} AS a,
                     {$cfg['tab']['cat']} AS b,
                     {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON b.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
                FROM {$cfg['tab']['cat']} AS a,
                {$cfg['tab']['cat']} AS b,
                {$cfg['tab']['cat']} AS c
                LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            c.idcat = b.idcat
                            AND b.idcat = a.idcat
                        )
                    )
                    AND a.idcat = $categorie
                    AND e.online = 1
                    AND e.redirect = 0
                    AND e.external_redirect = 0
                    $nurstartartikel
                ORDER BY e.artsort, e.title ASC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
    }

    $db->query($sql_1);
    $db->next_record();
    $anzahl_artikel = $db->f("anzahl");

    $db->query($sql_2);

    


    while ($db->next_record()) {
        
        $sql = "
            SELECT value FROM {$cfg['tab']['content']}
            WHERE
            idartlang = ".$db->f("idartlang")."
            AND idtype = 1
            ORDER BY typeid ASC
            ";

        $db2->query($sql);
        $db2->next_record();

        $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));

        if ($idart == $db->f("idart")) {
        
        echo "<li><a href="$link" class="aktiv" title="".urldecode($db2->f("value"))."">".urldecode($db2->f("value"))."</a></li>";
        } 
        else {
        echo "<li><a href="$link" title="".urldecode($db2->f("value"))."">".urldecode($db2->f("value"))."</a></li>";
        }

        $db2->next_record();

        // die subheadline auf die gew?nschte l?nge reduzieren (trennung nur
        // nach bzw. vor einem ganzen wort
        if (strlen($db2->f("value")) > $subheadline) {
            $newsubheadline = '';
            $worte = explode (" ",strip_tags(urldecode($db2->f("value"))));
            $zulang = false;
            foreach ($worte as $wort) {
                if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true;
                $newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline);
            }
            $newsubheadline .= "...";
        } else {
            $newsubheadline = strip_tags(urldecode($db2->f("value")));
        }



    }

 //weitere und vorherige Eintr?ge falls Anzahl der gelisteten Artikel begrenzt ist

    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) {
        
        if ($limit > 0) {
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0);
            echo "<li><a href="".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."">{$navigationslink['previous']}</a></li>";
        } else {
            echo '';
        }
        if ($anzahl_artikel > $limit + $angezeigte_anzahl) {
            $displaylimit = $limit + $angezeigte_anzahl;
            echo "<li><a href="".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."">{$navigationslink['next']}</a></li>";
        } else {
            echo '';
        }
     
    }
  

?>
Ich werde morgen nochmal über die Kategorienstruktur nachdenken. Habe das Gefühl, das ich da was ändern muß. Aber falls jemand sonst noch eine Idee hat, bin ich immer neugierig drauf.

Gruß,
Ayshe
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Wirf einen Blick in das Hauptnavigationsmodul, wie die Berechtigungen überprüft werden und integriere das in dieses Modul.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

HerrB hat geschrieben:Wirf einen Blick in das Hauptnavigationsmodul, wie die Berechtigungen überprüft werden und integriere das in dieses Modul.

Gruß
HerrB
beuspiel dazu habe ich vor kurzem bei der VPsitemap von dodger gepostet, da fehlte auch die abfrage ob geschützt oder nicht
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
#ayshe
Beiträge: 445
Registriert: Do 25. Mär 2004, 10:04
Kontaktdaten:

Beitrag von #ayshe »

@ mvf: Ich nehme an, Du meinst diesen Beitrag: http://www.contenido.org/forum/viewtopi ... p&start=30

Leider habe ich überhaupt nicht gerafft, womit Du in der Sitemap die Anzeige geschützter Bereiche steuerst - allerdings kenne ich das Sitemap-Modul von Dodger auch nicht.

@ HerrB und alle:
Meine PHP-Kenntnisse entsprechen immer noch - und das wird sich sicher auch nie wirklich ändern - eher einem Stammeln, als einem fließendem Sprechen. Verzeiht mir also bitte, wenn ich nochmal nachfrage.

Gruß,
Ayshe
mvf
Beiträge: 1758
Registriert: Mo 1. Aug 2005, 00:35
Wohnort: in der schönen Hallertau, mitten im Hopfen
Kontaktdaten:

Beitrag von mvf »

#ayshe hat geschrieben:@ mvf: Ich nehme an, Du meinst diesen Beitrag: http://www.contenido.org/forum/viewtopi ... p&start=30

Leider habe ich überhaupt nicht gerafft, womit Du in der Sitemap die Anzeige geschützter Bereiche steuerst - allerdings kenne ich das Sitemap-Modul von Dodger auch nicht.
basically ist es im letzten post von mir auf der seite 1 dieser part der verantwortlich ist

Code: Alles auswählen

      $visible = checkCatPermission($db->f("idcatlang"),$db->f("public"));
      if ($visible) { .... }
Grüsse, Guido

"A common mistake that people make when trying to design something completely foolproof is to underestimate the ingenuity of complete fools."
Mostly Harmless - Douglas Adams
Gesperrt