• Welcome to Simple Machines Community Forum. Please login or sign up.
September 27, 2021, 01:02:47 PM

News:

Want to get involved in developing SMF, then why not lend a hand on our github!


[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.....

feline

Eigentlich ist das nur ein kleiner "Trick" um Gäste neugierig auf "mehr" zu machen .. sich zu Registrieren.
Klar kannst du in den Boadeinstellung wählen, das Gäste das nicht sehen können, aber das macht dann auch nicht neugierig ..

Fel

MotMann

Mag ja alles sein. Aber die Suchmaschinen kommen dann auch nicht rauf  >:(

feline

Klar, das wird nicht gehen.
Aber .. vielleicht sagst Du mal, was Du eigentlich willst?
Soll der Boardindex angezeigt werden, aber nicht der Messageindex oder wie?
Sicher könnte man da eine option einbauen ...

Fel

MotMann

Quote from: feline on January 02, 2006, 06:39:33 AM
Sicher könnte man da eine option einbauen ...
Bist Du wahnsinnig? :D Hab jetzt schon den Kopf voll ;) Wenn ich da an das Update auf 1.1RC2 denke wird mir schon schlecht...

Der Gaste sollte die Topics, also die Überschriften, sehen können, also nicht bis zu den Beiträgen kommen....

dieter4

in der RC2 kann man den gästen den kompletten zugriff verweigern

feline

Dark_Neakro, ich glaube MotMann meint, das Gäste noch den Messageindex sehen sollen, aber nicht mehr die Nachricht (Display). Und Du meinst, das geht in der RC2 ?

Fel

MotMann

Quote from: feline on January 02, 2006, 12:02:07 PM
Dark_Neakro, ich glaube MotMann meint, das Gäste noch den Messageindex sehen sollen, aber nicht mehr die Nachricht (Display).
Yes.... :)

feline

Ich weiss nun nicht, ob die RC2 darür rechte vergibt .. aber es ist echt einfach machbar, was Du willst.

Du must nur eine kleinigkeit in der MessageIndex.template.php deines Themes zu ändern:

Suche nach:

foreach ($context['topics'] as $topic)
{
echo '
<tr class="windowbg2">
<td valign="middle" align="center" width="5%">
<img src="', $settings['images_url'], '/topic/', $topic['class'], '.gif" alt="" />
</td>
<td valign="middle" align="center" width="4%">
<img src="', $topic['first_post']['icon_url'], '" alt="" />
</td>
<td class="windowbg" valign="middle">
', $topic['first_post']['link'];


und ändere die letzte Zeile in:

<td class="windowbg" valign="middle">
', ($context['user']['is_logged']) ? $topic['first_post']['link'] : $topic['first_post']['subject'] , '';


Edit:
Grad gesehen .. da gibts auch noch ein Last_Post ..

                if ($settings['images_url'] != $settings['theme_url'] . '/images' || file_exists($settings['theme_dir'] . '/images/icons/last_post.gif'))
                        echo '
                                        <a href="', $topic['last_post']['href'], '"><img src="', $settings['images_url'], '/icons/last_post.gif" alt="', $txt[111], '" title="', $txt[111], '" border="0" style="float: right;" /></a>';
                echo '
                                                <span class="smalltext">
                                                        ', $topic['last_post']['time'], '<br />
                                                        ', $txt[525], ' ', $topic['last_post']['member']['link'], '
                                                </span>
                                        </td>';


Muss auch nach dem Schema geändert werden.

Und .. das ist dann für ALLE Board. Willst Du das so haben? Ansonsten wird aufwendiger ...

Fel


dieter4

Quote from: feline on January 02, 2006, 12:02:07 PM
Und Du meinst, das geht in der RC2 ?

jo ich habs probiert (man muss sich ja auskennen ;) ) und dann hats gefunzt. ich gluab das war in den forumseinstellungen.

feline

Oha .. donnerwetter ..
hätte ich nun nicht gedacht .. aber ok, ich würds gut finden.

Fel

MotMann

Quote from: feline on January 02, 2006, 03:33:40 PMEdit:
Grad gesehen .. da gibts auch noch ein Last_Post ..

