tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
196
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    dr-stein dr-stein ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    74
    Hallo liebe tutorialsler!

    Ich habe ein Problem mit meinem Loginsystem. Wenn ich mich anmelde (index.php):

    HTML-Code:
    <form action="etc/_login.php" method="POST">
    	<h1>
    		Login</h1>
    	<p>
    		Bitte gebe hier Deine Benutzerdaten, welche Du bei der Registrierung angegeben hast, ein!<br />
    
    		&nbsp;</p>
    	<table border="0" cellpadding="2" cellspacing="2" style="text-align: left; width: 343px; height: 88px;">
    		<tbody>
    			<tr>
    				<td>
    					Benutzername</td>
    				<td>
    					<input name="benutzername" /></td>
    
    			</tr>
    			<tr>
    				<td>
    					Passwort</td>
    				<td>
    					<input name="passwort" type="password" /></td>
    			</tr>
    			<tr>
    
    				<td>
    					&nbsp;</td>
    				<td>
    					<input name="Absenden" type="submit" value="Absenden" /></td>
    			</tr>
    		</tbody>
    	</table>
    </form>
    dann werde ich auf diese Seite geleitet (etc/_login.php):

    PHP-Code:
    <?php
    session_start
    ();

    @include(
    "../inc/mysql_connect.php");
     
    $username mysql_real_escape_string($_POST['benutzername']);
    $password mysql_real_escape_string($_POST['passwort']);
     
    $sql 'SELECT * FROM `sw_portal` WHERE `username` = "'.$username.'" AND `passwort` = "'.$password.'" LIMIT 1';
    if(!(
    $result mysql_query($sql)))
    {
        include 
    'login.php';
    }
    else {
        
    $data mysql_fetch_assoc($result);
        
    $_SESSION['username']      = $data['username'];
        
    $_SESSION['password']      = $data['passwort'];
        
    Header("Location: index.php");
    }
    ?>
    So weit so gut, das klappt auch. Nun surfe ich also auf meiner Seite welche folgendermaßen geschützt sind:

    PHP-Code:
    <?php
    session_start
    ();

    include(
    "../inc/mysql_connect.php");
    $query=mysql_query("select * from sw_portal where username like '".$_SESSION['username']."' and passwort like '".$_SESSION['password']."'");
    $data mysql_fetch_assoc($query);

    switch(
    $data['active']) {
      case 
    'on':
    ?>

    Seiteninhalte

    <?php
       
    break;
       default:
       
    Header("Location: index.php");
       break;
    }
    ?>
    wenn ich mich nun wieder abmelden möchte, so mache ich das so (etc/logout.php):

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

    header ("Location: index.php");
    ?>
    Wenn ich mich nun abmelde und die Seite verlasse, danach aber wieder die Seite aufrufe, dann bin ich wieder angemeldet! Woran liegt das? Liegt dass daran, dass ich mich in dem Ordner etc abmelde, aber nicht im Hauptverzeichnis?

    Gruß, Eike
    Geändert von dr-stein (11.03.10 um 14:50 Uhr)
     
    PHP-Code:
    <?php

    $aussage 
    "Hallo Welt";
    $antwort "Hallo Du";


    function 
    answer($antwort);


    echo 
    "$aussage";



    answer($antwort);
    ?>
    **Grins**

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Zitat Zitat von dr-stein Beitrag anzeigen
    Wenn ich mich nun abmelde und die Seite verlasse, danach aber wieder die Seite aufrufe, dann bin ich wieder angemeldet! Woran liegt das? Liegt dass daran, dass ich mich in dem Ordner etc abmelde, aber nicht im Hauptverzeichnis?
    Kann ich mir nicht vorstellen. Allerdings weiß ich nicht, wie sich PHP verhält, wenn man ein und den selben Vorgang mit zwei verschiedenen Befehlen (session_unset() und session_destroy()) durch führt. Sessions sind IMHO nicht an Ordner gebunden. Wenn du Cookies für Sessions verwendest, könnte es sein, das Sessions nicht über (Sub-)Domains übetragen werden können. Mehr aber auch nicht.

    Ich kann mir das Verhalten zwar nicht erklären, aber wenn es reproduzierbar ist, solltest du vielleicht einen Bug-Report auf php.net erstellen.

    Edit:

    Ich korrigiere meine Aussage, die zwei Funktionen machen wohl doch nicht das gleiche. Auch wenn die Funktionsreferenz das zunächst glauben machen will.

    Allerdings steht in einem der Kommentare:

    sometimes you might have problems even if using both session_unset and session_destroy. You have to clear the $_SESSION array.
    Geändert von saftmeister (13.03.10 um 20:15 Uhr)
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

Ähnliche Themen

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