Fehler beim arbeiten mit Session

schebi

Mitglied
Ich habe vor eine WebGallery zu programmieren und bin jetzt bei der Useranmeldung und -abmeldung. Möchte das mit Sessions und später auch mit Cockies machen. Die Anmeldung funktioniert bei mir lokal auf der Testumgebung einmannfrei ! Nur als ich die Module hochgeschoben habe und sie auf dem Server, also online, testen wollte kamen folgende Fehler :
Warning: Cannot send session cookie - headers already sent by (output started at /usr/local/httpd/htdocs/kunden/web113/html/login.php:12) in /usr/local/httpd/htdocs/kunden/web113/html/login.php on line 21
Woran kann das liegen ? Ein Freund meinte es kann daran liegen das ich online ein FrameSet nutze ( Null-Frame-Set), damit in der Adressleiste nicht die Parameterübergaben zu sehen sind. Ist das vielleicht der Fehler oder was könnte es noch sein.
Danke für eure Hilfe !
Der Code :
PHP:
<?
include("./templatefkt.php");
include ("./dbconnect.php");
$hpwd = md5($User);
$query = "SELECT * FROM user WHERE UserNick = \"".$User."\";" ;
$erg = mysql_query($query, $dbh); 
$l = mysql_fetch_assoc($erg);
IF ($User == $l["UserNick"] and  $hpwd == $l["Passwort"])
{
session_start();
session_register("User");
echo "<center>Login erfolgreich !</center>";
}
ELSE
{
echo "User oder passwort stimmt nicht !";
}

eval ("dooutput(\"".gettemplate("./login")."\");");

mysql_free_result($erg);
?>

$User und $passwort kommen von der Vorseite aus einem INPUT-Feld
 
Wird im Include-File

PHP:
include("./templatefkt.php");

etwas ausgegeben?

Wenn ja, liegt es daran... Sessions können nur gestartet werden, bevor irgend eine Ausgabe an den Browser erfolgt...

Gruss,
poolpage
 
Die Template.php sieht so aus
PHP:
<?php
function gettemplate($template,$endung="html")
{
return str_replace("\"","\\\"",implode("",file($template.".".$endung)));
}

function dooutput($template) {
echo $template;
}
?>

Ich glaube aber wirklich es könnt an diesem Frameset liegen !
Muss heute abend mal testen !
 
hmm,

schreib den Befehl session_start(); einfach in die allererste Zeile und dein Problem hat sich gelöst.
 
oder du schreibst ob_start(); in die allererste zeile (direkt nach dem <?php =) ) und ob_end_flush(); in die letzte zeile (direkt vor dem ?> :-) )
 
Zurück