Aber da ist nicht die Zeile  <td class="windowbg" valign="middle">  :( Wo soll ich es denn da einfügen?

Quote from: Dark_Neakro on January 03, 2006, 12:47:12 PM
jo ich habs probiert (man muss sich ja auskennen ;) ) und dann hats gefunzt. ich gluab das war in den forumseinstellungen.
Okey.. aber ich muss noch mit dem Update warten. :(

MotMann

Quote from: feline on January 02, 2006, 03:33:40 PMEdit:
Grad gesehen .. da gibts auch noch ein Last_Post ..

                if ($settings['images_url'] != $settings['theme_url'] . '/images' || file_exists($settings['theme_dir'] . '/images/icons/last_post.gif'))
                        echo '
                                        <a href="', $topic['last_post']['href'], '"><img src="', $settings['images_url'], '/icons/last_post.gif" alt="', $txt[111], '" title="', $txt[111], '" border="0" style="float: right;" /></a>';
                echo '
                                                <span class="smalltext">
                                                        ', $topic['last_post']['time'], '<br />
                                                        ', $txt[525], ' ', $topic['last_post']['member']['link'], '
                                                </span>
                                        </td>';


Muss auch nach dem Schema geändert werden.

Und .. das ist dann für ALLE Board. Willst Du das so haben? Ansonsten wird aufwendiger ...
Ich weiß nicht, wo ich da den geänderten code....

<td class="windowbg" valign="middle">
', ($context['user']['is_logged']) ? $topic['first_post']['link'] : $topic['first_post']['subject'] , '';

.....einfügen soll?
Und, der Gast wird nicht zur Registrierungsseite gelinkt, wenn er die Beiträge direkt lesen möchte, sondern da passiert einfach gar nichts.

Wenn ich doch bloß schon die neue SMF Version uploaden könnte.. :(

feline

Das Last_post kannst du auch ganz weglassen, da deine gäste ja eh nix lesen sollen ...

if ($context['user']['is_logged'])
{

                if ($settings['images_url'] != $settings['theme_url'] . '/images' || file_exists($settings['theme_dir'] . '/images/icons/last_post.gif'))
                        echo '
                                        <a href="', $topic['last_post']['href'], '"><img src="', $settings['images_url'], '/icons/last_post.gif" alt="', $txt[111], '" title="', $txt[111], '" border="0" style="float: right;" /></a>';
                echo '
                                                <span class="smalltext">
                                                        ', $topic['last_post']['time'], '<br />
                                                        ', $txt[525], ' ', $topic['last_post']['member']['link'], '
                                                </span>
';
}

echo '
                                        </td>';


Nur dir sollte klar sein, das die Links auch noch an anderen Stellen auftauchen, z.B. im Boardindex .. neue Nachrichten ..

So einfach ist das nicht

Fel

Mermi189

Hallo Neox

Ich habe die Version 1.1 RC2 ... Ich habe jetzt alle Varianten versucht, aber es funzt bei mir einfach nicht.

Was mache ich denn falsch ? Ich habe auch bei Foren Einstellungen erlaubt, dass die Besucher die Kategorien durchsuchen können, einfach die Threads nicht sehen können...


Soll ich mal die boardindex Datei hier im Forum zeigen ?

Wenn du mir helfen könntest wäre ich froh, habe auch die anderen Beiträge gelesen hat mir leider nicht geholfen.

noex

Quote from: Mermi189 on February 27, 2006, 03:01:04 PM
Was mache ich denn falsch ? Ich habe auch bei Foren Einstellungen erlaubt, dass die Besucher die Kategorien durchsuchen können, einfach die Threads nicht sehen können...

Entweder ist es schon so spät, ich so müde, oder ist steh einfach nur auf dem Schlauch. Aber ich verstehe diesen Satz nicht. Du gibt den Gästen das Recht das Board zu betreten, und weiter?

Mehr musst du eigentlich auch schon nicht mehr machen, außer den Gästen das Recht für dieses Board geben (also der Hacken muss da sein, beim Board)

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

Mermi189

So ich denke so ist es besser.

Also ich möchte , dass meine Gäste bis hier zu diesem Bild Zugriff haben, aber danach um die Threads zu sehen, sich registrieren müssen.

So hier mal das Bild:


[nofollow]

Ps: Ich habe auch das Häckchen gesetzt dass Gäste mein Forum sehen können...

feline

Ich habe dazu ein Mod gemacht, wo man das per Board einstellen kann und welches die Hintertüren "Recent" und "Calendar" einschliess.

Findest Du auf meine Site (nach der Registrierung) im Downloadbereich ..

Enhanced Board Permission (1.1 RC2)
I have add a new global Permission for each board.
This permission shows as "Warning Guest's".
If you enable this option, Guest can't read any topic on this board, but a Warnig is displayed, to register first.

Fel

Alduras


feline


Polly Pread

Quote from: Dark_Neakro on January 02, 2006, 08:42:36 AM
in der RC2 kann man den gästen den kompletten zugriff verweigern

hallo Dar_Neakro!
verstehe ich das richtig, dass man einfach nur bei "Generelle Berechtigungen - Unregistrierte Gäste" die häkchen von den gästen entfernen muss? oder muss man noch was anderes ändern? hab rc2 erst drei tage... ;)

dieter4

nein du musst im RC2 bei Admin-CP -> Forumeinstellungen -> Gästen das Anschauen des Forums erlauben das Häckchen wegmachen.

Polly Pread

Danke!  :)  das hat sofort geklappt!  :D
da freu ich mich aber wirklich! erspart mir eine menge arbeit! *bounce*

CatsFriends

Quote from: Dark_Neakro on May 31, 2006, 11:30:26 AM
nein du musst im RC2 bei Admin-CP -> Forumeinstellungen -> Gästen das Anschauen des Forums erlauben das Häckchen wegmachen.

Hallo,

bin neu hier und bisher ganz begeistert von der Software!  :)

Habe jedoch eine Frage bzw. ein kl. Problem und verstehe diesen Thread nicht ganz.

Ich habe das Häckchen bei Gäste dürfen das Forum anschauen angeklickt. Denn ich möchte, dass die Gäste das Forum und alle Beiträge lesen können. Dort, wo sie nicht lesen dürfen, habe ich beim Erstellen des Forums das Häckchen bei Gäste rausgenommen.
Jedoch kann man als nicht registriertes Mitglied nicht die Foren einsehen, wie eigentlich gedacht.  :-\ Was mache ich da falsch?

Wäre über Hilfe sehr dankbar!

Liebe Grüße, Jessi

Jorin


CatsFriends

Quote from: nehcregit on June 22, 2006, 10:44:29 AM
Haben diese Problemboards eventuell lokale Berechtigungen?

Soweit ich weiss, nein.

Bitte dringend um eure Hilfe!  :(

Jorin

Da brauchts einen Admin-Zugang zum Forum, damit man sich das mal anschauen kann. Aber bitte nicht hier öffentlich  ;)

CatsFriends

Habe das Problem nach wie vor, dass ich das Häckchen gemacht habe, das Gäste das Forum sehen und lesen dürfen. Aber es funktioniert nicht! Gäste sehen nichts!  ::)

Wer kann mir helfen?

Jorin


CatsFriends


sonst-was

Quote from: feline on November 04, 2005, 10:02:03 AM
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

Hi,

danke schonmal für diese Codeschnippsel. Weiß du zufällig auch noch wie eine Negation lauten müsste (also das Gäste nur die Bereiche nicht sehen dürfen, welche *nicht* in der Liste ist)?

Vielleicht so?
OR b.ID_BOARD NOT IN (##, ##, ##)
MfG sonst-was,

"Heute ist nicht das Ende aller Tage, denn Sataan macht Urlaub..."

michael24179

wie ist es bei der version 1.1.3 Ich habe die codes probiert und irgendwie gehts nicht richtig. Vom Portal aus kommed ich überall rein und wenn ich im Portal auf Forum klicke, dann kommt eine fehlermeldung. Als Registrierter User geht alles normal.

feline

Was heisst vom Portal? TinyPortal oder was?
Wenn dem so ist, wird dein Portal wohl die tabelle selber lesen. Da wirkt die Änderung dann nicht.
In dem fall musst du in deiner Portalsofware suchen, wo diese die Boards liest ...

Fel

olgachen

Hallochen,

wo was muss ich ändern, damit die User-Profile vom Gast versteckt werden?

Vielen Dank schon mal im Voraus

Olga

olgachen


Advertisement: