Probleme mit Session

sheeba1507

Erfahrenes Mitglied
Hi zusammen ( ja, ich lebe noch ;-) ),

da ich mich bislang mit "session" nicht so befasst habe, habe ich damit
ein paar Probleme.

Bei einer Session-Prüfung tritt online ein Fehler auf, der aber lokal
nicht vorhanden ist.

In einem Login-Formular können sich sowohl Kunden mit ihrer Kunden-Nummer
und Passwort als auch der Admin mit seinen Zugangs-Daten anmelden.
Um zu verhindern, daß man den Admin-Bereich ohne Zugangs-Daten
direkt (wenn man die Datei weiß) aufrufen kann, prüfe ich, ob man sich
ordnungsgemäß angemeldet hat und die Session gesetzt wurde.

Folgende Codierung liegt vor :

login.php
PHP:
<?php 
session_start(); 
... 
if ($kunde == "1234" && $passw == "5678") //Admin-Zugang 
  { 
  $_SESSION['user'] = '12345678'; 
  header("Location: xyz.php"); //Aufruf Admin-Bereich 
  } 
  //Hier folgt die Abfrage der Kunden-Datenbank und Vergleich 
  // auf Passwort. 
  //Wenn korrekt, dann 
  $_SESSION['member'] = $kd_num; 
  header("Location: abc.php"); //Aufruf Kunden-Bereich 
?>
Den Kunden-Bereich abc.php direkt aufrufen würde nichts bringen, da ohne
Kunden-Nummer in der Session keine Daten angezeigt werden.
Deshalb ist hier eine Session-Prüfung (noch) nicht notwendig.

xyz.php
PHP:
<?php 
session_start(); 
... 
if(!isset($_SESSION['user'])) 
  { 
  ?> 
  <p> 
    Sie haben keine Zugriffsrechte ! 
  </p> 
  <?php 
  } 
else 
  { 
  //Hier folgt der Admin-Bereich 
  } 
?>
Es wird zwar der Admin-Bereich aufgerufen und lokal kann man auch alle
Funktionen aufrufen.
Online jedoch erhält man bei Aufruf einer Funktion die Zugriffs-Meldung.

Da ich bislang noch keine Erfahrung mit Session habe, kann ich hier den
Fehler nicht nachvollziehen und bitte euch nun um Hilfe.

Thx im voraus.

Gruß, Mike
 
Du könntest erstmal schauen, ob irgendwas in der Session steht.
Du muss dazu nur hinter den Session_start
PHP:
print_r($_SESSION);
einfügen.
 
Kann es manchmal sein, das du hinter der schließenden Klammer des print_r Befehls ein : (Doppelpunkt) gesetzt hast? Dort muss ein ; (Semikolon) hin.
 
Das hat den ganz einfachen Grund, das $_SESSION so geschrieben werden muss und nicht so wie du geschrieben hast ($_session).
Also schreib mal alle Buchstaben groß dann funktioniert es.
 
Hi,

nun habe ich die Ausgabe geändert und es funktioniert.
PHP:
<p>Session-Inhalt : <?php echo nl2br(print_r($_SESSION)); ?></p>

Dabei konnte ich feststellen, daß lokal der Inhalt korrekt gesetzt wurde.
Code:
Session-Inhalt : Array ( [user] => 12345678 ) 1

Online jedoch ist der Inhalt leer.
Code:
Session-Inhalt : Array ( [user] => ) 1

Kann es sein, daß der Server diese Funktion nicht unterstützt ?
Muß evtl. irgend etwas aktiviert werden ?

Gruß, Mike
 
Hallo zusammen,

das Problem habe ich gelöst.

Anscheinend war die Codierung ...
PHP:
$_SESSION['user']
... nicht erlaubt.

Ich habe sie durch ...
PHP:
$_SESSION['member']
ersetzt und das Problem trat nicht mehr auf.

Allen ein schönes Wochenende.

Gruß, Mike
 
Zurück