Hallo,
ich weiss, dass session_start(); ausgeführt werden muss, bevor irgendein anderer Code ausgeführt wird. Habe nun jedoch, in Anlehnung an ein Script aus einem Buch ein Grundsystem gebaut und verstehe die Fehlermeldung in diesem Zusammenhang nicht.
Hier sind meine bisherigen Daten:
index.php
common.php
settings.php
includeAllClasses:
Und zuletzt die Session Klasse class.SESSION.php:
Die genaue Fehlermeldung lautet:
Wenn ich die DEFINE Befehle ausklammere, funktioniert es zwar, jedoch bekomme ich dann keine Verbindung mehr zur mysql Datenbank. Weiss jemand einen Rat für dieses Problem?
ich weiss, dass session_start(); ausgeführt werden muss, bevor irgendein anderer Code ausgeführt wird. Habe nun jedoch, in Anlehnung an ein Script aus einem Buch ein Grundsystem gebaut und verstehe die Fehlermeldung in diesem Zusammenhang nicht.
Hier sind meine bisherigen Daten:
index.php
PHP-Code:
<?php
# Einbinden der Konfigurationsdatei
require_once 'common.php';
# Aufbau der Seite
System\HTML::printHead();
System\HTML::printBody();
System\HTML::printFooter();
?>
PHP-Code:
<?php
# Pfade (Web und lokal)
include(__DIR__.'/paths.php');
# Datenbank- und weitere Systemeinstellungen
require_once PROJECT_DOCUMENT_ROOT.'/settings.php';
# Alle Basis Klassen einbinden
require_once PROJECT_DOCUMENT_ROOT."/inc/includeAllClasses.php";
# Datenbanbobjekt erstellen, falls nicht bereits erstellt
if (!isset($GLOBALS['DB'])) {
$DB = new System\Database\MySQL(DB_SERVER,DB_USER,DB_PASSWORD,DB_NAME,DB_PORT);
}
# Global verfügbares Session Objekt
new System\SessionHandler();
?>
PHP-Code:
<?php
# Verbindungsdaten für Datenbank
define('DB_SERVER',"localhost");
define('DB_PORT',"3306");
define('DB_NAME',"database");
define('DB_USER',"user");
define('DB_PASSWORD',"password");
# HTML Seiten Titel
define('HTML_TITLE', "Testseite");
# Setzen der Zeitzone
date_default_timezone_set('Europe/Berlin');
?>
PHP-Code:
<?php
# Sitzungsklasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/class.SESSION.php";
# Datenbankklasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/class.MySQL.php";
# HTML-Klasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/class.HTML.php";
# LOGIN-Klasse
require_once PROJECT_DOCUMENT_ROOT."/inc/classes/class.LOGIN.php";
?>
PHP-Code:
<?php
# Namespace festlegen
namespace System;
class SessionHandler {
private $DB = null;
public function __construct()
{
$this->DB = $GLOBALS['DB'];
# Den SessionHandler auf die Methoden dieser Klasse setzen
session_set_save_handler(array ($this, '_open'),
array ($this, '_close'),
array ($this, '_read'),
array ($this, '_write'),
array ($this, '_destroy'),
array ($this, '_gc'));
# Session starten
session_start();
# session_write_close();
register_shutdown_function('session_write_close');
}
# Öffnen der Session
public function _open($path, $name) {
return true;
}
...
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at D:\web\test\settings.php:20) in D:\web\test\inc\classes\class.SESSION.php on line 22
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\web\test\settings.php:20) in D:\web\test\inc\classes\class.SESSION.php on line 22
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at D:\web\test\settings.php:20) in D:\web\test\inc\classes\class.SESSION.php on line 22
Kommentar