tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
856
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von multimolti
    multimolti multimolti ist offline Game Programmer
    Registriert seit
    Jan 2007
    Beiträge
    802
    Ich kann nur den Quelltext sehen, den du mir gegeben hast. Das war sicherlich nicht alles. Poste alles genau so, wie es in der Datei steht, dann kann ich das mal versuchen. Und sag mir am besten, wohin du bisher weitergeleitet wirst, wenn du dich einloggst.
     

  2. #17
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von multimolti Beitrag anzeigen
    Ich kann nur den Quelltext sehen, den du mir gegeben hast. Das war sicherlich nicht alles. Poste alles genau so, wie es in der Datei steht, dann kann ich das mal versuchen. Und sag mir am besten, wohin du bisher weitergeleitet wirst, wenn du dich einloggst.
    PHP-Code:
    // login.php

    <?php  
         
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {  
          
    session_start();  

          
    $username $_POST['username'];  
          
    $passwort $_POST['passwort'];  

          
    $hostname $_SERVER['HTTP_HOST'];  
          
    $path dirname($_SERVER['PHP_SELF']);  

          
    // Benutzername und Passwort werden überprüft  
    include("userdata.php");  

    $loggedin false;  
    foreach(
    $users as $user)  
    {  
        if(
    $user['name'] == $username && $user['pass'] == $password)  
        {  
             
    $loggedin true;  
             break;  
        }  
    }  
    if(
    $loggedin)  


               
    // Weiterleitung zur geschützten Startseite  
           
    if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1')  
           {  
            if (
    php_sapi_name() == 'cgi')  
             {  
             
    header('Status: 303 See Other');  
             }  
            else  
            {  
             
    header('HTTP/1.1 303 See Other');  
             }  
            }  

           
    header('Location: http://'.$hostname.($path == '/' '' $path).'/index.php');  
           exit;  
           }  
           else 
           { 
                   echo 
    "Eingeloggt, aber Server unterstützt kein HTTP/1.1!"
           } 

    else  
        echo 
    "Benutzername oder Passwort falsch!";    
         
    ?>
    HTML-Code:
    <!-- Dies ist der body Teil der login.php -->
        <h1>Willkommen im Login</h1>
        <p><img alt="" src="icons/dialog-password.svg"></p>
        <h2>Gib bitte Name und Passwort ein!</h2>
          <form action="login.php" method="post">
            <p>Username: </p>
            <p>
              <input name="username" type="text" value="" size="20px" />
            </p>
            <p>Passwort:</p>
       <p><input name="passwort" type="password" size="20px" />
                 <p><input type="submit" value="Anmelden" />
            </p>
        </form>
    PHP-Code:
    // index.php 
    // Zu dieser Seite wird man bei erfolgreichem Login weitergeleitet.

    <?php include('auth.php'); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      <title>Geschützter Bereich</title>
     </head>
    <body>
    <h1>Herzlichen Glückwunsch!</h1>
     <p>Hier entsteht eine neue Umgebung.</p>
      <p>Sie sind nun angemeldet.</p>
     <p>Sie können sich auch wieder <a href="logout.php">abmelden</a>.</p>
    </body>
    </html>
    PHP-Code:
    // userdata.php
    // Hier sollte man vielleicht noch die auth.php includen?!
    <?php
    $users 
    = array();
    $users[] = array("name" => "user1""pass" => "pw1");
    $users[] = array("name" => "user2""pass" => "pw2");
    $users[] = array("name" => "user3""pass" => "pw3");
    ?>
    PHP-Code:
    // logout.php
    <?php
         session_start
    ();

         
    $hostname $_SERVER['HTTP_HOST'];
         
    $path dirname($_SERVER['PHP_SELF']);

         if (!isset(
    $_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
          
    header('Location: http://'.$hostname.($path == '/' '' $path).'/login.php');
          exit;
          }
    ?>
    PHP-Code:
    // auth.php
    <?php
         session_start
    ();

         
    $hostname $_SERVER['HTTP_HOST'];
         
    $path dirname($_SERVER['PHP_SELF']);

         if (!isset(
    $_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
          
    header('Location: http://'.$hostname.($path == '/' '' $path).'/login.php');
          exit;
          }
    ?>
    so, dass wäre alles!
     

  3. #18
    DaveStan DaveStan ist offline Rookie
    Registriert seit
    Jun 2009
    Ort
    Schwäbisch Gmünd (BW)
    Beiträge
    7
    Ich hab das jetzt zwar nicht ausgetestet, aber spontan fallen mir zu späterer Stunde doch ein paar Kleinigkeiten auf...

    In der login.php definierst du oben $passwort:
    PHP-Code:
    $passwort $_POST['passwort']; 
    Darunter greifst du dann allerdings auf $password (mit d) zu:
    PHP-Code:
    $loggedin false;  
    foreach(
    $users as $user)  
    {  
        if(
    $user['name'] == $username && $user['pass'] == $password)  
        {  
             
    $loggedin true;  
             break;  
        }  

    Ich gebe zu, auch ich kann mich nicht immer zwischen deutschen und englischen Variablennamen entscheiden (oft endets dann so halb-halb ). Aber sowas hier ist dann schon etwas kniffliger - zumal es halt hinterher doch so offensichtlich war

    Der eigentliche Fehler, warum es nicht mehr geht, liegt aber wohl an - oder vielmehr in den If-Abfragen. Etwas Codeformatierung dürfte dir eigentlich helfen, den Fehler in dem Abschnitt zu entdecken...
    PHP-Code:
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {       
        
        
    //...weiterer Code...
        
        
    if($loggedin) {
            
    // Weiterleitung zur geschützten Startseite
            //...  
        
    } else {
            echo 
    "Eingeloggt, aber Server unterstützt kein HTTP/1.1!"
        } 
    } else {
        echo 
    "Benutzername oder Passwort falsch!";


    Ach, bevor ich's vergess: kann es sein, dass du den Inhalt der logout.php zweimal gepostet hast? Oder ist die auth.php inhaltlich wirklich gleich?

    Gruß aus dem Halbschlaf
    Geändert von DaveStan (16.07.09 um 03:10 Uhr)
     

  4. #19
    czweifel czweifel ist offline Mitglied
    Registriert seit
    Jun 2009
    Beiträge
    24
    Zitat Zitat von DaveStan Beitrag anzeigen
    Ich hab das jetzt zwar nicht ausgetestet, aber spontan fallen mir zu späterer Stunde doch ein paar Kleinigkeiten auf...

    In der login.php definierst du oben $passwort:
    PHP-Code:
    $passwort $_POST['passwort']; 
    Darunter greifst du dann allerdings auf $password (mit d) zu:
    PHP-Code:
    $loggedin false;  
    foreach(
    $users as $user)  
    {  
        if(
    $user['name'] == $username && $user['pass'] == $password)  
        {  
             
    $loggedin true;  
             break;  
        }  

    Ich gebe zu, auch ich kann mich nicht immer zwischen deutschen und englischen Variablennamen entscheiden (oft endets dann so halb-halb ). Aber sowas hier ist dann schon etwas kniffliger - zumal es halt hinterher doch so offensichtlich war

    Der eigentliche Fehler, warum es nicht mehr geht, liegt aber wohl an - oder vielmehr in den If-Abfragen. Etwas Codeformatierung dürfte dir eigentlich helfen, den Fehler in dem Abschnitt zu entdecken...
    PHP-Code:
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {       
        
        
    //...weiterer Code...
        
        
    if($loggedin) {
            
    // Weiterleitung zur geschützten Startseite
            //...  
        
    } else {
            echo 
    "Eingeloggt, aber Server unterstützt kein HTTP/1.1!"
        } 
    } else {
        echo 
    "Benutzername oder Passwort falsch!";


    Ach, bevor ich's vergess: kann es sein, dass du den Inhalt der logout.php zweimal gepostet hast? Oder ist die auth.php inhaltlich wirklich gleich?

    Gruß aus dem Halbschlaf
    Sorry, dies ist noch der logout.

    PHP-Code:
    <?php
         session_start
    ();
         
    session_destroy();

         
    $hostname $_SERVER['HTTP_HOST'];
         
    $path dirname($_SERVER['PHP_SELF']);

         
    header('Location: http://'.$hostname.($path == '/' '' $path).'/login.php');
    ?>
    Ich probier das jetzt gleich mal aus.

    MfG
     

Ähnliche Themen

  1. Login und anschließende Daten für den Benutzer
    Von bonke-online im Forum ASP
    Antworten: 4
    Letzter Beitrag: 01.11.05, 20:07
  2. Benutzer/Login Frage/Denkanstoss
    Von morgenstern im Forum PHP
    Antworten: 9
    Letzter Beitrag: 07.07.04, 14:26
  3. MYSQL / PHP Login / Benutzer anlegen
    Von Shooter2k im Forum PHP
    Antworten: 3
    Letzter Beitrag: 24.03.03, 23:39
  4. Benutzer Login
    Von Freude im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.07.02, 11:59
  5. benutzer login
    Von wo0zy im Forum PHP
    Antworten: 4
    Letzter Beitrag: 07.09.01, 22:02

Stichworte