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?
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.
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!
Und ein Passwort per hidden input zu senden ist schon seit Jahren doof! Weil kann man im QT lesen und so…
@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.
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
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.
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!
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]
@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.
@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.
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!“