943 Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo,

zur Vorgeschichte:
Ich möchte einen Passwortgesicherten Bereich erstellen. Leider habe ich nicht gerade das Expertenwissen. Es soll einen Login geben, wo man sich mit Benutzername und Passwort einloggen kann. Momentan sind 2 Benutzerkonten geplant. Wenn ich mich mit Benutzer xxxx einlogge, so möchte ich an die Seite index1.php geleitet werden. Logge ich mich aber mit yyyy ein, so möchte ich an die Seite index2.php geleitet werden.

Aktueller Code:

login.php


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
session_start();

$username = $_POST['username'];
$passwort = $_POST['passwort'];

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

// Benutzername und Passwort werden überprüft
if ($username == 'xxxx' && $passwort == 'xxxx') {
$_SESSION['angemeldet'] = true;

// Weiterleitung zur geschützten Startseite
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
if (php_sapi_name() == 'cgi') {
header('Status: 303 See Other');
}
else {
header('HTTP/1.1 303 See Other');
}
}

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
exit;
}
}
?>
<!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>
</head>
<body bgcolor="#FFEECA">
<form action="login1.php" method="post">
Username: <input type="text" name="username" value="xxxx" /><br />
Passwort: <input type="password" name="passwort" /><br />
<input type="submit" value="Anmelden" />
</form>
</body>
</html>


auth.php

[code
]<?php
session_start();

$hostname = $_SERVER['HTTP_HOST'];
$path = dirname($_SERVER['PHP_SELF']);

if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php');
exit;
}
?>
[/code]

Vielen Dank für die Mühe

3 Antworten

0 Punkte
Beantwortet von
Zuerst einmal fallen mir mehrere Dinge auf:
[list]
Dein Form sendet die Daten an login1.php, aber deine Datei heißt login.php, das wird vermutlich nicht funktionieren, es sei denn, die Datei ist vorhanden
Mir ist nicht ganz klar, an welcher Stelle die auth.php ins Spiel kommt
[/list]

Ansonsten tue folgendes:
Die Zeile, wo du auf die index.php weiterleitest, mache einfach vorher eine Abfrage mit if/else, welcher benutzer angemeldet ist und leite entsprechend weiter. WEnn es mehr Benutzer werden, macht evtl. switch Sinn. Natürlich musst du in der entsprechenden Datei (index1.php, index2.php auch eine Prüfung durchführen
0 Punkte
Beantwortet von
Hallo,

vielen Dank für deine Antwort.

Kannst du mir das vileicht in den Code einbauen, so wie du es meinst?
Du würdest mir damit einen sehr großen gefallen tun.

Die auth.php sollte eigentlich Prüfen, ob der User eingeloggt ist.
0 Punkte
Beantwortet von
ersetze diese zeile in der login.php:

header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php');
exit;


durch folgenden code:

switch ($username) {
case 'xxxx': header("Location: seite1.php");
break;
case 'yyyy': header("Location: seite2.php");
break;
default: break;
}
...