Besondere Seitenumleitung

Kommentier die IF-Abfrage mal aus und lass dir mit folgendem Code die aufrufende Seite anzeigen:
PHP:
<?php $seite = $_SERVER["HTTP_REFERER"]; echo $seite; ?>
und poste die Ausgabe
 
Versuch mal statt
PHP:
<?php if (strpos($_SERVER["HTTP_REFERER"], "index.php") === false) {
PHP:
<?php if (strpos($_SERVER["HTTP_REFERER"], "index.php") == false) {

Lass es bitte bei den drei Gleichzeichen.

Oft wird die index.php nicht im Referrer gespeichert oder angezeigt. Du musst ja auch nicht "tutorials.de/index.php" eingeben wenn du diese Seite besuchst.

Dann mach es so:
PHP:
if ($_SERVER["HTTP_REFERER"] == "http://www.meineseite.de/unterordner/foo") {
 
Ich wusste nicht, ob das so geht, deswegen dachte ich, vielleicht liegt's daran. Wofür ist es denn gut, drei Gleichzeichen zu verwenden?
 
Momentaner Code:
PHP:
<?php
if ($_SERVER["HTTP_REFERER"] == "http://www.dj-max-mueller.de/index.php") {
    header("Location: ../index.php");
    exit;
}


echo "Keine aktuellen Dates";
?>

Die Endlosschleife ist weg. Aber nun geht die Weiterleitung nicht mehr :( oder stell mich zu doof an^^
 
Zuletzt bearbeitet:
In diesem Fall müsste man lange nach dem Sinn für === suchen.

Anderer Fall macht es deutlicher:
PHP:
$text = "Direkt am Anfang.";

if (strpos($text, "Direkt") == false) echo "Nicht gefunden";
else echo "Gefunden";

Ausgabe:
Code:
Nicht gefunden

Warum?
Weil strpos das Wort direkt am Anfang findet und PHP bei 0 anfängt zu Zählen. Also sagt strpos es hat das Wort an der Position 0 gefunden. Allerdings ist 0 in PHP fast gleichbedeutend mit false. Daher wird die obige Bedingung wahr

PHP:
$text = "Direkt am Anfang.";

if (strpos($text, "Direkt") === false) echo "Nicht gefunden";
else echo "Gefunden";

Ausgabe:
Code:
Gefunden

Warum?
Mit === prüft die Bedingung ob es sich um die 0 als Zahl handelt oder ob strpos wirklich false als booleanscher Wert entspricht, im Sinne von: Nicht gefunden.

@Topic:

Oh ich meinte ungleich !=

PHP:
<?php
if ($_SERVER["HTTP_REFERER"] != "http://www.dj-max-mueller.de/index.php") {
    header("Location: ../index.php");
    exit;
}


echo "Keine aktuellen Dates";
?>

Oder auch so (würde ich versuchen):
PHP:
<?php
if ($_SERVER["HTTP_REFERER"] != "http://www.dj-max-mueller.de/") {
    header("Location: ..");
    exit;
}


echo "Keine aktuellen Dates";
?>

Du musst dir nur im klaren sein von wo aus man alles drauf zugreifen darf oder von wo nicht.
Das kannst du auch mit .htaccess lösen falls du damit besser zurecht kommst.
 
Zuletzt bearbeitet:
Bei der Pfadangabe muss noch ein Slash hintendran, der gehört nämlich zur URL dazu. Für den Fall, dass die Seite im REFERER ist, musst du die mit einem logischen ODER auch abfragen. Aber mit dem absoluten Pfad, da die URL den ganzen Pfad beinhaltet. Also so:
PHP:
 if ($_SERVER["HTTP_REFERER"] === "http://www.meineseite.de/unterordner/foo/" || $_SERVER["HTTP_REFERER"] === "http://www.meineseite.de/unterordner/foo/index.php") {
 
PHP:
<?php
if ($_SERVER["HTTP_REFERER"] === "http://www.dj-max-mueller.de/" || $_SERVER["HTTP_REFERER"] === "http://www.dj-max-mueller.de/index.php") {
    header("Location: ../index.php");
    exit;
}


echo "Keine aktuellen Dates";
?>

geht auch nicht...man was mach ich hier den falsch?:confused::confused::confused:
 
Zurück