Suchen
Inside Forum
Nützliche Links
phpforum.de Tipp
 
phpforum.de bei Facebook
 
phpforum.de bei Twitter
 

Zurück   PHP Forum: phpforum.de > PHP > PHP

PHP Alles rund um PHP

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.02.2016, 12:56
Kronenmichl Kronenmichl ist offline
Besucher
 
Registriert seit: 07.11.2009
Beiträge: 41
Standard Session nach weiterleitung gelöscht

Hallo zusammen,

folgende Herausforderung habe ich im Moment.

Auf meiner Seite können sich zum einen Kunden einloggen zum anderen Admins. Die Kunden haben zugriff auf die Ihnen zugeordneten pdf und tif dateien, die Admins sollen zugriff auf alle Dateien haben.

Es gibt zwei getrennte Logins, einmal Kunde, einmal Admin. Ein Kundenlogin setzt in $_SESSION['kundennummer'] die Kundennummer ein, ein Adminlogin setzt $_SESSION['admin'] auf true.

Die Dateien auf die zugegriffen werden sollen liegen in Unterordnen, das gesamte Verzeichnis ist durch eine .htaccess geschützt.

.htaccess
Code:
RewriteEngine On
RewriteRule ^(.+\.pdf)$ http://www.v-smart.de/mandanten/pdf-anzeige.php?pdf=$1
RewriteRule ^(.+\.PDF)$ http://www.v-smart.de/mandanten/pdf-anzeige.php?pdf=$1
RewriteRule ^(.+\.tif)$ http://www.v-smart.de/mandanten/pdf-anzeige.php?pdf=$1
RewriteRule ^(.+\.TIF)$ http://www.v-smart.de/mandanten/pdf-anzeige.php?pdf=$1


Es werden also alle Anfragen an die pdf-anzeige.php geleitet. Diese sieht dann so aus:

PHP Quellcode:
$root = realpath($_SERVER["DOCUMENT_ROOT"]);  // Hauptverzeichnis ermitteln
require_once $root.'/system/sessionStart.php'; // sessionfunktion laden für userprüfung
$session = new sessionStart; // userprüfung / sesseon starten

$dateiname = $_GET['pdf'];
$dir = explode('/', $dateiname);
$kdnr = strtoupper($_SESSION['kundennummer']);


if ($dir[0] == $kdnr or isset($_SESSION['admin'])) {
    if(file_exists($dateiname)){
        header("Content-type: application/pdf");
        header("Content-Disposition: attachment; filename=\"$dateiname\"");
        readfile($dateiname);
    } else {
        echo "DIE DATEI $dateiname IST NICHT VORHANDEN!";
    }
} else {
  echo "Sie haben leider keinen Zugriff auf diese Datei.";
}



Es soll also durch die Klasse sessionStart geprüft werden, ob der aktuell angemeldete User (Kunde odere Admin) das Zugriffsrecht auf das jeweilige Verzeichnis besitzt.

Wenn ich mich mit Kundendaten einlogge funktioniert alles prima. Wenn ich allerdings als Admin eingeloggt bin (der Zugriff läuft dann über einen anderen link aus dem Adminbereich) werde ich immer auf die index Seite umgeleitet, wie in der sessionStart Klasse angegeben.

Hier noch die sessionStart.php:
PHP Quellcode:
class sessionStart {
function __construct() {
  session_start();
  if(!isset($_SESSION["kundennummer"]))
   {
    if(!isset($_SESSION['admin'])){
      // header ("LOCATION: ../index.php");
      print_r($_SESSION);
      exit;
    }
   }
}
}


Wie ihr schon sehen könnt habe ich den header mittlerweile auskommentiert um dafür die session auszugeben. Dort steht dann nur Array ( )
Irgendwo geht also die komplette Session verloren und ich schnalle einfach nicht wo.

Was mich besonders wundert ist, dass die selbe sessionStart auch im gesamten Admin Bereich hinterlegt ist, wo sie auch funktioniert.

Hat vielleicht jemand einen Tip wo ich noch suchen kann?
Mit Zitat antworten
  #2  
Alt 27.02.2016, 15:50
Marc Ermshaus Marc Ermshaus ist offline
Forum-Mitarbeiter
 
Registriert seit: 06.09.2004
Beiträge: 5.198
Standard AW: Session nach weiterleitung gelöscht

Glaube nicht, dass der Grund an dem Code ersichtlich ist. Liegt der Admin-Bereich möglicherweise auf einer anderen Subdomain?

Vorsicht übrigens, wenn jemand ".."-Pfadanteile in $_GET['pdf'] einbaut.
Mit Zitat antworten
  #3  
Alt 27.02.2016, 16:21
Kronenmichl Kronenmichl ist offline
Besucher
 
Registriert seit: 07.11.2009
Beiträge: 41
Standard AW: Session nach weiterleitung gelöscht

Hi,

nein, der Admin Bereich liegt in einem weiteren Unterverzeichnis.

Danke für den Hinweis mit GET.
Mit Zitat antworten
  #4  
Alt 28.02.2016, 20:29
Kronenmichl Kronenmichl ist offline
Besucher
 
Registriert seit: 07.11.2009
Beiträge: 41
Standard AW: Session nach weiterleitung gelöscht

Hab jetzt noch eine Ergänzung. Vielleicht kann mir damit jemand helfen.

Ich dachte bislang, dass die Ansich für Kunden ganz normal funktioniert. Das stimmt so allerdings nicht. Ich hatte einen Fehler in den Dateinamen, weswegen die .htaccess weiterleitung gar nicht gegriffen hat.

Das heißt, es wird bei Aufruf einer pdf Datei auf die pdf-anzeige.php weitergeleitet, von wo aus dann die Klasse sessionStart aufgerufen wird. In dieser pdf-anzeige.php ist aber dann die Session Variable komplett gelöscht.

Es muss also irgendwo zwischen dem Klick auf den Link zur pdf-Datei und der pdf-anzeige.php verloren gehn. Ich hab aber keine Ahnung wo.

Danke schonmal,

Gruß Michael
Mit Zitat antworten
  #5  
Alt 28.02.2016, 20:47
hellbringer hellbringer ist offline
Forum-Mitarbeiter
 
Registriert seit: 27.03.2008
Beiträge: 30.587
Standard AW: Session nach weiterleitung gelöscht

Wie wärs mit nachschauen? Was der Client und der Server kommunizieren, ist ja kein Geheimnis, sondern lässt sich nachvollziehen. Da sollte ja schnell klar werden, wo die Session verloren geht.
Mit Zitat antworten
  #6  
Alt 28.02.2016, 21:06
Kronenmichl Kronenmichl ist offline
Besucher
 
Registriert seit: 07.11.2009
Beiträge: 41
Standard AW: Session nach weiterleitung gelöscht

Hab's gefunden! Ich hab einfach aus den Weiterleitungen in der htaccess das "www" aus der Adresse rausgenommen. Damit hat sich das Problem erledigt. Vielen Dank trotzdem.
Mit Zitat antworten


Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu
Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Session gelöscht? dornathal PHP 11 15.10.2006 21:24
Weiterleitung nach Session Register JSO_Admin PHP 8 01.08.2006 13:32
Session gelöscht bei redirect rund1me PHP 6 11.04.2006 15:05
Session Probleme nach url Weiterleitung beim Login kstadt PHP 12 31.12.2004 01:38
Session nach editieren gelöscht jock PHP 1 02.12.2003 17:03


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr.


Powered by vBulletin® Version 3.8.8 (Deutsch)
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Powered by NuWiki v1.3 RC1 Copyright ©2006-2007, NuHit, LLC