php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.09.2004, 00:39  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 41
d-81 befindet sich auf einem aufstrebenden Ast
Standard Problehme mit "session_start();"

Kann mir jemand erkleren, was diese Fehlermeldung bedeutet?

Warning: Cannot send session cookie - headers already sent by (output started at /mnt/be2/04/214/00000005/htdocs/premier/index.php:13) in /mnt/be2/04/214/00000005/htdocs/premier/index.php on line 39

Warning: Cannot send session cache limiter - headers already sent (output started at /mnt/be2/04/214/00000005/htdocs/premier/index.php:13) in /mnt/be2/04/214/00000005/htdocs/premier/index.php on line 39
d-81 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.09.2004, 01:07  
Gast
 
Beiträge: n/a
Standard

eine http-Antwort ist aus zwei Teilen aufgebaut, repsonse_header und repsonse_body.
Der response_header muss vollständig vor dem repsonse_body an den client gesendet werden. Andersherum: sobald auch nur das erste Zeichen des response_body gesendet wurde, können keine Daten des response_header gesendet werden. Das ist keine Eigenart von php sondern von http.

Die php-Funktion header() fügt dem response_header ein Datum hinzu. Alle anderen Ausgabe (echo/print/<Text ausserhalb eines php-Blocks>/usw.) gehört zum response_body - und dann funktioniert header() nicht mehr.
Sessions verwendet per Voreinstellung cookies. Die Werte eines cookies werden auch über header() an den client versendet. Deshalb gilt auch hier: Sobald eine Ausgabe geschieht, können keine cookie Daten mehr versendet werden und somit funktioniert auch session_start() nicht mehr (jedenfalls wird der Keks nicht gesetzt).

PHP-Code:
<php
echo 'lala';
session_start(); // Ausgabe vorher, kein Keks -> Warnung
?> 
PHP-Code:
<html>
<?php
session_start
(); // Text ausserhalb des php-Blocks davor -> kein Keks
?>
da reicht schon eine einzelne Leerzeile.
php sagt Dir sogar, wo diese erste Ausgabe statgefunden hat und damit weitere header wirksam unterbindet.
Zitat:
output started at /mnt/be2/04/214/00000005/htdocs/premier/index.php:13
Im Notfall kannst Du output_buffering verwenden.

siehe auch:
http://www.zend.com/zend/tut/session.php
http://php.net/ref.outcontrol
http://php.net/ob_start
 
Alt 17.09.2004, 08:13  
Benutzer
 
Registriert seit: 02.04.2008
Beiträge: 41
d-81 befindet sich auf einem aufstrebenden Ast
Standard

Hallo VolkerK,

riesen Dank an dich! Das war echt eine super Erklärung, ich habe mir noch nie etwas durchgelesen und war mir danach so sicher, dass ich alles zu 100% verstanden habe. Flas du jemals ein Buch schreiben solltest, dann lass es mich bitte wissen! ;-)
d-81 ist offline  
Alt 17.09.2004, 11:00  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

vielleicht hast du auch einfach noch nicht so viel gelesen ...
sorry
imported_Ben ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:57 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.