2009-09-19 10 views
5

Ich bin neu in Drupal. Es ist eine sehr dumme Frage, denke ich. Ich habe das PHP-Filtermodul aktiviert, damit ich eine neue Seite mit meinem eigenen PHP-Code erstellen kann. Diese bestimmte Seite möchte ich nur authentifizierten Benutzern zugänglich machen, die für anonyme Benutzer nicht sichtbar sind. Wie kann ich das erreichen? Kann ich Berechtigungen für einzelne Seiten in Drupal festlegen? Oder ist es möglich, zu identifizieren, dass ein anonymer Benutzer versucht, über PHP-Code auf die aktuelle Seite zuzugreifen?Einstellung Seite Zugriffsberechtigungen in Drupal

Antwort

5

Da Sie erwähnt haben, dass Sie neu bei Drupal sind, ein Wort der Vorsicht - mit PHP-Filter für Ihren benutzerdefinierten Code gilt als schlechte Praxis. Es ist ein Hack und es ist ein Sicherheitsproblem.

Es ist viel besser, Ihr benutzerdefiniertes Modul zu schreiben, und es kann seine eigenen benutzerdefinierten Berechtigungen implementieren, die Sie überprüfen können, etc. usw. Es gibt eine nette sample module, die Sie überprüfen können, wie es aussehen soll. Schauen Sie sich natürlich auch das Handbuch an. Es ist wirklich nicht so schwer wie es klingt.

Aber zurück zu Ihrer Frage. Sie können die folgende Zeile in der PHP-gefilterten Seite setzen:

global $user; 

Dies werden Sie auf ein Objekt zuzugreifen, das den aktuellen Benutzer darstellt. $user->roles ist ein Array, das die Rollen des Benutzers darstellt. Sie können nur überprüfen, ob es (oder etwas besser - eine benutzerdefinierte Rolle, die Sie erstellen) hat.

+0

Danke Eli :) Sorry, ich bedanke mich recht spät. Ich nahm Ihre Warnung sehr ernst :) Ihre Vorschläge und Jordis Code machten es sehr einfach! Obwohl ich es bald durch das Modul "Einfacher Zugang" ersetzt habe. Es ist wirklich so einfach wie es sagt und es hat meine Anforderungen perfekt erfüllt. Ich werde Ihren Link für das Beispielmodul verwenden, um in Zukunft eigene Module zu erstellen. Es ist ein guter Starter! – Nikhil

2

Um anonyme Benutzer zu verhindern eine Seite zugreift, können Sie den folgenden PHP-Code verwenden können:

<?php 
// we have to access the content of the global-scope variable $user 
global $user; 

//Checking if the user is registered 
if (in_array('authenticated user', $user->roles)==FALSE) { 
header('Location:/content/restrictedaccess') ; 
} 
?> 

// Seite Inhalt

- Weitere Informationen darüber, wie ich mit Drupal meine Website erstellt hier: http://modeling-languages.com/content/how-i-created-site-drupal

4

Nachdem oben Antworten gelesen haben, können Sie auch das sofort verfügbare simple access Modul in Betracht ziehen. Es entspricht meinen Anforderungen und wenn Sie PHP-Filterung vermeiden möchten und aus irgendwelchen Gründen kein eigenes Modul erstellen möchten, können Sie simple access auschecken.

+0

Danke! Das hat mir geholfen. – BigJoe714

Verwandte Themen