Aufruf einer Seite nur nach Aufruf einer anderen möglich

Hallo!

Heute habe ich folgendes Anliegen:

Ich habe die Datei /contact.php und die Datei /message_send.php
Nun möchte ich, dass man die /message_send.php nicht auch einfach so aufrufen kann, sondern ausschließlich dann, wenn man von der /contact.php kommt.

Kommt man von einer anderen URL, oder tippt diese manuell in den Browser ein, soll die nicht erreichbar sein, sondern nur wenn man von der oben besagten Datei kommt - Nun, wie macht man sowas?

DANKE schonmal vorab!

Ich denke wenn wir deinen Quellcode sehen könnten wäre es uns hilfreicher!

Hä? Wozu dat denn?
Ist völlig egal was da drinsteht, und wenns ne leere Seite wäre. :slight_smile:
Suche eine Lösung, die generell funktioniert für sowas.

Egal ob das nun eine Formular-Bestätigungs-Seite ist, oder ob nur 1 Wort und sonst nichts in der Datei steht die sonst nicht aufgerufen werden darf.

mit sessions.

wenn session nicht registriert + aufruf: verweigern
wenn sessione registriert + aufruf: erlauben

da braucht man auch keinen code zu posten. ist 'ne ganz einfache ifelse-abfrage.

Nils aka XraYSoLo

Oder du setzt in einer Datei eine variable und prüfst in der andere Datei, ob diese Variable gesetzt ist.

contact.php:
[php]$intern=TRUE;
include(„message_send.php“);[/php]message_send.php:
[php]if(!isset($intern)){
header(„Location: contact.php“);
}[/php]Achtung! Diese Anweisung muss ganz am Anfang der Datei stehen!

Das bewirkt, dass beim direktem Aufruf (oder wenn die message_send.php ohne die Variable includiert wird) der Besucher zur contact.php weitergeleitet wird.

Ups! Entschuldigung ich habe deine Frage nicht ganz richtig verstanden! Aber wie schon gesagt mit der Session geht das oder mit dem if-else Zewig

[php]
if ($_POST==„Passwort“)
echo „TEXT der Seite“;

else
echo „Bitte von message_send.php kommen!“;

Für das Passwort kannst du ein Hidden-Element benutzen damit man das Passwort nicht sieht!

[/php]

Wo soll der das Passwort denn eingeben? Der will eine Datei über eine andere aufrufen mittels include() oder so. Diese Datei soll aber NUR über diese Möglichkeit aufrufbar sein und nicht anders. Du hast es also schon wieder falsch verstanden! :stuck_out_tongue:

Und ein Passwort per hidden input zu senden ist schon seit Jahren doof! Weil kann man im QT lesen und so…

Gelöst!

Vielen lieben Dank euch allen!

@MAPtheMOP:
Genau das war es was ich gesucht habe. ;Jump
Ich habe jedoch nur das gemacht:
message_send.php:
[php]
if(!isset($intern)){
header(„Location: contact.php“);
} [/php]in der ersten Datei nichts, da man sowieso durch das Formular schon auf die message_send.php geleitet wird. Ist dies dann deswegen verkehrt, nicht oder? Funktionieren tuts auf jeden Fall auch so.

@HalloHTML:
Ja, haste wieder falsch aufgefasst, denn von einem Passwort habe ich nie gesprochen - aber kein Problem. :slight_smile:

Ups, jetzt hab ich mich zu früh gefreut. :mrgreen:
Geht doch nicht.

Füge ich nur den Code in der message_send.php ein, dann kann ich diese Datei zwar direkt nicht mehr aufrufen. Aber auch nach Absenden des Formulars nicht mehr.

Und füge ich auch den Code in der contact.php ein, dann geht nichts mehr. Denn dann kann ich die contact.php überhaupt nicht mehr aufrufen da ich sofort zur message_send.php geleitet werde.

Hmmmmm, also irgendwas stimmt an der Anleitung wohl nicht? gg

[PHP]if(!isset($_POST)){
header(„Location: contact.php“);
} [/PHP]

Danke, habe ich so abgeändert in der ersten Datei, bringt aber leider genausonichts. Ich kann die erste Datei nicht mehr aufrufen, wird immer sofort zur zweiten geleitet.

Ich bin davon ausgegangen, dass du in der ersten Datei den Code NICHT änderst! Also nix von mir reinnimmst!

Wenn ich das jetzt so verstehen muss dann schaut mal her:

contact.php → message_send.php
Das geht!

message_send.php
Das geht nicht!

Dann denke ich mir das so:
In contact.php wird ein Hidden Element deffieniert mit dem Wert

Passwort

also:
[html]
[/html]in der PHP Auswertungsdatei:

[php]if ($_POST[„abfrage“]==„Passwort“)

echo „Die Seite wird aus gegeben“;

else
echo „Die Seite wird nicht ausgegeben“;[/php]
So kann man bestimmen, ob man von der contact.php kommt den da wird das hiddenelement geliefert! Wenn man die Seite einfach so aufruft geht das dann nicht!

So war das mit dem Passwort gemeint!

Also jetzt kenn ich mich überhauptnichtmehr aus. gg

Ich versuch es nochmals besser zu erklären.
Also:
Es gibt die datei 1.php
Diese beinhaltet ein Formular, wenn man das Formular absendet, kommt man auf 2.php (per Header-Weiterleitung). In 2.php steht dann Vielen Dank bla bla…

So, nun kann man aber auch her gehn, und die 2.php direkt aufrufen, dies darf aber nicht der Fall sein, da darin ein Code von einem Partnerprogramm enthalten ist.

Daher darf die 2.php NUR nach Absenden des Formulares in 1.php aufrufbar sein. Es muss also geprüft werden, ob man von der 1.php kommt- dann darf man weiter auf 2.php -kommt man aber nicht von 1.php, darf man 2.php nicht aufrufen können.

Ich bin davon ausgegangen, dass du in der ersten Datei den Code NICHT änderst! Also nix von mir reinnimmst!
Versteh ich nicht, warum erklärst du es mir dann #[B]5 so ?[/B]

Schreib das am Anfang der 2.php:
[php]if(!isset($_POST || $_SERVER[„HTTP_REFERER“] != „1.php“)){
header(„Location: contact.php“);
}[/php]

So könntest du es ja gleich erklären:

in 1.php

Dein Formular z.B.

[HTML]

Benutzername: [/HTML]

in der 2.php:

[PHP]

//isset Befehl zum Überprüfen ob es den Wert gibt gibt.

if (isset($_POST[„name“]))

{

echo „Hallo " . $_POST[„uli“] .“. Wilkommen auf der Website";

}

//Falls es die Daten nicht gibt
else

{
echo „Sie kommen von einer ungültigen Seite“;

}

[/PHP]

@MAPtheMOP:
Habe ich gemacht, dann geht nichts mehr - dann bleibt die 2.php einfach leer und weis. Egal ob ich sie direkt aufrufe oder nach Absenden des Formulars in 1.php

@HalloHTML:
Nimms mir bitte nicht übel, denn so mein ichs nicht. Aber keine Ahnung wovon du sprichst, das hat damit überhaupt nichts zu tun, die ganzte Zeit schon nicht.

Ganz am Anfang hat einer Sessions angesprochen, glaube das wäre die Lösung, aber keine Ahnung wie.

schau mal nach:

http://schhome.sc.ohost.de/mist/

wähle da die Datei test.htm aus und trage irgendwas ein und sende es ab.

dann starte die test2.php einzeln und dann siehst du ein anderes Ergebnis:

Meinst du das so?:???::???:

Gut, dann kann ich dir auch nicht helfen. Der Code geht bei mir. Du hast ihn anscheinend nicht richtig eingebunden, vermute ich mal.

@HalloHTML:
Habe mir jetzt nochmals alles von vorne durchgelesen und probiert, das klappt alles nicht. Nun habe ich deinen Beitrag (#13) exakt so gemacht wie von dir beschrieben.

Aber auch das funktioniert leider nicht. :frowning:
Das „Die Seite wird nicht ausgegeben“ erscheint bei einem direkten Aufruf - OK - aber leider nicht nur hier, sondern auch nach Absenden des Formulars. Also auch wenn man direkt vom Formular kommt.

ÄNDERUNG:
Hab grad ein bisschen in Google gesucht und das gefunden. Aber versteh halt leider kein PHP und weis nicht was genau das macht. Aber müsste das nicht irgendwie so funktionieren?
[php]

<?php if (eregi("1.php", $_SERVER['PHP_SELF'])) { die("Direkt-Aufruf nicht erlaubt!"); } ?>[/php]

Irgendwie so schlicht und einfach, muss doch irgendwie gehn?
Dass man sagt, nur wenn man von 1.php kommt, kann die 2.php aufgerufen werden, sonst steht einfach dort „Direkt-Aufruf nicht erlaubt!“