Sönke Tesch: Autoweiterleitung abhaengig vom Wochentag

Beitrag lesen

Mit folgendem Ansatz versuche abhaengig vom Wochentag, eine
Autoweiterleitung nach kantine 1-3 zu erreichen.
In der Praxis laeuft das Script immer in die "else" Bedingung.
Was habe ich Uebersehen?

$WD = strftime ("%w", time());

if (ereg($WD, 4)) {
        print "<meta http-equiv="refresh" content="1; URL=http://pro-intranet.de/kantine1.htm">\n";
}

Nimm's mir nicht übel, aber das ist alles in allem grober Unfug, den man Dir eigentlich wie einen feuchten Lappen um die Ohren hauen sollte.

1. ereg hätte gerne einen Text als zweiten Parameter, keine Zahl (siehe http://www.php.net/manual/de/function.ereg.php).

2. Wenn Du eine Variable mit einer Zahl vergleichen willst, dann nimm doch bitte etwas in der Richtung $variable==4 und keine hochkomplizierten Funktionen für reguläre Ausdrücke.

3. Wenn Du eine Variable 1:1 mit einem Text vergleichen willst, dann nimm doch bitte etwas in der Richtung $variable=="text" oder strcmp() und keine hochkomplizierten Funktionen für reguläre Ausdrücke.

4. Wenn Du den Wochentag haben willst, dann nimm doch bitte eine Funktion, die Dir den Wochentag direkt liefert und nicht einen Text, in dem der Wochentag irgendwie drinsteht. http://www.php.net/manual/de/function.getdate.php ist Dein Freund.

5. Eine Weiterleitung aus PHP heraus macht man besser direkt per HTTP-Protokoll. Der Umweg über HTML-<meta> ist eher für Leute gedacht, die keine Möglichkeit haben, eine Skriptsprache einzusetzen.

Ersetze dazu den _kompletten_ Kopf Deiner Datei durch:

<?php
  $url=deine_wochentag_auswaehl_funktion();
  header("HTTP/1.0 302 Found");
  header("Location: ". $url);
  ?>

Beachte bitte, daß dieser Teil _ganz_ oben in der Datei stehen muß, es darf kein Leer- oder sonstiges Zeichen vor dem <?php kommen.

Die Bedeutung der 300-Codes für Weiterleitungen findest Du in der Beschreibung des HTTP-Protokolls unter http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3, eine Beschreibung zu header() in der PHP-Anleitung unter http://www.php.net/manual/de/function.header.php.

<body bgcolor="#FFFFFF">
<?
echo "<br><br><br><center><h1>Weiterleitung $WD </h1></center>";
?>

6. Und wenn man sowas macht, sollte man nicht "Weiterleitung" reinschreiben, weil damit niemand etwas anfangen kann (oder kannst Du aus dem Wörtchen "Weiterleitung" erkennen, wohin die Reise geht?). Gib stattdessen immer eine komplette Adresse mit an:

echo "Weiterleitung nach <a href="$url">$url</a>.";

Gruß,
  soenk.e