Problem mit SESSION

Nemesis

N3RD
Beiträge
2.176
Hi,
ich möchte gerne Sessions verwenden und habe dazu eine datei zum login generiert, die den benutzernamen und das passwort an eine datei sendet, welche dies anhand einer datenbank auf richtigkeit überprüft.
das funktioniert soweit auch alles.
zum absichern der seiten, auf die nur mit gültigem login zugegriffen werden soll habe ich eine php-datei mit folgendem inhalt erstellt:
PHP:
<?php  
session_start ();  
if (!isset($_SESSION['user_id']))  
{  
  header ("Location: formular.php");  
}  
?>
diese wird mittels include in jede zu schützende datei eingebunden.
Wenn ich nun eingeloggt bin funktioniert das auch, aber wenn ich die seite aufrufe wärend iuch niucht eingeloggt bin funktioniert es nicht. dann zeigt er mir nur eine fehlerseite an (HTTP 500 Interner Serverfehler).

nun habe ich herausgefunden, dass wenn ich auf der geschützen seite dike ausgabe der BenutzerID und des Benutzernamens, lösche, dann funktioniert es wie es soll.
PHP:
<?php  
include ("checkuser.php");  
?>
<html> 
<head>
<title>Interne Seite</title>
</head>
<body>
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br> 
  Benutzername: <?php echo $_SESSION["user_name"]; ?>
  <hr>
  <a href="logout.php">Ausloggen</a>
</body>
</html>
ich werde daraus nicht schlau.

kann mir da wer weiterhelfen ?

danke !
 

Nemesis

N3RD
Beiträge
2.176
hm ... das verstehe ich nicht ganz ... also die Zeilen
PHP:
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>  
  Benutzername: <?php echo $_SESSION["user_name"]; ?>
zwischen
PHP:
ob_start("callback");
...
ob_end_flush();
und dann kann men den fehler den sie produzieren in eine variable umlenken, oder wie ?

danke !
 
Zuletzt bearbeitet:

daboss

Kaiser
Beiträge
1.297
Auf die Serverlogs hast du keinen Zugriff? So auf den ersten Blick seh ich eigentlich nix nicht passendes...
(Ich geh mal davon aus, das diese checkuser.php der erste Codeschnippsel ist, und diese nicht (auch nicht über andere eventuell eingebundene Dateien) in der formular.php eingebunden wird)
 

daboss

Kaiser
Beiträge
1.297
Naja, zum einen geht's afaik auch ohne, zum anderen sollte das nicht zu nem 500er führen, oder?
 

sim4000

Lebende Foren Legende
Beiträge
1.933
PHP selbst kann keinen 500er auslösen.
99,8% der Fälle ist es eine Fehlerhafte .htaccess File die irgendetwas macht, was sie nicht darf.
 

dmaphy

Routinier
Beiträge
482
Naja, zum einen geht's afaik auch ohne, zum anderen sollte das nicht zu nem 500er führen, oder?

Ich bin mir da im Moment nicht so sicher. Ich war immer steif und fest der Meinung, dass man session_name() zwingend braucht. Wenn das nicht so ist, lasse ich mich gerne eines besseren belehren. Zu einem 500er-Fehler sollte das allerdings in der Tat nicht führen, da gebe ich dir Recht.
 

sim4000

Lebende Foren Legende
Beiträge
1.933
session_name() brauch man nicht. Ein start reicht vollkommen aus.
 

kartoffel200

AMD Fanboy Since 2003
Beiträge
938
PHP:
if(!isset($_SESSION["user_id"])){
	echo include('content/error_login.php');
	return;
	}

Begrenz das mal auf das nur. Dieses als Datei includiert und fertig.
 

saeckereier

Graue Eminenz
Beiträge
1.920
500er Fehler löst PHP zum Beispiel bei Syntax-Fehlern und ähnlichem aus. Ein Blick in das Errorlog des Server verschafft in fast allen Fällen Klarheit. Die Ausgabe von Fehlern oder PHP-Logging in eine Datei auch. Warum rumrätseln wenn mit Sicherheit eine Fehlermeldung, die auch etwas mehr Inhalt hat produziert werden kann?
 

Nemesis

N3RD
Beiträge
2.176
naja, aber das mit checkuser und so funktioniert ja ... und wenn ich die beiden zeilen
PHP:
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br>  
  Benutzername: <?php echo $_SESSION["user_name"]; ?>
auskommentiere, dann funktioniert alles ... nur eben dass die ausgaben fehlen.
eine .htaccess gibt es nicht und auch das server-log fällt sehr spährlich aus ... ich traus mich garnicht zu sagen ... aber das is ein IIS-Server.

edit:
wenn ich die session-daten wie folgt ausgebe, dann funktionierts, also muss der code in obigen beiden zeilen liegen ...
PHP:
echo nl2br(print_r($_SESSION,true));
 
Zuletzt bearbeitet:

sim4000

Lebende Foren Legende
Beiträge
1.933
Versuch es mal so:
PHP:
<?php  
session_start ();  
if (!isset($_SESSION['user_id']))  
{  
  header ("Location: formular.php");  
  exit();
}  
?>
Sprich bei einem Header die Scriptausführung direkt beenden.
Sonst wird der Rest der PHP Datei noch ausgeführt. Das will man an der stelle ja nicht...
 

Nemesis

N3RD
Beiträge
2.176
@sim4000: ne, hat auch nicht funktioniert, immernoch fehler 500
@saeckereier: nichts was auf einen fehler oder so hinweisen würde, nur dass ich mit meiner ip um irgendeine uhrzeit die seite aufgerufen habe.
 

Ähnliche Themen

[PHP] Session-Authentifizierung zentralisieren

dovecot und postfix Konfiguration Problem

Wo kommt das "" her?

apache2-mod_php5 will nicht.

Webinterface für Gameserver/Shellscript wird nicht ausgeführt

Oben