Webstatt.org - Community seit 2006 - 2012 (2024?)

Login System Sessions

user-333
06.03.2006 19:59

Hallo,

ich habe mir ein einfaches sessionbasiertes Login System geschrieben.
Problem: Die Dateien werden nicht includet.

index.php
<?php
session_start();
// LOGGED IN?
if ($_SESSION['logged_in'] != true) {
header("Location: login.php"zwinkern;
}
else {
include("../config.php"zwinkern;
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>GAG's Admin</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<script language="JavaScript1.2" src="../js/functions.js" type="text/javascript"></script>
</head>

<div id="admin_aussen">
<div id="admin_innen">

<?
$_GET['action'] = "home";
if (!file_exists("" . $_GET['action'] . ".php"zwinkern)
echo "Die Seite existiert nicht.";
else
include ("" . $_GET['action'] . ".php"zwinkern;

?>
</div>
<a href="index.php?action=home">Admincenter</a><br> <a href="logout.php">Logout</a>
</div>

</body>
</html>

<? } ?>



login.php
<?php
if (isset($_POST['submit'])) {
session_start();

// user-129utzername und Passwort werden überprüft
include("../config.php"zwinkern;
$abfrage = "SELECT * FROM `gag_user` WHERE id = ".$_POST['username']."";
$sql = mysql_query($abfrage) OR die(mysql_error());
$user = mysql_fetch_assoc($sql);

if ($_POST['passwort'] == $user['passwort']) {
$_SESSION['logged_in'] = true;

// Weiterleitung zur geschützten Startseite
header("Location: index.php"zwinkern;
}
else {
header("Location: login.php"zwinkern;
}
}
include("../config.php"zwinkern;
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<title>Geschützter Bereich</title>
<link rel="stylesheet" type="text/css" href="../css/style.css">
</head>
<body>
<br/><br/>
<form action="login.php" method="post">
<table width="400" border="0" cellpadding="1" cellspacing="1" bgcolor="#000000" align="center">
<tr bgcolor="#FA7405">
<td colspan="2"><b>Login</b></td>
</tr>
<tr>
<td width="150" bgcolor="#eeeeee">Name:</td>
<td width="250" bgcolor="#ada5a5">
<select name="username" class="input">
<?php
$abfrage = "SELECT * FROM `gag_user`";
$sql = mysql_query($abfrage);
while($zeile = mysql_fetch_array($sql)) {

echo '<option value="'.$zeile["id"].'">'.$zeile["name"].'</option>';

}
?>
</select>
</td>
</tr>
<tr>
<td bgcolor="#eeeeee">Passwort:</td>
<td bgcolor="#ada5a5"><input name="passwort" type="password" class="input"></td>
</tr>
<tr>
<td colspan="2" bgcolor="#FA7405"><input type="submit" value="Anmelden" name="submit" class="input"/></td>
</tr>
</table>
</form>
</body>
</html>


Der Login funktioniert ohne Probleme. Nur ich kann keine Dateien includen.

<a href="index.php?action=datei">Datei</a> -> so include ich

Das steht in jeder Datei:
  session_start();
// LOGGED IN?
if ($_SESSION['logged_in'] != true) {
header("Location: login.php"zwinkern;
}
else {

echo "muh"

} ?>



Ich kann mir leider nicht mehr weiterhelfen... Suche schon seit Stunden die Lösung. Ist mein erstes System dieser Art.

Dankeschön!

Avatar user-255
06.03.2006 20:08

Warum denn so kompliziert? ;(

Prüf doch einfach im Index den Login und binde dann die entsprechende Datei ein.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-210
06.03.2006 23:40

Versuch es erstmal ohne include. Einfach um zu überprüfen ob der Login richtig funktioniert.
In einer Datei die du sowieso includest brauchst du kein session_start() mehr. Ausserdem ist include("$_GET['xyz']"zwinkern gaanz böse!!!
Gibt es eine Fehlermeldung oder was passiert überhaupt?

Sie haben soeben die Position Ihres Mauszeigers auf dem Monitor verändert. Bitte starten sie Windows neu damit die Änderungen wirksam werden.
Avatar user-168
07.03.2006 14:45

Funktioniert gar kein include, oder nur einige nicht?

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-333
07.03.2006 15:35

Original von user-255
Warum denn so kompliziert? ;(

Prüf doch einfach im Index den Login und binde dann die entsprechende Datei ein.


Angenommen ich würde diese abfrage nicht in jeder zu includender datei haben, würde man diese dateien auch ohne zugangsdaten aufrufen können - nur über den absoluten link: nicht index.php?action=profil sondern profil.php
Und das will ich verhindern.

@ Dust: es funktioniert gar kein include. nur "home"

Avatar user-255
07.03.2006 15:52

Original von user-333
Angenommen ich würde diese abfrage nicht in jeder zu includender datei haben, würde man diese dateien auch ohne zugangsdaten aufrufen können - nur über den absoluten link: nicht index.php?action=profil sondern profil.php
Und das will ich verhindern.

Dann verstecke einfach die einzubindenden Dateien im Ordner asdfjnkldfjlkdsfglk.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
Avatar user-206
07.03.2006 16:00

wäre eine lösung, dann sollte man allerdings die chmods für das verzeichnis richtig setzen... zwinkern

Eintracht Braunschweig
user-333
08.03.2006 19:27

Original von user-255
Original von user-333
Angenommen ich würde diese abfrage nicht in jeder zu includender datei haben, würde man diese dateien auch ohne zugangsdaten aufrufen können - nur über den absoluten link: nicht index.php?action=profil sondern profil.php
Und das will ich verhindern.

Dann verstecke einfach die einzubindenden Dateien im Ordner asdfjnkldfjlkdsfglk.


das wär aber nicht wirklich wirksam. Angenommen man würde den ordnernamen kennen, hätte der admin wieder verloren...
Es gibt doch sicherlich eine möglichkeit, alle dateien per sessions zu schützen.

Zur not eine ganz andere lösung, alle daten zu schützen?

Avatar user-255
08.03.2006 19:32

Original von user-333
Angenommen man würde den ordnernamen kennen, hätte der admin wieder verloren...

Du könntest in der .htaccess den Zugriff auf den Ordner und seinen Inhalt verbieten.

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm
user-210
08.03.2006 19:43

Original von user-333
Es gibt doch sicherlich eine möglichkeit, alle dateien per sessions zu schützen.


Aber was spricht denn dagegen?
Das sind nur sehr wenig Zeilen pro Datei.


if(isset($_SESSION['xyz'])) {
//Seite
} else {
//Error
}

Sie haben soeben die Position Ihres Mauszeigers auf dem Monitor verändert. Bitte starten sie Windows neu damit die Änderungen wirksam werden.
Avatar user-255
08.03.2006 20:02

Original von user-210
Aber was spricht denn dagegen?

Ganz klar: Faulheit!

Those who can, do. Those who can't, teach. # Musik gehört dem Volk! # last.fm