probleme mit php session

sono

sono

Sack Flöhe Hüter
PHP:
<?php

session_name ("modbase");
session_start();

$_SESSION['test'] = "Du Sack !";
echo $_SESSION['test'];
?>

liefter folgende Ausgabe:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/entwicklung/index.php:30) in /var/www/entwicklung/index.php on line 44

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/entwicklung/index.php:30) in /var/www/entwicklung/index.php on line 44
Du Sack !

Was sagt mir diese fehlermeldung ?
 
hallo!

du hast irgendwo schon eine ausgabe vor der session_start() anweisung!

denn damit muss er das cookie an den client senden, diese header-informationen (siehe funktion header() ) müssen aber als aller erstes ausgegeben werden.

das kann schon passieren, wenn du irgendwo zwischen den <?php ?> bereichen ein leerzeichen hast!

mfg joe
 
Ah , sehr interessant, dann sollte das recht einfach zu beheben sein.

Thx .

Gruß Sono
 
Das mit den vielen Headern kannst du einfach umgehen
PHP:
<?
ob_start();
session_start();
if(session_is_registered($TEST) { ?>
<html><head><title>hallo</title><head><body>
<?=$_SESSION[TEST]?></body>
<?
}
else {
$TEST = "du Sack";
session_register($TEST);
header("location:index.html")
}

ob_flush();
?>

ob ist ein output_buffer.
Die Befehle werden erst nach ob_flush() durchgeführt. Und dann kann er auch auf die Header achten... das klappt dann alles!
 
Bin wie immer erfreut mit ihnen Geschäfte zu machen :D
 
Dann ist ja gut..
Also ich verwende immer den ob-Buffer - dann muss ich mir wirklich keine Sorge den Headern wegen machen!
 
Jo das hab ich mir auch direkt angewöhnt , macht definitiv sinn .
Ich blocke nebenbei noch die fehlermeldungen mit @ das ist zwar wohl nicht die feine englische aber ich bin ja auch kein engländer .
 
Nun, während der Entwicklungsphase würd ich auf die @s verzichten. So kriegste bestimmt noch ein paar gute Informationen.
Aber später im Betrieb ist es eh nicht mehr so wichtig wie es hinter der Fassade aussieht. Hauptsache es ist hübsch und funktioniert!
 
Ma ne Frage wegen Session Register.

das geht doch nur bei register globals on, ich will auf register globals off proggen. Einfach aus sicherheits und vor allem aus performance günden .

dann kann ich das doch einfach mit $_SESSION['variabelname'] machen und die müssten so auch immer gehen.

oder ?
 
Nein nein, ich arbeite auch mit globals off.
Und session_register(VARIABLE) ist der normale Weg.

Lies dazu mal das php Handbuch auf php.net
 
Hm auf die frage bin ich gekommen weil ich hauptsächlich mit dem buch arbeite .
Da steht nämlich :

Falls register_globals deaktiviert ist, können nur Bestandteile des globalen assoziativen Arrays $_SESSION als Session-Variablen registriert werden. Wiederhergestellte Session-Variablen stehen nur im Array $_SESSION zur Verfügung.

Aus Gründen der Verbesserung der Sicherheit und der Lesbarkeit des Codes wird die Verwendung von $_SESSION (oder $HTTP_SESSION_VARS bei PHP 4.0.6 oder niedriger) empfohlen. Mit $_SESSION werden die Funktionen session_register(), session_unregister() und session_is_registered() nicht benötigt. Auf die Session-Variablen kann wie auf jede normale Variable zugegriffen werden.

Beispiel 1. Registrierung einer Variablen mit $_SESSION.

<?php
session_start();
// Verwenden Sie bei PHP 4.0.6 oder niedriger $HTTP_SESSION_VARS
if (!isset($_SESSION['zaehler'])) {
$_SESSION['zaehler'] = 0;
} else {
$_SESSION['zaehler']++;
}
?>

Beispiel 2. Aufheben der Registrierung einer Variablen mit $_SESSION und deaktiviertem register_globals.

<?php
session_start();
// Verwenden Sie bei PHP 4.0.6 oder niedriger $HTTP_SESSION_VARS
unset($_SESSION['zaehler']);
?>

Beispiel 3. Aufheben der Registrierung einer Variablen mit aktiviertem register_globals, nachdem sie unter Verwendung von $_SESSION registriert wurde.

<?php
session_start();
// Ab PHP 4.3, können Sie auch einfach das vorige Beispiel benutzen.
session_unregister('count');
?>

Wenn register_globals aktiviert ist, kann jede globalen Variable als Session-Variable registriert werden. Beim Neustart einer Session werden diese Variablen als entsprechende globale Variablen wiederhergestellt. Da PHP wissen muss, welche globalen Variablen als Session-Variablen registriert sind, muss der Benutzer Variablen mit der Funktion session_register() registrieren. Sie können das vermeiden, indem Sie einfach Einträge in $_SESSION setzen.
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

X startet nichtmehr

Apache /var/www zu /home/ich/www wechseln

NagiosGrapher 1.7.1 funktioniert nicht

dovecot und postfix Konfiguration Problem

Zurück
Oben