Autor Beitrag
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Sa 10.03.12 20:11 
Hallo zusammen,
mit meinem Projekt Homepage bin ich nun an der Stelle Passwortschutz angekommen. Dieser Schutz soll einfach eine ganze Seite vor Unbefugten absichern. Weil es kein super sicherer Passwortchutz sein muss (und auch ohne Datenbank), habe ich einfach mal die Idee von selfhtml weiterverwendet ( aktuell.de.selfhtml....kel/php/loginsystem/ ).
Es gibt 3 Dateien: Auth.php, Login.php, Logout.php.
Die Auth.php beinhalt:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<?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;
      }
?>

und Login.php:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
<?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 == 'person' && $passwort == 'geheim') {
       $_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>
  <form action="login.php" method="post">
   Username: <input type="text" name="username" />
   Passwort: <input type="password" name="passwort" />
   <input type="submit" value="Anmelden" />
  </form>
 </body>
</html>


Nun der Anfang einer Seite, die Verschlüsselt werden soll:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
<?php include('auth.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>
 </head>
 <body>
  <h1>Herzlichen Glückwunsch!</h1>
  <p>Sie sind nun angemeldet.</p>
  <p>Sie können sich auch wieder <a href="logout.php">abmelden</a>.</p>
 </body>
</html>


Funktioniert soweit alles wunderbar. Nur müsste ich für jede Seite, die Geschützt werden soll, 3 eigene Dateien erstellen. Denn die Umleitung muss ja immer zu der Seite hinführen, die den Loginbereich aufgerufen hat.
Mir wäre es lieber, wenn ich die 3 Dateien universell einsetzten könnte. D.h, dass alle geschützte Dateien auf die gleichen 3 Dateien zugreifen, und die Login.php selbst erkennt, wohin er umleiten muss.
Meine Idee war, dass man der Auth.php einfach als Parameter den Namen der geschützten Seite gibt, und die den Parameter der Login.php weitergibt.
Aber ich kann ja beim "includen" keine Parameter übergeben :nixweiss:

Ach, ich glaub ich machs mal wieder kompliziertet als es ist :D Habe einfach keine Erfahrung in PHP...
Wie könnte man das Problem lösen?

Viele Grüße,
Littleben


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am So 15.07.2012 um 12:45
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: So 11.03.12 14:47 
Einfach beim Redirect die Herkunftsseite angeben und in der Login-Seite wieder auf diese zurückleiten ... Stichwort GET/Parameter in URL [bergeben.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 258
Erhaltene Danke: 4

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mi 14.03.12 16:39 
Mhm...wie meinst du das? Ich muss ja beim Einbinden irgendwie den Herkunftsort an die Auth.php übergeben?