Problem mit Sessions!

reptile

Registered User
Hallo,
schaut mal bitte auf die Seite:

Testseite

Dort bitte auf Gästebuch klicken, und einen Eintrag versuchen. Dann kommt eine Sessions Fehlermeldung. Ich nutzte hier folgende Session für die Captcha funktionalität:

session_start();
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);

Leider weiß ich überhaupt nicht, wie ich das sonst machen soll das die Fehlermeldung nicht kommt. Welchen Quellcode braucht ihr noch von mir, zur Lösung des Problems?

EDIT: Ich denke das das Problem ist, das ich vor SESSION_START() eine Ausgabe habe (Fehlermeldung header already sent) diese Ausgabe kommt vom include der Navigation.php also der Navigationsleiste oben. Ich weiß nur nicht wie ich die anders includen soll.
 
Last edited by a moderator:
Die genaue Fehlermeldung ist:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /www/htdocs/w0094f13/test/index.php:17) in /www/htdocs/w0094f13/test/gaestebuch_neu.php on line 52

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w0094f13/test/index.php:17) in /www/htdocs/w0094f13/test/gaestebuch_neu.php on line 64

Die 2 betreffenden Dateien hab ich mal angehängt:

Dateien
 
Ich denke das das Problem ist, das ich vor SESSION_START() eine Ausgabe habe (Fehlermeldung header already sent) diese Ausgabe kommt vom include der Navigation.php also der Navigationsleiste oben. Ich weiß nur nicht wie ich die anders includen soll.
Ist es denn sehr schlimm, wenn session_start(); ganz am Anfang der index.php steht?


Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w0094f13/test/index.php:17) in /www/htdocs/w0094f13/test/gaestebuch_neu.php on line 64
Diese Warnmeldung bekommst du dadurch aber nicht weg.

Entweder strukturierst du das anders (bevor eine Ausgabe an den Browser geschieht, muss geprueft werden) oder du musst mit ob_start() puffern und erst am Ende den Code senden.
Letzte Moeglichkeit, Warnung unterdruecken.
 
Last edited by a moderator:
Das stimmt die Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at /www/htdocs/w0094f13/test/index.php:21) in /www/htdocs/w0094f13/test/gaestebuch_neu.php on line 64

ist immer noch da. Wie kann ich denn das beschriebene von dir realisieren? (Sorry aber das mein erstes PHP Script)
 
PHP:
<?php
if(isset($_GET['section'])) {
		switch($_GET['section']) {
			case "gaestebuch_neu":
			header("Location: gaestebuch_neu.php");
			die();
		}
}
?>
Das ganz an den Anfang in der index.php (nach dem session_start() ).
Das ist zwar nun keine Komplettloesung, aber ein Ansatz fuer dich.
 
Es wird gleich auf gaestebuch_neu geleitet. Somit erfolgt zuvor keine Ausgabe. gaestebuch_neu muss dann noch ein wenig angepasst werden (Navigation usw), aber das wirst du dann schon sehen.

Andere Wege gibt es auch. Aber das ist aus meiner Sicht erst mal der simpelste (wenn auch nicht schoenste) Weg.
 
Aber ich kann doch diese switchcase Abfrage gar nicht ganz nach oben schieben, weil sonst mein ganzes Design durch die div Container nicht mehr vorhanden ist.:confused:
 
Eben deswegen musst du gaestebuch_neu anpassen.
Spricht ja nichts dagegen, die html Sachen auch dort hineinzuschreiben. Ich erwaehnte ja, dass es kein besonders schoener Weg ist, aber ein einfacher.
 
Ich hab es jetzt einfach so gemacht:

echo ("Der Eintrag wurde hingefügt!");
die

Das war das schnellste jetzt, ist ja egal die Besucher werden dann schon nochmal auf Gästebuch klicken.
 
Kann ich die Meldung der Eintrag wurde hinzugefügt noch irgendwie zentrieren?
HTML kannst du aber, oder? Gut, dann mal ran.

echo ("[HIER]Der Eintrag wurde hingefügt![und HIER]");



Das war das schnellste jetzt, ist ja egal die Besucher werden dann schon nochmal auf Gästebuch klicken.
Umleitungen kannst du ja hinzufuegen wie du magst. Wenn dir gar nichts anderes einfaellt zur Not auch ein meta refresh.
 
Dankeschön für alles. Eigentlich logisch das die HTML Sachen innerhalb der "" stehen müssen.
Ich habs jetzt einfach mit einem meta refresh gemacht, wie du schon gesagt hast.

Also jetzt so:

PHP:
echo ("<meta http-equiv='refresh' content='0; url=index.php?section=gaestebuch'>");
	    die;

Und alles funktioniert so wie es sein soll!

Also nochmals danke!
 
Back
Top