Uutiset:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord

Main Menu
Advertisement:

Eigene Seite für Gäste unsichtbar machen

Aloittaja Andy42, marraskuu 05, 2006, 05:39:28 AP

« edellinen - seuraava »

Andy42

Hallo

Ich habe mit dieser Anleitung eine eigene Seite für mein SMF-Forum erstellt. Das Problem vor dem îch stehe, ist, wie kann ich den Link zu dieser Seite für unsere Mitglieder sichtbar machen aber für unsere Gäste soll sie zwecks Missbrauch unsichtbar gemacht werden. Beim phpBB2 hab es ein <!-- BEGIN switch_user_logged_in --> Code. Aber wie mache ich das bei SMF? Der Link soll in der Board Naviagtion (menubox) eingebaut werden.

Danke für Hilfe!

MfG
Andy42

mediman

per isallowed kann man sich die Berechtigungen selber erstellen.
Auch für Subaktionen wie action=bla;sa=blu ...

mediman
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

Flitsch

Lainaus käyttäjältä: mediman - marraskuu 05, 2006, 06:01:04 AP
per isallowed kann man sich die Berechtigungen selber erstellen.


??? öh? mal für blöde?! Ich bin auch neu...

dieter4

Du legst in der Subs.php die entsprechdne Berechtigung fest (den Name dafür) und fragst dann per isallowed('<deinberechtigungsname>') diese Berechtigung für das Mitglied ab, das gerade diese Seite aufruft.

Andy42

Lainaus käyttäjältä: Dark_Neakro - marraskuu 05, 2006, 07:16:58 AP
Du legst in der Subs.php die entsprechdne Berechtigung fest (den Name dafür) und fragst dann per isallowed('<deinberechtigungsname>') diese Berechtigung für das Mitglied ab, das gerade diese Seite aufruft.
Danke erst Mal!
Wenn du uns in Form eines Beispiel helfen könntest, dann wären wir dir sehr dankbar und wo der Code platziert werden muss um keine Fehlermeldung auszulösen! Denn soviel PHP-Kenntnis habe ich nicht.

dieter4

OK sorry es ist die ManagePermissions.php :-[

Aber so geht es (nur für die deutsche Sprache):

Suche nach:
Koodi (managePermissions.php) [Valitse]

'profile_remote_avatar' => false,
),


Füge danach ein:
Koodi (managePermissions.php) [Valitse]

'ownpage' => array(
'see_site' => false
),



Jetzt die Sprachdateien anpassen:
Suche nach:
Koodi (ManagePermissons.german.php) [Valitse]

$txt['permissions_title'] = 'Berechtigungen editieren';
$txt['permissions_modify'] = '&Auml;ndern';
$txt['permissions_access'] = 'Zugriff';
$txt['permissions_allowed'] = 'Erlaubt';
$txt['permissions_denied'] = 'Verboten';


Füge davor ein:
Koodi (ManagePermissons.german.php) [Valitse]

$txt['permissionname_see_site'] = 'Eigene Seite anschauen';
$txt['permissionhelp_see_site'] = 'Dies ist die Berechtigung fuer deine Seite. Wer diese Berechtigung hat sollte auf deine Seite zugreifen koennen, soweit die Abfrage richtig platziert ist.';



Jetzt muss du folgenden Code so in dem Quellcode deiner Seite plazieren, dass man unbedingt diese abfarge über sich ergehen lassen muss (ambesten in einer if-Abfrage):
isallowed('see_site')

Andy42

Danke!  :)

Ich habe den Code im ManagePermissons.german.php erweitert, so habe ich auch einen Titel:

$txt['permissiongroup_ownpage'] = 'Eigene Seite';
$txt['permissionname_see_site'] = 'Eigene Seite anschauen (nur Mitglieder)';
$txt['permissionhelp_see_site'] = 'Dies ist die Berechtigung fuer deine Seite. Wer diese Berechtigung hat sollte auf deine Seite zugreifen koennen, soweit die Abfrage richtig platziert ist.';


Doch wo und wie baue ich den Code jetzt ein so wie du das gedacht hast?

isallowed('see_site')

An diesem Beispiel am besten, da auch ich diese Files (nur anders benannt) verwende, um das Forumlar zu laden.

Portal.php
<?php
if (!defined('SMF'))
die('Hacking attempt...');

function 
PortalIndex()
{
global $txt$scripturl$db_prefix$modSettings$user_info$context;

loadTemplate('Portal');


// Link tree....
$context['linktree'][] = array(
'url' => $scripturl '?action=portal',
'name' => "Portal"
);

$context['page_title'] = "Portal";
}
?>


Portal.template.php
<?php

function template_main()
{
global $context$settings$options$txt$scripturl;

echo '
<table width="100%" border="0" cellspacing="0" cellpadding="3" align="center">
<tr>
<td>'
theme_linktree(), '</td>
</tr>
</table>

<!-- hier kommt dann dein HTML Code -->
'
;
}


?>




dieter4

Versuch mal das:

Koodi (Portal.php) [Valitse]

<?php
if (!defined('SMF'))
die('Hacking attempt...');

function 
PortalIndex()
{
global $txt$scripturl$db_prefix$modSettings$user_info$context;

if(!allowedTo('see_site'))
die('No Permission...');

loadTemplate('Portal');


// Link tree....
$context['linktree'][] = array(
'url' => $scripturl '?action=portal',
'name' => "Portal"
);

$context['page_title'] = "Portal";
}
?>



Mir ist jetzt aber die korrekte Fehlerbehandlung bei nichterlaubten Zugriffen von SMF entfallen. Deshalb etwas brutal mit die().

Andy42

....  ;D schon etwas brutal der die() Code. Funktioniert, auch wenn es nicht gerade die feine Art ist. Leere Seite mit der Zusatzinfo.

Mein Ziel wäre es, das Headline und Footer trotzdem angezeigt wird inkl. einer "Fehlermeldung" in der mitte wie sie man sie bei SMF gewohnt ist. Hättest du da was in der Trickkiste?

Andy42

Wäre nett, wenn mir jemand dabei helfen könnte eine angenehmere Lösung zu finden, als die brachiale Variante.  :) Danke!

MfG
Andy42

Andy42

Ein Mitglied (der sich mit PHP-Programmierung etc. etwas auskennt) aus unserem Forum hat mir - auf meine Anfrage - den richtigen Tipp gegeben.

Anstatt....

if(!allowedTo('see_site')
     die('No Permission...');


.... soll ich diesen Code nehmen...

if ($user_info['is_guest'])
      is_not_guest();


... und schon habe ich das gewünschte Ergebnis. Denn der Gast, der das Formular anschauen will, muss sich entweder einloggen oder registrieren.


MfG
Andy42

mediman

Lainaus käyttäjältä: Andy42 - marraskuu 06, 2006, 05:32:13 IP
Ein Mitglied (der sich mit PHP-Programmierung etc. etwas auskennt) aus unserem Forum hat mir - auf meine Anfrage - den richtigen Tipp gegeben.

Anstatt....

if(!allowedTo('see_site')
     die('No Permission...');


.... soll ich diesen Code nehmen...

if ($user_info['is_guest'])
      is_not_guest();


... und schon habe ich das gewünschte Ergebnis. Denn der Gast, der das Formular anschauen will, muss sich entweder einloggen oder registrieren.


MfG
Andy42

Der Code erfüllt für externe Seiten sicher seinen Zweck, aber so vergibt man sich die Chance auf guten, schnellen Code.

SMF hat eine saubere Trennung zw. Design (Template) und Funktion (Sources), dass sollte man auch nutzen.
Berechtigungen, die im Admincenter auch definierbar sind, lassen sich mit der Guestabfrage jedenfalls nicht realisieren.
My Projects: http://ticker-oase.de 
Please do not PM me with support requests.

dieter4

Mir iste jetzt wirklich entfallen, wie die Fehlerbehandlung von SMF für diese Situation aussieht. Aber mediman hat Recht. Es ist nicht gerade fleixbel und/oder schnell ;)

Andy42

Mag ja alles stimmen. Doch der guest-Code erfüllt seinen Zweck, ähnlich wie ich es eigentlich haben wollte, und die Berechtigung dazu lässt sich im Admincenter aktivieren/deaktivieren. Wenn auch leider nicht für einzelne externe Seiten, was vermutlich reiner Luxus wäre.

Wenn es einen besseren Vorschlag gibt als der meinen und SMF-Freundlicher ist, dann verwende ich ihn gerne - bin immer offen für Neues. Aber der "Brachialvorschlag" von Dark_Neakro war leider nicht zufriedenstellend und es kam bis jetzt von seitens SMF auch keine weitere Vorschläge.  ;)

MfG
Andy42

Advertisement: