Login-System mit Sesions - Nach Reload ist Session nicht mehr da.

Eli-

Mitglied
Hi, habe ein kleines Problem. Ich brauche ein Login-System. Da dachte ich, ich mache es mit Sessions.

so sieht die Anmeldeseite aus:
HTML:
<?php
session_start();
?>


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Admin Control Panel</title>
<link href='http://fonts.googleapis.com/css?family=Merienda+One' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Spicy+Rice' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="main" role="main">

<?php
	
if(@$_GET['action'] == "ausloggen") {
	echo "<fieldset class='erfolg'>Sie wurden erfolgreich ausgeloggt.</fieldset>";
}


if(@$_SESSION['eingeloggt'] != true) { ?>
<fieldset class="login">
<legend>Bitte loggen Sie sich ein</legend>
<form class="einloggen" action="menu.php" method="post">
    <table>
    <tr>
    <td width="120">Benutzername</td> <td><input class="user" type="text" name="username" value=""/></td>
    </tr>
    <tr>
    <td>Passwort</td> <td><input id="pw" class="user" type="password" name="password" value=""/></td>
    </tr>
    <tr>
    <td>&nbsp;</td><td><input class="button" type="submit" name="submit" value="Login"/></td>
    </tr>
       <tr>
    <td>&nbsp;</td><td><input class="button" type="reset" name="reset" value="Reset"/></td>
    </tr>
    </table>
</form>
</fieldset>
<?php
}
?>
</div>

Und so die menu.php, auf die Weitergeleitet werden soll:

HTML:
<?php 
session_start(); 
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Admin Control Panel</title>
<link href='http://fonts.googleapis.com/css?family=Merienda+One' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Spicy+Rice' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="css/style.css">
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div id="main" role="main">
<?php
if(isset($_POST['submit'])) {
	$user = $_POST['username'];
	$pw = $_POST['password'];
	
	if($user == 'Admin' && $pw == 'passwort') {
		@$_SESSION['eingeloggt'] = true;
	} else {
		@$_SESSION['eingeloggt'] = false;
		  echo "<fieldset class='information'>Falscher Benutzername oder falsches Passwort!<br><a href='index.php'>Jetzt einloggen</a></fieldset>";
	}
}


if(@$_SESSION['eingeloggt'] == true) { // Hier beginnt der eigentliche Inhalt
?>
Sie sind nun eingeloggt.

<a href="index.php?action=ausloggen" onclick="<?php $_SESSION['eingeloggt'] = false;  ?>"><fieldset class="ausloggen-button">Ausloggen</fieldset></a>





<?php
}
?>
</div>





</body>
</html>


Wenn man sich mit den richtigen Daten einloggt, dann funktioniert das auch, und man kommt in den internen Bereich. Aber sobald ich neulade, ist der Inhalt weg(=in den Zweig, in den man kommt, wenn man nicht eingeloggt ist, bzw. Die Session 'eingeloggt' nicht existiert.

Habt ihr eine Idee, woran das liegen kann?

PS: Und/Oder kennt ihr ein gutes tutorial, wie man so ein Login-System machen kann (ohne Registrierungs-funktion)
Lg
Dennis
 
Zuletzt bearbeitet:
Erste Regel bei Sessions:

Auf jede Seite gehört ZUOBERST

PHP:
<?php
session_start();
?>

hin.

AUF JEDER!

Das sehe ich bei deiner Seite nicht.

Liebe Grüsse, Meisti94
 
Hi,
Ja, das hatte ich auch bei beiden Seiten aber da war kein Unterschied. Deswegen hab ich es weggemacht, um so mal zu schauen aber ok. Habs wieder hingemacht.
Aber es geht halt immer noch nicht :(
 
Hast du es mit einer Datenbank verbunden?

Habs falsch gelesen, es soll ja ohne Datenbank gehen..

Ich glaube so solltest du es machen: (1. File)

PHP:
$_SESSION['username'] = $user;
$_SESSION['password'] = $pw;

Dann werden diese 2 Variablen in der Session weitergegebn und auf der nächsten Seite kontrollierst du ob sie stimmen.

Ich persönliche mache es in der selben Datei, darum weiss ich nicht ob es so funktioniert.

Liebe Grüsse, Meisti94
 
meisti94 hat gesagt.:
Habs falsch gelesen, es soll ja ohne Datenbank gehen..

Ich glaube so solltest du es machen: (1. File)

PHP:
$_SESSION['username'] = $user;
$_SESSION['password'] = $pw;

Dann werden diese 2 Variablen in der Session weitergegebn und auf der nächsten Seite kontrollierst du ob sie stimmen.

Ich persönliche mache es in der selben Datei, darum weiss ich nicht ob es so funktioniert.

Liebe Grüsse, Meisti94

Hey, aber ist das nicht egal? Ob ich das per Session weitergebe oder mit POST vom Formular, oder?
Weil mein Problem ist ja nicht das überprüfen(das klappt), sondern, das die Session bei Reload nicht mehr vorhanden ist(oder halt das sich der Wert auf magische Weise verändert hat^^ ka)
 
Nimm mal die beiden Zeilen die ich dir geschrieben habe und füg sie ein.

Bei deiner 2. Page machst du einfach mal
PHP:
echo "Hallo $user";

Klappt das?

Versuch es zuerst ohne meine Zeilen und dann mit. Nur mit der "POST" Variable kannst du nichts in der Session speichern.

Hier noch ein gutes Tut: http://www.php-einfach.de/php-tutorial/php-sessions.php

So gibts du es weiter. (eigenes Beispiel)

Textfeld: name="name"

PHP:
 <?php
session_start();
 
$name = $_POST['name'];
$_SESSION['username'] = $name;
?>

2. File
PHP:
<?php
session_start();

echo "<h2>Hallo ".$_SESSION['username']."</h2>";
?>

Ich hoffe es klappt so und es ist Verständlich.. Sonst melden :D
 
Zuletzt bearbeitet von einem Moderator:
Hi,ähm Das kann doch eig. gar nicht funktionieren.
Weil das mit dem $_SESSION['username'] und so ist ganz oben. Bloß da existiert $_POST['username'] noch gar nicht. Das existiert erst auf der 2. Seite, da die ja mit POST übertragen werden.

Und, ich will ja gar nicht die Benutzerdaten und das Passwort in einer Session speichern, ich will lediglich, dass die Session "eingeloggt" erhalten bleibt, sodass ich auf jeder internen Seite prüfen kann, ob das immer noch auf "true" steht.
Oder denk ich jetzt gerade vollkommen falsch?^^ Wenn ja, dann sry
 
Kannst du mal deinen "überarbeiteten" Code hier posten?

Seh bei dir nirgends etwas von $_SESSION ...

Ohne das kannst du es NICHT weitergeben.
 
Hä? In der 2. Datei steht doch $_SESSION...

Erst da brauch ich das ja, weil er erst, wenn pw und name stimmt, eine Session "eingeloggt" erstellt, und ihr den Wert true gibt.

Okay, hab es gelöst. Hattest recht, ich musste einfach die Session auf der ersten Seite bereits erstellen :D
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück