Login/Logout

dr-stein

Mitglied
Hallo liebe tutorialsler!

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

HTML:
<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:
<?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:
<?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:
<?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
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück