christian: Autoweiterleitung abhaengig vom Wochentag

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?

<html>
<head>
<title>Auswahl</title>
<?PHP
// Wochentag Checken

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

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

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

  1. hallo.

    warum ereg und nicht if($w==3) oder so?

    lg
     /.\^/

  2. Hallo,

    $WD = date("w"); // wäre schneller.

    if (ereg($WD, 5) {

    Zwei Kalmmern öffnen und nur eine schließen? Seit wann machen wir sowas?

    Ansonsten, wie schon von andez bemerkt, sind Vergleichoperatoren für Vergleiche da.
    Ereg ist eher zum Suchen innerhalb von Zeichenketten, z.B. für $WD="Donnerstag"; ereg("D",$WD). Und noch wichtiger bei ereg: Die RRRrreihenfolge der Attribute. Zuerst kommt das Suchmuster, dann die Zeichenkette (http://www.php3.de/manual/de/function.ereg.php).

    Grüße aus Würzburg
    Julian

  3. 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

  4. 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?

    <html>
    <head>
    <title>Auswahl</title>
    <?PHP
    // Wochentag Checken

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

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

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

    Hallo,

    wenn Du php im Einsatz hast, kannst Du dem Browser direkt sagen, dass er weiterschalten soll und nicht erst einen Meta-Tag bemühen:

    <?
    // diese Datei darf kein einziges Zeichen HTML ausspucken,
    //bevor nicht der Header abgesandt wurde. Sonst funktioniert es nicht

    if ($Donnerstag)  // z.B boolscher Wert
    {
      header("Location: http://bitworks.de");
      exit;
    }
    else
    {
      die("Weiterleitung nur donnerstags m&oul;glich!);
    }
    ?>

    Grüße

    Tom

    1. ... vielen Dank, auch fuer die Abkuehlung (... um die Ohren hauen) es funzt.
       ;-)

      christian