[Tutorial] Erlaube Gästen die Boards zu sehen, aber den Zugriff verweigern

Started by noex, July 18, 2005, 10:13:23 AM

Previous topic - Next topic

noex

Um den Gästen das Ansehen der Indexseite (Boardindex) zu erlauben, das Betreten einzelner Boards aber verweigern, muss folgender Code geändert werden. Gäste die dann versuchen auf ein Board zuzugreifen, werden aufgefordert sich zu registrieren oder einzuloggen.

SMF Version 1.0.x

für alle Boards:

Suche in der Datei Sources/BoardIndex.php nach:
WHERE $user_info[query_see_board]
und ersetze mit:
WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR FIND_IN_SET('0', b.memberGroups)" : '') . ")

für einzelne Boards:

Suche in der Datei Sources/BoardIndex.php nach:
WHERE $user_info[query_see_board]
und ersetze mit:
WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR b.ID_BOARD IN (##, ##, ##)" : '') . ")
Wobei ##, ##, ## die Liste der IDs darstellt, auf welche diese "Funktion" angewandt wird.


SMF Version 1.1 Beta 3

für alle Boards:

Suche in der Datei Sources/BoardIndex.php nach:
WHERE $user_info[query_see_board]" . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);

und ersetze mit:
WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR b.ID_BOARD > 0" : '') .')' . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);


für einzelne Boards:

Suche in der Datei Sources/BoardIndex.php nach:
WHERE $user_info[query_see_board]" . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);

und ersetze mit:
WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR b.ID_BOARD IN (##, ##, ##)" : '') .')' . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);

Wobei ##, ##, ## die Liste der IDs darstellt, auf welche diese "Funktion" angewandt wird.


Original von: [Unknown]
Deutsche Zusammenfassung von: noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

altiX

Sorry wegen Grammatik Fehlern!

noex

Du musst "Gästen das Ansehen des Forums erlauben" (Forumeinstellungen)

In den einzelnen Board dann die Gruppe "Gäste" aus den Berechtigungen herausnehmen.
Diese Boards werden dann für Gäste dennoch in der Übersicht angezeigt, aber der Zugriff darauf wird verweigert.
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

altiX

Sorry wegen Grammatik Fehlern!

ernomo98


noex

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

|R+|

Ist es mögliche gewisse Boards trotzdem noch auszublenden?


noex

Ja,

du kannst die Boards, die "angezeigt, auf die aber nicht zugegriffen werden darf" beschränken.

Suche in BoardIndex.php nach:

WHERE $user_info[query_see_board]

und ersetze mit:

WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR b.ID_BOARD IN (##, ##, ##)" : '') . ")

Wobei ##, ##, ## die Liste der IDs darstellt, auf welche diese "Funktion" angewandt wird.

lg
noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

|R+|

Das gab ganz wilde Parsingfehler

nach jeder Aktualisierung gab es einen Fehler in einer ganz anderen Zeile, sogar in Kommentaren und leeren Zeilen   ::)

und einmal hats gemeckert dass es einen Templateerror verursacht hat 

ich benutz die 1.1 beta 3 version

noex

Okay, dann versuche folgendes:

Suche nach:
WHERE $user_info[query_see_board]" . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);


und ersetze mit

WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR b.ID_BOARD IN (##, ##, ##)" : '') .')' . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);


lg
noex

PS: Dies sollte für die Version 1.1 funktionieren
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

|R+|

Vielen Dank!

Das Funktioniert wunderbar  :D


netter Support hier

noex

Habe die Möglichkeiten und die beiden Änderungen für die SMF Versionen 1.0.x und 1.1 im ersten Topic zusammengefasst.

Damit es auch Übersichtlich bleibt.

lg
noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

chipper1

Hi,
ich habe gerade die Datei "Sources/BoardIndex.php" (für alle Boards ) geändert. Es funktioniert, dass Gäste zwar Haupt-Boards sehen, bei Anklicken aber Meldung bekommen zur Anmeldung/Registrierung. So weit so gut.

Nun tritt aber folgender Fehler auf, wenn sich jemand neu anmelden möchte:
- neuer User meldet sich an + erhält Bestätigungsmail mit Rückbestätigungsaufforderung
- bei Anklicken dieses Links erscheint Fehlermeldung:
  "Not Found:  The requested URL /smf/index.php=3Faction=3Dprofile was not found on this server."
- Anmeldeversuch des neuen Users klappt dann natürlich auch nicht, da die Rückbestätigung von ihm fehlt.

Erst wenn der neue User manuell vom Admin freigeschaltet wird, kann der neue User sich auch einloggen.

Gibt es dafür eine Erklärung/Lösung?
MfG, chipper1

(SMF 1.1.9 + MKPortal C1.2.2)

noex

Hallo, dies hat mit dieser Änderung nichts zu tun.

Schon mal die Forensuche bemüht? Dieser Fehler wird schon mehrfach diskutiert.

Welche Version verwendest du?

lg
noex
"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

chipper1

Quote from: noex on September 17, 2005, 11:24:07 AM
1) Schon mal die Forensuche bemüht? Dieser Fehler wird schon mehrfach diskutiert.
2)Welche Version verwendest du?

zu 1) nein (sorry, worunter suchen?)
zu 2) SMF 1.1 Beta 3 Public


