Weiterleitung funzt nicht



  • Das ganze sieht jetzt folgendermaßen aus:

    <?
     function Login($nickname, $password)
    {
     $db = mysql_connect("127.0.0.1", "**", "**");
     mysql_select_db("Administration", $db);
    
     $abfrage = "SELECT * FROM Administrators";
     $ergebnis = mysql_query($abfrage, $db);
    
     while($myrow = mysql_fetch_row($ergebnis))
     {
      if($myrow[0] == $nickname && $myrow[1] == $password)
     {
      header("Location: administration.php");
    }
     else { echo "<p class='warning'>ACHTUNG: Passwort oder Benutzername sind falsch. Mit diesem
     Passwort bzw. Benutzernamen sind Sie nicht berechtig diese Seite zu betreten.</p>";
     } 
    
    } 
    // echo mysql_error();
    mysql_close();
    return 1;
    
    }
    
    ?>
    
    <?
    if($submit) 
    {
    Login($nickname, $password);
    }
    ?>
    
    <html>
     <head><title></title>
      <link rel="stylesheet" type="text/css" href="tt_homepage/general_usage/formate.css">
      <script src="tt_homepage/general_usage/functions.js" type="text/javascript"></script>
     </head>
      <body>
          <? include ('tt_homepage/general_usage/divs.txt') ?>
    
        <div style="position:absolute; top:22px; left:0px; width:100%; height:100%; background-color:lightgrey; 
                    border-width:2px; border-color:darkblue; border-style:solid; border-top:none;">
          <br> 
          <? include('tt_homepage/general_usage/men_adv.txt') ?>
        </div>
    
         <div style="position:absolute; top:22px; left:20%; height:99%; background-color:lightgrey; z-index:1; overflow:auto;">
           <br> 
    
              <form method="post" action="admin_login.php">
              <p class="warning">Achtung diese Seite ist ausschließlich den Administratoren vorbehalten!</p>
              <table>
                <tr>
                <td>Name:</td>
                </tr>
                 <tr>
                <td><input name="nickname" type="text"> </td>
               </tr>
                <tr>
                <td>Passwort:</td>
               </tr>
                <tr>
                 <td><input name="password" type="password"> </td>
                </tr>
               </table> 
    
                 <span class="normal"><a href="">Passwort vergessen?</a></span><br><br>
                <input name="submit" type="submit" value="Login">
    
                     </form>
    
         </div>
    
     </body>
    </html>
    

    Bekomme jetzt auch keine Fehlermeldungen mehr aber es tut sich auch nichts, absolut gar nichts.



  • while(myrow=mysql_fetch_row(myrow = mysql\_fetch\_row(ergebnis))
    {
    if($myrow[0] == $nickname && $myrow[1] == $password)
    {
    header("Location: administration.php");
    }
    else
    {
    echo "<p class='warning'>ACHTUNG: Passwort oder Benutzername sind falsch. Mit diesem Passwort bzw. Benutzernamen sind Sie nicht berechtig diese Seite zu betreten.</p>";
    }
    }

    Das kann ja nicht gut gehen:
    Wenn deine Login-Daten nicht gleich die ersten aus der Tabelle sind wird etwas ausgegeben!
    Mach doch die Bedingung einfach mit in die SQL Abfrage mit rein und werte die dann aus!



  • stimmt, du hast recht, aber in diesem Fall sind es wirklich die ersten und es funktionier trotzdem nichts. Weder Fehlermeldung noch Weiterleitung



  • <?php
      // laut www.php.net/header solltest du möglichst immer einen absoluten Pfad angeben (nach HTTP/1.1 erforderlich)
      header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/administration.php");
      // und dafür sorgen, dass das restliche Script nicht mehr ausgeführt wird
      exit;
    ?>
    

    Also im Zusammenhang irgendwie so:

    <?
      $abfrage = "SELECT * FROM Administrators WHERE user = $nickname";
      $ergebnis = mysql_query($abfrage, $db);
    
      if ($userdata = mysql_fetch_row($ergebnis))
      {
        if($userdate['pass'] == $password)
        {
          header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/administration.php");
          exit;
        }
        else echo "<p class='warning'>ACHTUNG: Passwort falsch. Mit diesem Passwort sind Sie nicht berechtig diese Seite zu betreten.</p>";
      }
      else echo "<p class='warning'>ACHTUNG: Benutzername falsch. Sie sind nicht berechtig diese Seite zu betreten.</p>";
    ?>
    


  • Hey vielen Dank! Wenn ich jetzt auf den submit-button drücke öffnet sich eine neue Seite, allerdings nur für 1 Sekunde (oder noch kürzer) und ich kann darauf 2 mysql-fehlermeldungen erkennen. Ich müsste es irgendwie schaffen, dass sich die Seite nicht wieder sofort schließt, dann kann euch auch die Fehlermeldungen sagen. Gibts dafür vielleicht auch 'nen Tipp?
    MfG

    Tobsen

    Ps: Vielen Dank für deine Hilfe flenders!!!!



  • nimm einfach kurz die weiterleitung (header ) raus .. auskommentieren, und les dir die fehlermeldungen durch.
    hast du den mysql server an? sind daten in der tabelle? ist die query richtig? kommt also ein result zurück und enthält er daten?
    sowas einfach mal nachschaun 🙂



  • Ok, habe ich soweit gemacht. @elise danke für den Hinweis. Hatte es in der Zwischenzeit schon mittels screenshot 🙄 gemacht und die Fehler behoben. Aber nun bekomme ich folgenden Fehler:

    Parse error: parse error, unexpected T_ELSE in C:\FoxServ\www\admin_login.php on line 20

    Line 20 ist folgende:
    else echo "<p class='warning'>ACHTUNG: Passwort falsch. Mit diesem Passwort sind Sie nicht berechtig diese Seite zu betreten.</p>";
    ...

    (siehe flenders post). Ich bin euch wirklich dankbar für die Hilfe!
    MfG

    Tobsen

    [ Dieser Beitrag wurde am 01.12.2002 um 10:45 Uhr von Tobsen editiert. ]



  • das sieht nach irgendeinem klammerfehler aus...

    zählen 🙂

    oder mehr code zeigen... also die gesamte if() ... else...



  • Schaut jetzt folgendermaßen aus (mein Code):

    <?
     if($submit)
     {
    
      $db = mysql_connect("127.0.0.1", "**", "**");
      mysql_select_db("Administration", $db);
    
      $abfrage = "SELECT * FROM Administrators WHERE name = $nickname";
      $ergebnis = mysql_query($abfrage, $db);
    
      if ($userdata = mysql_fetch_row($ergebnis))
      {
        if($userdate['password'] == $password)
        {
          header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/administration.php");
          exit;
        }
        else {echo "<p class='warning'>ACHTUNG: Passwort falsch. Mit diesem Passwort sind Sie nicht berechtig diese Seite zu betreten.</p>";}
      }
      else {echo "<p class='warning'>ACHTUNG: Benutzername falsch. Sie sind nicht berechtig diese Seite zu betreten.</p>";}
    }
    ?>
    

    Bekomme Fehlermeldung in Zeile 11:
    if (userdata=mysql_fetch_row(userdata = mysql\_fetch\_row(ergebnis)) //Zeile 11



  • ich sehe erstmal einige fehler... also langsam reinarbeiten:

    <?
     if($submit)
     {
    
      $db = mysql_connect("127.0.0.1", "**", "**");
      mysql_select_db("Administration", $db);
    
      $abfrage = "SELECT * FROM Administrators WHERE name = $nickname"; //query falsch
    //  $abfrage = "SELECT * FROM Administrators WHERE name = '$nickname'"; 
    
      $ergebnis = mysql_query($abfrage, $db);
    /frag lieber ab:
    if($ergebnis){
    
      if ($userdata = mysql_fetch_row($ergebnis))
      {
        if($userdata['password'] == $password)             //HIER userdatA !!
        {
          header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/administration.php");
          exit;
        }
        else {echo "<p class='warning'>ACHTUNG: Passwort falsch. Mit diesem Passwort sind Sie nicht berechtig diese Seite zu betreten.</p>";}
      }
      else {echo "<p class='warning'>ACHTUNG: Benutzername falsch. Sie sind nicht berechtig diese Seite zu betreten.</p>";}
    
    }else echo "query falsch";//von if ergebnis
    
    }
    
    ?>
    


  • Vielen lieben Dank euch allen es funktioniert jetzt! Find ich echt cool, dass ihr euch die Zeit genommen habt, den Code durchzuschauen!! 🙂


Anmelden zum Antworten