tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
617
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Hi Leute, habe folgendes Problem.Ich bastel an einem
    Loginscript für meine Seite.

    //Erstmal sorry für den langen Post, aber ohne Code
    //wird des nichts

    Über dem HEad in der index.php starte ich die Session,
    unabhängig davon ob man sich einloggt oder nicht.
    Dann include ich im Body in einer Menübox, das Login
    formular, welches durch eine If Abfrage durch eine
    Statusanzeige und einen Logout Link ersetzt wird, sobald
    man eingeloggt ist. Diese includete Datei sieht so aus:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    <?
    if(@$_SESSION['logged_in'] == "TRUE")
         {
     echo "Willkommen, ".$_SESSION['username']."!<br/><br/>\n";
     echo "<table>";
     echo " <tr>";
     echo "  <td>Du bist seid dem </td>";
     echo "  <td rowspan=\"2\"><img src=\"[URL="http://web.icq.com/whitepages/"]http://web.icq.com/whitepages/[/URL]
        online?icq=".$_SESSION['icq']."&img=5\" /></td>";
     echo " </tr>";
     echo " <tr>";
     echo "  <td>".$_SESSION['regdat']." dabei!</td>";
     echo " </tr>";
     echo " <tr>";
     echo "  <td><br/></td>";
     echo " </tr>";
     echo " <tr>";
     echo "  <td>Dein letzter Besuch war am <b>".$_SESSION['last_visit']."</b>.</td>";
     echo " </tr>";
     echo "</table>\n";
     echo "<a href=./index.php?site=logout>Logout</a>";
     }
    else
     {
     echo "<form action=\"./index.php?site=login\" method=\"post\">\n";
     echo " <fieldset>\n";
     echo "  <legend><b>Login</b></legend>\n";
     echo "  <table cellpadding=\"3\" cellspacing=\"0\" border=\"0\">\n";
     echo "   <tr>\n";
     echo "    <td>Username</td>\n";
     echo "    <td><input type=\"text\" name=\"username\" 
          size=\"9\" maxlength=\"20\" /></td>\n";
     echo "   </tr>\n";
     echo "   <tr>\n";
     echo "    <td>Passwort</td>\n";
     echo "    <td><input type=\"password\" name=\"passwort\" 
          size=\"9\" /></td>\n";
     echo "   </tr>\n";
     echo "   <tr>\n";
     echo "    <td></td>\n";
     echo "    <td><input type=\"submit\" name=\"Send\" 
          value=\"Login\" /></td>\n";
     echo "   </tr>\n";
     echo "  </table>\n";
     echo " </fieldset>\n";
     echo "</form>\n";
     }
    ?>

    Sobald der Loginbutton geklickt wird, wird aufeinen Link
    verwiesen (./index.php?site=login) welcher durch die
    Parameterübergabe "site=login" im Contentbereich auf folgende
    Datei zur Verarbeitung der eingegebenen Daten weiter
    leitet:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
    <?php
    if (isset ($_SESSION['logged_in']) && $_SESSION['logged_in'] == "TRUE")
            {
            die ("Du bist schon eingeloggt");
            }   
    if (!isset ($_POST['username']) || !isset($_POST['passwort']))
         {
         die("Bitte geben Sie Ihre Benutzerdaten ein!");
         }
    if (isset ($_POST['username']) && isset($_POST['passwort']))
         {
     if(preg_match('/[^\'\"\/]{5,12}/', $_POST['username']) == FALSE)
             {
             $_POST['username'] = "";
             unset ($_POST['username']);
             die("Bitte geben Sie den Benutzernamen ein!");
             }
     elseif(preg_match('/[^\'\"\/]{5,12}/', $_POST['passwort']) == FALSE)
             {
             $_POST['passwort'] = "";
             unset ($_POST['passwort']);
             die("Bitte geben sie ihr Passwort ein!");
             }
     else     
      {
             $sql = "SELECT 
        * 
       FROM 
        users 
       WHERE 
        username = '".$_POST['username']."'
       AND 
        passwort = '".md5($_POST['passwort'])."'";
             $result = mysql_query($sql);
             if (!$result) 
                  {
                  echo "Anfrage ($sql) konnte nicht ausgeführt werden :".mysql_error();
                  exit;
                  }
     
      $userdaten = mysql_fetch_assoc($result);
      if($_POST['Send'] && mysql_num_rows($result))
       {
           $_SESSION['logged_in'] = "TRUE";
           $_SESSION['username'] = $userdaten['username'];
           $_SESSION['last_visit'] = $userdaten['last_visit'];
       $_SESSION['icq'] = $userdaten['icq'];
       $_SESSION['regdat'] = $userdaten['regdat'];
           echo "Sie sind eingeloggt!";   
       }
      else
       {
           echo "Ihre Benutzerangaben sind falsch";
       }
      }
     }
    ?>

    Und hier tritt das erste Problem auf. Wenn ich eingeloggt
    bin soll die Menübox (erster geposteter Code) sofort zur
    Statusanzeig wechseln, momentan ist es aber so, dass man
    erst einmal Reloaden muss.
    Wenn ich auf den Logout Link klicke wird dann im Content
    bereich folgender Code includet:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?
    if (!isset ($_SESSION['logged_in']))        // loggedin Variable vorhanden?
            {
            $_SESSION['logged_in'] = "";
            die("Sie sind bereits ausgeloggt!");
            }  
    if ($_SESSION['logged_in'] != "TRUE")        // Login nicht ok?
            {
            $_SESSION['logged_in'] = "";
            die("Sie sind bereits ausgeloggt!");      // Anzeige: Sie sind ausgeloggt.
            }
    echo "Sie haben sich erfolgreich ausgeloggt";
    $_SESSION = array();
    session_destroy();
    ?>

    Und da ist wieder das gleiche Problem. Die Statusanzeige ist
    nach dem ausloggen noch solange da, bis ich Reloade.

    Ich weiß echt nicht wie ich es machen soll -___-
    Wie kann ich dafür sorgen, dass der Switch zwischen Statusanzeige
    und Loginformular ohne ein Reload von mir funktioniert?
    Mir haben ein paar Leute gesagt es gibt diese header()
    Funktion. Doch leider kann ich die ja nicht in der
    Login und Logout.php nutzen, weil ich diese beiden Dateien
    im Body include.

    PS:Mir fällt jetzt erst auf dass ich in diesem Forum weder Text noch Code umbrechen muss *lol*
     

  2. #2
    Admi Admi ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    330
    Nutze bitte mal die PHP-Tags des Boards. Das ist lesefreundlicher

    Ansonsten kannst du doch nach abarbeiten des Scriptes mittels header-Funktion auf eine beliebige Seite umleiten.

    so in etwa:
    PHP-Code:
    header("Location: index.php?site=start");
    exit(); 
     

  3. #3
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Aber wenn ich das nach abarbeiten des Scriptes mache, dann ist das mitten im body, da ist der head doch schon abgeschickt... ich dachte das geht nur wenn der noch nicht durch ist?
     

  4. #4
    Admi Admi ist offline Mitglied Brokat
    Registriert seit
    Jan 2005
    Beiträge
    330
    Wenn auf der Umleitungsseite schon ne Ausgabe ist, dann kannst du entweder mit den Funktionen der Ausgabesteuerung oder mit einem Meta refresh arbeiten
     

Ähnliche Themen

  1. Login/Logout
    Von dr-stein im Forum PHP
    Antworten: 1
    Letzter Beitrag: 13.03.10, 20:11
  2. Login / Logout
    Von ucmax im Forum PHP
    Antworten: 11
    Letzter Beitrag: 28.05.07, 18:45
  3. Login - Logout - Wie geht das?
    Von FrankTheFox im Forum PHP
    Antworten: 8
    Letzter Beitrag: 16.05.07, 17:00
  4. Cookie Setzungsproblem (Login / Logout)
    Von djbergo im Forum PHP
    Antworten: 3
    Letzter Beitrag: 12.05.07, 16:32
  5. dynamic login/logout
    Von quidnovi im Forum PHP
    Antworten: 8
    Letzter Beitrag: 13.02.04, 23:05