Zugriffsberechtigung

HI all :slight_smile:
Ich habe da ein Problem und denke es ist mit php zu lösen.
Also:
Ich habe mehrere Seiten wie die Regestrier Datei (reg.php) die zu seiten wie work.php
weiterleiten. Ich möchte gerne, dass die Detai work.php nur dann dem User ausgeführt wird, wenn er durch reg.php dahingeleitet wird. Klartext: Sie darf nicht ausgeführt werden, wenn man sie manuell (work.php) aufruft. früher habe ich das mit post geregelt. sprich bei der Reg Datei Stand dann:
[PHP]

.... .... [/php] und dann bei der Datei work.php: [PHP] <?php $test = $_POST['berechtigt']; if ($test == "Ja") { //Inhalt und Code } else { print("Sie sind nicht berechtigt diese Seite einzusehen"); } ?> [/PHP] Da ich aber momentan nicht mehr mit der Postmethode übergeben kann, da ich in eineigen Dateien kein Formular habe, brauche ich eine andere Zugriffsberechtigung

Hoffe auf Hilfe

mfg web_spider :smiley:

mach’ das lieber mit sessions, dann haste volle kontrolle darüber.

Nils aka XraYSoLo

Wo kann ich das mit Session lernen auf http://tut.php-q.net/ verstehe ich es nicht. Gibts noch andere gute Seiten?

Hi erstmal Web_Spider!
Kleines tut für sessions:

Um Sessions in deiner Datei verwenden zu können, musst du vor allem Code, der angezeigt wird „session_start()“ schreiben… Das heißt am Besten gibts du als allererstes in deiner Datei folgendes ein:
[php]<?php session_start(); ?><Doctype…>[/php]
Für diese Datei sind die Sesseions jetzzt sozusagen „freigeschaltet“!
Um nun Sachen in einer Session zu speichern gibt es den superglobalen Array: $_SESSION… Nehmen wir mal dein Beispiel… Du willst, dass die Seite nur angezeigt wird, wenn man über einen Link geleitet wurde… Dann musst du der Session etwas zuweisen… Meinetwegen: erlaubt… (Für „Zugriff erlaubt“)… das speicherst du nun so in der Session ab:
[php]$_SESSION[‚erlaubt‘]=true;[/php]
jetzt ist in der Session: „erlaubt“ der Wert true gespeichert…
Das wäre der erste Teil… (Daten in eine Session schreiben). Kommen wir zum zweiten Teil, dem auslesen (gleich mal ein Beispiel):
[php]var_dump($_SESSION[‚erlaubt‘]);[/php]
Ausgabe:

bool(true)

Es hat also funktioniert! Natürlich kannst du in einer Session auch Strings oder Integer speichern… Das würde genau so funktionieren… Also noch ein Beispiel: Du willst „Hallo“ in einer Session namens „Name“ speichern! Code:
[php]<?php session_start() $_SESSION['Name']=Hallo; var_dump($_SESSION['Name']); ?>[/php]
Ausgabe:

string(5) „Hallo“

Noch ein letztes Beispiel: Du Willst eine Überprüfung machen, ob der User auf „legalem“ Weg auf deine Seite gekommen ist… Also schreibst du ganz einfach eine if-else-Abfrage:
[php]<?php session_start(); /*In einer anderen Datei muss die Session natürlich auf true gesetzt worden sein*/ if($_SESSION['erlaubt']==true){ echo "HEY, HO! Du Bist ein guter Mensch!";} else{ echo "Mieser Hacker!"} //ZUm Schluss noch die Session-Variable wieder auf false setzten $_SESSION['erlaubt']=false; ?>[/php]

Hoffe, ich konnte dir das Thema ein bisschen besser erklären!
Gruß, Fredmonster!

Thx Thx Thx Thx
Kann man damit aucj ein Login beibehalten? und muss mann die sesion wieder wegmachen am ende eines BEsuches?

klar kannste so einen login machen, du musst die session nicht weggmachen kanst es aber, mit:
[php]
session_destroy();
[/php]

dir ist aber klar, dass die session gerade dadurch „weggemacht“ wird?

Nils aka XraYSoLo

dir ist aber klar, dass die session gerade dadurch "weggemacht" wird?

Nils aka XraYSoLo

Wodurch? durch session_destroy();? ist doch sinn der sache oder?

genau da ist ja der widerspruch darin.

Nils aka XraYSoLo

Ach so ja sry xD
Sagt mal ist das nicht gefährlich, wenn man dies Session nicht Zerstört? wenn
der User die Seite verlässt? oder geschieht das Automatisch ^^ siehe Wiederspruch von XraYSoLo

mfg web_spider :smiley:

wieso soll das gefährlich sein? alles daten der session werden gelöscht, fertig.

Nils aka XraYSoLo

jetzt habe ich ein Problem:
Wenn jetzt die Datei User.php (soll Zugriffsgeschützt sein) das erste mal aufgerufen wird wird der Code ausgeführt. WEnn ich dann noch ein Paar mal
die Seite aufrufe klappt die Zugriffsberechtigung. Anscheinend wurde das erste mal noch keine Sessionid dem user zugeteilt. ich weiß es nicht.

mfg web_spider :smiley:

wie soll man das jetzt verstehen?

Nils aka XraYSoLo

genau so xD

index.php
da machste den session-kram,
die session wird beibehalten, bis session_destroy();
zum beispiel beim logout
wenn du ne session nur nach dem einlogg-formular startest,
kannste mit
if (isset($_SESSION[‚DERNAME‘])) {

}
testen ob eingeloggt oder nich,
am besten du speicherst die ID die users rein, so kannste
die immer benutzen für weitere abfragen …