Nachtrag:   
- Umlaute werden in der Mail auch nicht richtig dargestellt ...
- Suche im Forum brachte keine Lösung, nur Hinweis, dass andere das auch schon festgestellt haben ...

=> Hat jemand ´ne Idee zur Lösung?
MfG, chipper1

(SMF 1.1.9 + MKPortal C1.2.2)

noex

"Jetzt, wo ich weiß wie es geht, versteh ich auch die Gebrauchsanleitung"

feline

Hallo all,

Quote from: noex on August 31, 2005, 03:07:23 PM
und ersetze mit

WHERE ($user_info[query_see_board]" . ($user_info['is_guest'] ? " OR b.ID_BOARD IN (##, ##, ##)" : '') .')' . (empty($modSettings['countChildPosts']) ? "
AND b.childLevel <= 1" : ''), __FILE__, __LINE__);


Um eine ganze Categorie auszuschliessen (was u.U. einfacher ist):

OR b.ID_BOARD IN (##, ##, ##)
durch
OR c.ID_CAT IN (##, ##, ##)
ersetzen.

Für Grössere Bereiche benutze dann OR b.ID_BOARD BETWEEN ## AND ##

Fel

joydealer

Danke für die Anleitung ersteinmal!

Ich hätte aber noch eine kleine Frage. Wenn die Gäste nun auf ein Thema, Board etc. klicken, kommt:
"Ein Fehler ist aufgetreten!
Das Thema dass Sie anschauen möchten existiert nicht oder ist für Sie nicht einsehbar."

Aber es soll ja nicht so aussehen, als wenn es sich um einen Fehler handelt. Deswegen würde ich diesen Text gerne durch: "Sie können Themen nur anschauen, wenn sie sich registrieren" ersetzen. Aber wo mache ich das?
Habe leider bisher nicht die passende Datei gefunden.

edit: Ok, habs gefunden. Es ist die Datei "Errors.german.php" Aber wenn ich die Textzeile umändere, wird sie in anderen Zusammenhängen sinnlos. Also müsste man eigentlich eine eigene Textzeile erstellen.


edit2: Nochwas ist mir aufgefallen. Die User-Profile werden Gästen jetzt angezeigt, obwohl eingestellt ist, das Gäste sie nicht sehen sollen.


Version: SMF 1.0.3

feline

Hi joydealer,

Quoteedit2: Nochwas ist mir aufgefallen. Die User-Profile werden Gästen jetzt angezeigt, obwohl eingestellt ist, das Gäste sie nicht sehen sollen.

also bei der 1.1 rc1 geht das aber ...

Fel


MotMann

Ich finde das aber nicht gerade sehr praktisch. Nutze nun auch 1.1RC1 und vermisse solche Einstellung schmerzlichst.

Warum können die User nicht die Threads sehen, wo ich den Zugang nur für registrierte User eingerichtet habe? Oder existiert in 1.1RC1 bereits eine solche Einstellung? Oder kommt diese in 1.1RC2?  :D

Ich kann doch nicht jedesmal den Codec umfrickeln, nur weil ich ein neues Board erstelle, oder ein andere wieder ändern möchte, so dass die Beiträge jetzt gelesen werden können.....

Advertisement: