[gelöst]Zugriff auf Node durch Eingabe des Nodepfades in der Adressleiste verhindern
am 23.08.2011 - 07:44 Uhr in
Hallo,
ich möchte verhindern, dass ein User einen Node durch die Eingabe des entsprechenden Pfades
in der Adressleiste erreicht. Der Node soll nur durch einen Link erreichbar sein.
Ist es möglich das zu realisieren?
- Anmelden oder Registrieren um Kommentare zu schreiben

Dürfte so ohne weiteres nicht
am 23.08.2011 - 07:55 Uhr
Dürfte so ohne weiteres nicht möglich sein, da beide Sachen im Grunde das gleiche sind. Bei beiden Varianten wird einfach nur eine Anfrage mit der URL an den Server gesendet. Der Link übernimmt eigentlich nur die Eingabe in die Adresszeile, vereinfacht ausgedrückt. Man könnte evtl. mit dem Refferer arbeiten, wenn der Link auf einer bestimmten Seite auftaucht, ist aber etwas Gefummel.
Oder man hängt beim Link noch einen kryptischen Zahlen-Code als Parameter an und zeigt den Node nur, wenn der Code übergeben wird und stimmt, aber das klappt auch nur, wenn die Leute den Code nicht kennen.
Was genau hast du denn vor?
Ich möchte ein Modul
am 23.08.2011 - 08:01 Uhr
Ich möchte ein Modul schreiben, in dem User Daten eingeben. Anhand dieser Daten wird der User dann auf einen Webform Node weitergeleitet (oder auch nicht, abhängig von der Dateneingabe). Das Webform Formular soll nur durch mein Modul erreichbar sein.
Mmmh, du könntest dem User in
am 23.08.2011 - 08:38 Uhr
Mmmh, du könntest dem User in deinem Modul etwas in die Session schreiben und diesen Eintrag verarbeiten.
Beispiel:
User gibt Daten ein und sendet diese ab --> dein Modul verarbeitet die Daten und kommt zu dem Schluss "der darf zur Webform" --> also trägst du in die Session des Users einen Wert ein ( webform_access => true oder so). Beim Aufruf der Webform prüfst du (hook_nodeapi oder irgendwelche Webform-API-Funktionen, falls vorhanden), ob der Session-Wert "webform_access" auf true steht. Wenn ja, ist alles ok, wenn nicht, wird der User auf eine andere Seite geleitet. Anschließend entfernst du den Session-Wert wieder.
Wenn ein User jetzt einfach so den Webform-Node aufruft, hat er natürlich nicht den Session-Wert und wird sofort weitergeleitet.
Vielen Dank. Das werde ich
am 23.08.2011 - 08:47 Uhr
Vielen Dank. Das werde ich mal testen.
Oder, was dem ziemlich
am 23.08.2011 - 09:01 Uhr
Oder, was dem ziemlich ähnlich ist, du übergibst beim Aufruf des Formulars einen Token, den du im Hintergrund temporär in der DB gespeichert hast. Das Formular selbst wird nur ausgegeben, wenn der Token in der DB gefunden wurde und wird dort nach dem Aufruf des Formulars gelöscht, so dass der Aufruf nur einmal funktioniert.
Es hat funktioniert. Ich habe
am 25.08.2011 - 12:00 Uhr
Es hat funktioniert. Ich habe in der Session $SESSION['bliz-user']['webform_access'] = true eingetragen.
In einer hook_nodeapi-Function ist folgendes eingetragen:
function bliz_nodeapi(&$node, $op, $teaser, $page){
switch($op)
{
case 'view':
if ($node->type == 'webform')
{
if (!isset($_SESSION['bliz_user']['webform_access']))
{
drupal_goto('<front>');
}
}
break;
}
}
Danke für die Hilfe.