Fehler bei session_start()
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfrage
ausgabe
buchen
code
erfolg
ergebnis
funktionieren
header
login
mitte
nachname
output
session
start
stehen
text
url
vorname
zeichen
zeile
-
Hallo,
ich taste mich gerade zum ersten Mal an Sessions heran. Doch beim Start der Session wird mir folgendes ausgespuckt, womit ich absolut nichts anfangen kann :( :
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/webpages/lima-city/vrw/html/logincheck.php:1)
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/webpages/lima-city/vrw/html/logincheck.php:1) in /home/webpages/lima-city/vrw/html/logincheck.php on line 26
Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/vrw/html/logincheck.php:1) in /home/webpages/lima-city/vrw/html/logincheck.php on line 35
Was will mir das sagen? (Hab den Code für die Sessions aus einem schlauen Buch) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hm, wenn das so ist, dann ist ja bereits der Code im Buch fehlerhaft ... weil da wird das erst etwa in der Mitte des ganzen gestartet. Aber zur besseren Anschauung hier mal den kompletten Code:
<?php if(isset($_REQUEST['vorname'])) { $vorname = $_REQUEST['vorname']; } if(isset($_REQUEST['nachname'])) { $nachname = $_REQUEST['nachname']; } if(isset($_REQUEST['pw'])) { $pw = $_REQUEST['pw']; } if (!empty($vorname) || !empty($nachname) || !empty($pw)) { $db=mysql_connect("mysql.lima-city.de","USER***","passwort") or die("Kein Connect zum Datenbankserver"); mysql_select_db("db****") or die("Datenbank konnte nicht angesprochen werden."); $anfrage="SELECT id_registered FROM user WHERE vorname='".$vorname."' AND nachname='".$nachname."' AND pw='".$pw."'"; $ergebnis=mysql_query($anfrage); $anz=mysql_num_rows($ergebnis); if ($anz==1) { session_start(); $session_id=session_id(); $zeile=mysql_fetch_row($ergebnis); $anfrage="INSERT INTO sessions VALUES('".$session_id."','".$zeile[0]."',now())"; $ergebnis=mysql_query($anfrage); $text=$vorname." ".$nachname." wacht auf"; $anfrage="INSERT INTO chat VALUES(0, '".$text."',now())"; $ergebnis=mysql_query($anfrage); header("Location: frame.php?id=".$session_id); } else { echo "Bewohnername und/oder Passwort nicht korrekt!<br />"; echo "Bitte erneut einloggen:<br />"; echo "<a href='login.php'>Login</a>"; } mysql_close($db); } else { echo "Du hast keine Angaben getätigt.<br />"; echo "Bitte erneut einloggen:<br />"; echo "<a href='login.php'>Login</a>"; } ?>
-
und trotzdem funktioniert dann dieses "if", wo das session_start() drin ist, ja? oO(sorry, wenn die Frage blöd klingt, aber ist wie gesagt mein erster Versuch damit)
-
Es müsste klappen. Aber eben nur wenn du session_start() nach oben stellst.
-
Alles klar, dann probier ich das einfach mal ... wenn nicht, editier ich diesen jetzigen Eintrag noch mal :D
EDIT: Nein, die Meldung bleibt auch dann die gleiche :(
Beitrag zuletzt geändert: 26.5.2009 17:35:10 von vrw -
Du darfst natürlich dann session_start(); unten nicht nochmal aufführen.
Einziger Unterschied ist, dass die Session nun auf jeden Fall gestartet wird, egal ob eine Bedinung zutrifft oder nicht. -
Ja, das war mir klar, dass es dann nicht doppelt sein soll ;)
-
Ich glaube irgendwie gar nicht mal, dass es an dieser einen funktion liegt, sondern an irgendetwas anderes im Script ... aber da ich mich damit überhaupt nicht auskenne, hab ich keine Ahnung, was ... vielleicht wieder nur ein Zeichen vergessen, was ich auch nach mehrmaligem Überprüfen nicht finde oder so ...
-
Immer den Quellcode posten
Vielleicht mal den, der ganzen Seite. Inklusive HTML.
EDIT:
Ich hab mal den Code von oben ganz alleine bei mir auf dem Webspace geladen. Geht ohne Fehlermeldung. Um das PHP-Skript muss also noch irgendwas herum sein. Und wenn es ein Leerzeichen ist.
http://karpfen.lima-city.de/session.php
Beitrag zuletzt geändert: 26.5.2009 18:32:17 von karpfen -
öhm, eigentlich nicht ... ich hab die komplette seite kopiert und hier eingefügt o.O
-
Stell sicher dass <?php session_start();
ganz oben steht und keine irgendwelche Zeichen vor dem <? stehen... zb Leerzeichen oder so...
ansonsten dürfte es mit session_start kein problem geben
sollte es immer noch nicht funktionieren kannst du es ja mit Cookie machen... Cookie finde ich sogar viel besser als Session... Aber deine Entscheidung ^^ -
Ahhh, da hatte sich tatsächlich ein leerzeichen eingeschlichen, ok, jetzt geht es.
Aber was mich wundert ist jetzt nur noch, warum mein schlaues buch dieses start-zeug in die mitte des scripts gepostet hat anstatt ganz oben, sprich nur wenn das if zutrifft, soll diese gestartet werden. -
Naja - die Abfragen über dem session_start() dienen ja anscheinend dazu, rauszufinden, ob der Benutzer existiert. Wenn man nur für existierende Benutzer eine Session erzeugen will, steht der Befehl genau an der richtigen Stelle.
Kam vielleicht bisher nicht ganz richtig rüber: Vor dem session_start() darf nur keine Ausgabe an den Browser erfolgen - PHP-Code darf davor stehen, soviel will ;) -
Da hat tavern völlig recht, ich hab das auch noch mal mit dem ursprünglichen Code ausprobiert. Hat auch funktioniert. Kannst das also auch so verwenden, wie in deinem Buch.
-
Das liegt daran, dass es dann immernoch funktionieren würde. Wenn ich den Code richtig überfllogen habe, wird von dem session_start nichts ausgegeben. Und das ist das einzige was zählt. Das session_start kann auch in der 10.000 Codezeile stehen, wenn vorher keine Ausgabe geschah. Deswegen gibt man im Code normalerweise auch nie etwas aus, sondern hängt es an eine Variable (Bsp: $out .= "Test") um es später auszugeben.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage