Dirk: Weiterleitung

Hi, ich habe ein kleines php script gefunden in dem ein user und password abgefragt wird. Da ich mich mit PHP überhaupt nicht auskenne, benötige ich Hilfe. Ich möchte, das nach richtiger Eingabe der Zugangsdaten nicht im Fenster "Zugangsdaten i.O." erscheint sondern der User auf eine webseite "www.troopersoft.de" weitergeleitet wird. Durch welchen Befehlt muß ich diese Zeile ersetzen?

Gruß Dirk

<html>
<head>
<title>www.troopersoft.de</title>
</head>
<body>
<?php
include("pwd.php");
if (($benutzer == "$user") and ($passwort == "$pass"))
{
echo "
<html>
<head>
<title>Der Login</title>
</head>
<body>
Zugangsdaten i.O.
</body>
</html>
";
}
else
{
echo "Falsche Zugangsdaten.";
}
?>
</body>
</html>

  1. Hallo Dirk,

    Du suchst die Funtkion header - damit kannst Du einen HTTP-Header setzen - aber zuvor darf keine Ausgabe erfolgt sein.

    Also in deinem Beispiel:

    <?php
    include("pwd.php");
    if (($benutzer == "$user") and ($passwort == "$pass")) {
          header('Location: http:www.troopersoft.de');
    }

    ?>

    Gruß Sven

    P.S. wo kommen die obigen Werte für Benutzer und Kennwort her?

    1. Erstmal Danke für die schnelle Hilfe.
      Die Werte für den Benutzer und das Kennwort ist in der pwd.php Datei hinterlegt.

      pwd.php

      <?php
      $benutzer="test";
      $passwort="test";
      ?>

      Gruß Dirk

      1. Hallo Dirk,

        Die Werte für den Benutzer und das Kennwort ist in der pwd.php Datei hinterlegt.

        Ok! Und $user und $pass kommen die aus einem POST- oder GET-Request?

        Wenn ja dann sieht es so aus, als wäre register_globals auf  on gestellt.

        Info: http://de.php.net/manual/de/security.globals.php

        Gruß aus Moers

        Sven

    2. Wenn ich das so einfüge bekomme ich eine Fehlermeldung
      Parse error: parse error, unexpected T_ELSE in /homepages/20/d13517314/htdocs/Premium League/inhalt.php on line 23

      Meine Datei sieht so aus

      <html>
      <head>
      <title>www.troopersoft.de</title>
      </head>
      <body>
      <?php
      include("pwd.php");
      if (($benutzer == "$user") and ($passwort == "$pass")) {
       header('Location: http:www.troopersoft.de');
      }
      {
      echo "
      <html>
      <head>
      <title>Der Login</title>
      </head>
      <body>
      Richtige Zugangsdaten
      </body>
      </html>
      ";
      }
      else
      {
      echo "Falsche Zugangsdaten.";
      }
      ?>
      </body>
      </html>

      Hallo Dirk,

      Du suchst die Funtkion header - damit kannst Du einen HTTP-Header setzen - aber zuvor darf keine Ausgabe erfolgt sein.

      Also in deinem Beispiel:

      <?php
      include("pwd.php");
      if (($benutzer == "$user") and ($passwort == "$pass")) {
            header('Location: http:www.troopersoft.de');
      }

      ?>

      Gruß Sven

      P.S. wo kommen die obigen Werte für Benutzer und Kennwort her?

      1. hi $name,

        Meine Datei sieht so aus

        <html>
        <head>
        <title>www.troopersoft.de</title>
        </head>
        <body>
        <?php
        include("pwd.php");
        if (($benutzer == "$user") and ($passwort == "$pass")) {
        header('Location: http:www.troopersoft.de');
        }                                       <----- die klammer ist falsch
        {                                       <----- die klammer ist auch falsch
        echo "
        <html>
        <head>
        <title>Der Login</title>
        </head>
        <body>
        Richtige Zugangsdaten
        </body>
        </html>
        ";
        }
        else
        {
        echo "Falsche Zugangsdaten.";
        }
        ?>
        </body>
        </html>

        du schließt die if abfrage VOR dem ersten echo, deswegen ist das else für den parser fehl am platz.

        aber leider wird das ganze nicht funktionieren, wie dir sven schon gesagt hat MUSS der header VOR der ersten ausgabe gesendet werden.

        gruss
        shadow

        --
        Programmers don´t die, they GOSUB without RETURN.
        Quelle: unbekannt
        1. Danke für die Info. Fehlermeldung ist weg und funktioniert nicht wie Du gesagt hast.

          Wo genau muß ich es einbinden damit es so klappt? Bin ein totaler php Laie.

          Gruß Dirk

          1. hi $name,

            Danke für die Info. Fehlermeldung ist weg und funktioniert nicht wie Du gesagt hast.

            :-)

            Wo genau muß ich es einbinden damit es so klappt? Bin ein totaler php Laie.

            ich auch :-) meine php erfahrung läßt sich noch in stunden angeben, ohne eine 3stellige zahl zu bekommen.

            ok here we go (wenn ich richtig verstanden habe was du willst):

            das script das die passwort eingabe bearbeitet - nennen wir es prüfen.php:
            <?php
            include("pwd.php");
            if (($benutzer == "$user") and ($passwort == "$pass")) {
            header('Location: http:www.troopersoft.de');
            else
            {
            echo "
            <html>
            <head>
            <title>Login failed</title>
            </head>
            <body>
            Falsche Zugangsdaten
            </body>
            </html>

            ";
             }
            ?>
            sonst darf/soll/muss da nichts drin stehen.
            wie gesagt VOR dem senden des headers darf nichts stehen, und da du zu einer seite weiterleitest ist es unsinnig "zugangsdten ok" auszugeben, da das der user garnicht sieht, ganz davon ab, hättest du

            <html>
            <head>
            <title></title>
            </head>
            <body>

            im erfolgsfall doppelt gehabt (ohne weiterleitung). auf der troopersoft.de kööntest du dann den user aufmerksam machen, das er sich erfolgreich eingelogt hat, da er ja während einer sitzung (möglicherweise) die seite mehrmals besucht, in der form von: sie sind eingelogt.

            du solltest dich aber wirklich mit dem E-V-A prinzip beschäftigen.

            gruss
            shadow

            --
            Programmers don´t die, they GOSUB without RETURN.
            Quelle: unbekannt
  2. Hi,
    die Antwort hast du von Sven Schrodt gekriegt.
    Nur eines solltest du noch beachten:

    <html>
    <head>
    <title>www.troopersoft.de</title>
    </head>
    <body>
    <?php
    include("pwd.php");
    if (($benutzer == "$user") and ($passwort == "$pass"))
    {
    echo "
    <html>
    <head>
    <title>Der Login</title>
    </head>
    <body>
    Zugangsdaten i.O.
    </body>
    </html>
    ";
    }
    else
    {
    echo "Falsche Zugangsdaten.";
    }
    ?>
    </body>
    </html>

    Erstens, ein Doctype fehlt komplett.
    Zweitens, falls hier in den Else-Zweig gewechselt wird, fehlt der "<html>-bis-<body>"-Block.

    Viele Grüße
    Thorsten

  3. Mahlzeit,

    nur als Ergänzung der beiden bisherigen Antworter:

    <html>
    <head>
    <title>www.troopersoft.de</title>
    </head>
    <body>
    <?php
    include("pwd.php");

    Du machst erst HTML-Ausgaben und anschließend includest Du ein Skript, das irgendwas verarbeitet - ich würde Dir empfehlen, Dich über das EVA-Prinzip zu informieren. Das ist grundsätzlich und prinzipiell besser als Code-Kuddelmuddel - und in diesem Fall höchst hilfreich, da Du mit "header()" nur zu einer anderen Adresse weiterleiten kannst, wenn noch keine Ausgabe erfolgt ist (wie Thorsten schon beschrieb).

    if (($benutzer == "$user") and ($passwort == "$pass"))
    {
    echo "
    <html>
    <head>
    <title>Der Login</title>
    </head>
    <body>
    Zugangsdaten i.O.
    </body>
    </html>

    Du gibst hier nochmal ein (nahezu) komplettes HTML-Dokument aus - im <body> eines bestehenden. Das KANN gar nicht gutgehen. Aber Du willst im Erfolgsfall ja sowieso woanders hin weiterleiten ... nur so als Ergänzung für Deine nächsten Versuche: schau Dir GENAU an, was letztendlich im Browser ankommt. :-)

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  4. Hi Dirk!

    Nur noch so als Anmerkung:
    Dir ist schon klar, dass jemand, der direkt "http:www.troopersoft.de" in seine Adresszeile eingibt, auch ohne deine Passwortabfrage dorthin gelangt?
    Deshalb verstehe ich nicht so ganz den Sinn dieser Aktion...

    Viele Grüsse,
    Richard