Willkommen in der Webstatt
User-1 am 06.03.06 20: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");
}
else {
include("../config.php");
?>

<!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"))
echo "Die Seite existiert nicht.";
else
include ("" . $_GET['action'] . ".php");

?>
</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();

// xyz-19utzername und Passwort werden überprüft
include("../config.php");
$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");
}
else {
header("Location: login.php");
}
}
include("../config.php");
?>

<!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");
}
else {

echo "muh"

} ?>



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

xyz-48keschön!

netcup.de Warum gibt es hier Werbung?
User-2 am 06.03.06 21:08

Warum denn so kompliziert? ;(

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

User-3 am 07.03.06 00: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']") gaanz böse!!!
Gibt es eine Fehlermeldung oder was passiert überhaupt?

User-4 am 07.03.06 15:45

Funktioniert gar kein include, oder nur einige nicht?

User-1 am 07.03.06 16:35

Quote
Original von xyz-145
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"

User-2 am 07.03.06 16:52

Quote
Original von ***
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.

xyz-48n verstecke einfach die einzubindenden Dateien im Ordner asdfjnkldfjlkdsfglk.

User-5 am 07.03.06 17:00

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

User-1 am 08.03.06 20:27

Quote
Original von xyz-145
[quote]Original von ***
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.

xyz-48n verstecke einfach die einzubindenden Dateien im Ordner asdfjnkldfjlkdsfglk.[/quote]

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?

User-2 am 08.03.06 20:32

Quote
Original von ***
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.

User-3 am 08.03.06 20:43

Quote
Original von ***
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
}

User-2 am 08.03.06 21:02

Quote
Original von xyz-100
Aber was spricht denn dagegen?

Ganz klar: Faulheit!

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt