PHP: Zugiff nur von bestimmer anderer Datei

Hey,
ich versuch grad ein Login-Script zu schreiben, dieses Script soll, falls die Authetifizierung erfolgreich war auf eine php-Datei weiterleiten, dies funktioniert auch ohne Probleme. Nun soll diese php-Datei so geschützt werden, dass sie nur ausgeführt wird, falls von der Login-Seite darauf weitergeleitet wurde. Ansonsten soll eine Fehlermeldung wie “Zugriff verweigert” ausgegeben werden.

Bei Joomla z.B. werden fast alle Dateien so ähnlich geschützt, da steht immer oben folgende Zeile drin:

Ich hab aber keine Ahnung woher das “_VALID_MOS” kommt.

Gibt es die Möglichkeit, das so zu machen?

Danke im Vorraus, LeeXX

Joomla! kontrolliert nur, ob der Besucher eingeloggt ist (über Sessions).
Daher kommt das ValidMos.
Joa, du musst deinen Login halt nur über Sessions erweitern. Über den Login wird eine
erzeugt und die Datei kann nur mit laufender Session aufgerufen werden.

[quote=“TrekWork”]Joomla! kontrolliert nur, ob der Besucher eingeloggt ist (über Sessions).
Daher kommt das ValidMos.[/quote]
Äh, nein, das stimmt nicht. Das ist eine einfache Konstante - das Prinzip ist folgendes:

[code]
-> main.php

<?php define('EINE_KONSTANTE', true); require './include.php'; ?>

-> include.php

<?php defined('EINE_KONSTANTE') or die('Kein direkter Zugriff!'); echo 'Ich wurde korrekt eingebunden. :)'; ?>[/code]

Das Script, welches Dateien einbinden will, definiert eine beliebige Konstante. Das Script, das eingebunden werden soll, prüft, ob die Konstante existiert - wenn der User sie direkt aufgerufen hat, ist das nicht der Fall und es bricht mit einem Fehler ab. Deswegen so zuverlässig, da User mit Input keine Konstanten definieren können. :wink:

Uhm, stimmt. Ich hab mir das im Quelltext nochmal angeschaut - hab da gerade
was mit einem anderen Script verwechselt. Gut zu wissen :wink:

Danke habs jetzt über Sessions geschafft.

Neues Problem:
Ich brauch ne weiterleitung per php, aber KEIN header(Location:…)
der header funktioniert in meinem Script definitiv nicht.
Gibts eine Alternative?

Danke, LeeXX

meta refresh dingenskirchen

4 heißt: weiterleitung in 4 sekunden
bla.php wohin.

Danke, aber wie krieg ich diesen meta-tag jetzt in mein php-code?

echo? :wink:

Also du solltest wissen, wie man was in den Quelltext “schreibt”.
Das dürften die Grundlagen sein :wink:
Aber wie scram schon sagte echo
Beispiel

<?php if(logged_in) { echo '<meta http-equiv="refresh" content="4;URL=bla.php">Du wirst in 4 Sekunden weitergeleitet.'; } else { echo 'Nix da!'; } ?>