Anzeige

Geschützter Bereich mit Session - Problem bei weiterleitung

Geschützter Bereich mit Session - Problem bei weiterleitung | PSD-Tutorials.de

Erstellt von Zero-PSD, 26.04.2011.

  1. Zero-PSD

    Zero-PSD Selbsternannter Held

    Dabei seit:
    18.09.2006
    Beiträge:
    332
    Geschlecht:
    männlich
    Ort:
    Gevelsberg
    Software:
    Photoshop, Dreamweaver, Flash, InDesign
    Kameratyp:
    Nikon D-60
    Geschützter Bereich mit Session - Problem bei weiterleitung
    Servus,
    ich habe auf einer Seite einen kleinen geschützten Bereich angelegt, der an für sich auch soweit seinen Zweck erfüllt, allerdings mit einem Haken: Vorab sei gesagt, dass es einmal einen deutschen Bereich und einmal einen englischen Bereich gibt und beide nach dem selben Schema aufgebaut sind.

    Im deutschen Bereich liegen vier Dateien vor:
    • haendlerbereich.php - LogIn Formular mit Code der prüft
    • auth.php - guckt, ob Session gültig
    • logout.php - beendet momentane Session
    • seite1.php - enthält den geschützten Inhalt

    haendlerbereich.php
    PHP:
    1. <?php
    2.      if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    3.       session_unset();
    4.       session_destroy();
    5.       session_start();
    6.  
    7.       $passwort = $_POST['passwort'];
    8.  
    9.       $hostname = $_SERVER['HTTP_HOST'];
    10.       $path = dirname($_SERVER['PHP_SELF']);
    11.  
    12.       // Benutzername und Passwort werden überprüft
    13.       if ($passwort == 'haendler50392011') {
    14.        $_SESSION['angemeldet'] = true;
    15.  
    16.        // Weiterleitung zur geschützten Startseite
    17.        if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
    18.         if (php_sapi_name() == 'cgi') {
    19.          header('Status: 303 See Other');
    20.          }
    21.         else {
    22.          header('HTTP/1.1 303 See Other');
    23.          }
    24.         }
    25.  
    26.        header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/seite1.php');
    27.        exit;
    28.        }
    29.       }
    30. ?>
    auth.php
    PHP:
    1. <?php
    2.      session_start();
    3.  
    4.      $hostname = $_SERVER['HTTP_HOST'];
    5.      $path = dirname($_SERVER['PHP_SELF']);
    6.  
    7.      if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
    8.       header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/haendlerbereich.php');
    9.       exit;
    10.       }
    11. ?>
    logout.php
    PHP:
    1. <?php
    2.      session_start();
    3.      session_destroy();
    4.  
    5.      $hostname = $_SERVER['HTTP_HOST'];
    6.      $path = dirname($_SERVER['PHP_SELF']);
    7.  
    8.      header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/haendlerbereich.php');
    9. ?>
    seite1.php - ruft auth.php via include auf

    Soweit funktioniert das alles. Wenn ich jetzt aber in den englischen Bereich wechsle, um zu prüfen, ob dort auch alles funktioniert, werde ich nicht zu "seite1.php" weitergeleitet, sondern ich werde zu "haendlerbereich.php" weitergeleitet und verstehe beim besten Willen nicht weshalb.. Die Dateien mit Code folgen auch hier wieder:

    • retailerarray.php
    • auth.php
    • logout.php
    • seite1.php

    retailerarray.php
    PHP:
    1. <?php
    2.      if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    3.       session_start();
    4.  
    5.       $passwort = $_POST['passwort'];
    6.  
    7.       $hostname = $_SERVER['HTTP_HOST'];
    8.       $path = dirname($_SERVER['PHP_SELF']);
    9.  
    10.       // Benutzername und Passwort werden überprüft
    11.       if ($passwort == 'haendler50392011') {
    12.        $_SESSION['angemeldet'] = true;
    13.  
    14.        // Weiterleitung zur geschützten Startseite
    15.        if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') {
    16.         if (php_sapi_name() == 'cgi') {
    17.          header('Status: 303 See Other');
    18.          }
    19.         else {
    20.          header('HTTP/1.1 303 See Other');
    21.          }
    22.         }
    23.  
    24.        header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/seite1.php');
    25.        exit;
    26.        }
    27.       }
    28. ?>
    auth.php
    PHP:
    1. <?php
    2.      session_start();
    3.  
    4.      $hostname = $_SERVER['HTTP_HOST'];
    5.      $path = dirname($_SERVER['PHP_SELF']);
    6.  
    7.      if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) {
    8.       header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/retailerarray.php');
    9.       exit;
    10.       }
    11. ?>
    logout.php
    PHP:
    1. <?php
    2.      session_start();
    3.      session_destroy();
    4.  
    5.      $hostname = $_SERVER['HTTP_HOST'];
    6.      $path = dirname($_SERVER['PHP_SELF']);
    7.  
    8.      header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/retailerarray.php');
    9. ?>
    seite1.php - wie auch schon zuvor

    Ich bin dankbar für jede Hilfe. Meine Vermutung, ohne große Ahnung zu haben, ist, dass es mit den Sessions zusammenhängt? Ich würde mich über Antwort freuen.

    Gruß.
     
    #1      
  2. Chriss1987

    Chriss1987 me.drinkCoffee();

    Dabei seit:
    26.03.2006
    Beiträge:
    378
    Geschlecht:
    männlich
    Ort:
    Kirchhundem
    Kameratyp:
    Canon EOS 400D
    Geschützter Bereich mit Session - Problem bei weiterleitung
    AW: Geschützter Bereich mit Session - Problem bei weiterleitung

    Hi,

    gibt es irgendwelche Fehlermeldungen?
    ErrorReporting einschalten (E_ALL) und Seiten nochmals prüfen. Evtl. bekommst du dann deinen Fehler schon gelöst! ;) Sonst noch alle Variablen und derren Inhalt überprüfen! ;)

    Noch ein Tipp: wenn du 2 getrennte Sprachvarianten hast, nicht alle Bereiche neumachen, lieber eine entsprechende php-Datei mit einem Array o.ä. einbinden und die Felder im Array benutzen.
    Bsp:
    PHP:
    1.  
    2. <?php
    3. // en.php
    4. $lang = array();
    5. $lang['beg'] = 'Hello';
    6. $lang['obj'] = 'World';
    7. ?>
    8. <?php
    9. // de.php
    10. $lang = array();
    11. $lang['beg'] = 'Hallo';
    12. $lang['obj'] = 'Welt';
    13. ?>
    14. <?php
    15. // seite.php
    16. include 'de.php';
    17. echo $lang['beg'] . ' ' . $lang['obj'] . '!';
    18. ?>
    So müsstest du nicht immer redunanten Code pflegen! ;)

    Schöne Grüße aus dem Sauerland!
    Chriss
     
    Zuletzt bearbeitet: 26.04.2011
    #2      
x
×
×