Problem mit session_start()
Pierre
- php
Hallo liebe PHP'ler
kann mir jemand sagen, woher die folgenden PHP-Error herführen? Bin ziemlicher Newbie und weiss nicht, was hier nicht stimmt.
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) in /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/adm_gallery.php on line 8
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) in /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/adm_gallery.php on line 8
Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) in /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/adm_gallery.php on line 10
Die Zeile 1-12 in "adm_gallery.php sehen wie folgt aus:
<?
// *** LOADING CONFIG FILE
include "var.inc.php";
// *** LOGIN FIRST
session_start();
if (empty($login)){
header("Location:login.php");
exit;
}
Hab das Script bei "hotscripts.com" gefunden, den Entwickler erreich ich aber nicht. Die E-Mails kommen alle wieder zurück. Nun hoffe ich, dass mir hier jemand weiterhelfen kann.
Besten Dank
Pierre
Moin Pierre,
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/httpd/vhosts/little-thomas.com/httpdocs/gallery/var.inc.php:105) »»
Die Zeile 1-12 in "adm_gallery.php sehen wie folgt aus:
<?// *** LOADING CONFIG FILE
include "var.inc.php";// *** LOGIN FIRST
session_start();
if (empty($login)){
header("Location:login.php");
exit;
}
eigentlich sagt es ja bereits die Fehlermeldung. session_start muß als aller Erstes kommen.
Alos so:
<?
session_start();
include "var.inc.php";
......
regds
Mike©
eigentlich sagt es ja bereits die Fehlermeldung. session_start muß als aller Erstes kommen.
schmarn, es darf vorher bloss nichts an den browser gesendet wordet sein..
kein leerzeichen etc..
s.h:
http://de3.php.net/manual/de/function.session-start.php
gruss asd
Moin asd,
schmarn, es darf vorher bloss nichts an den browser gesendet wordet sein..
kein leerzeichen etc..
s.h:
http://de3.php.net/manual/de/function.session-start.php
schlecht gelaunt, oder warum gleich so ruppig?
Die betreffende Passge lautet:
"Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird."
Ist dann hiermit präzisiert.
regds
Mike©
moin *g*
sorry, so war das nicht gemeint.. ;)
schlecht gelaunt, oder warum gleich so ruppig?
Die betreffende Passge lautet:
"Anmerkung: Bei Verwendung Cookie-basierter Sessions müssen Sie session_start() aufrufen, bevor irgend etwas an den Browser geschickt wird."
was hier doch genau der fall sein wird oder nicht..
was ich ja auch sagte.
das hat nix mit dem include zu tun, wenn man nach den namen gehen sollte, falls da wirklich nur variabeln geladen werden sollten.
und keine ausgabe an den browser geschieht
natürlich kann ich mich irren.. *g*
Moin asd,
sorry, so war das nicht gemeint.. ;)
dto.
was hier doch genau der fall sein wird oder nicht..
lass und darauf einigen; session_start() als erster Command, dann ist man auf der sicheren Seite .-)
regds
Mike©
lass und darauf einigen; session_start() als erster Command, dann ist man auf der sicheren Seite .-)
jap ok *g* :)
hupps, war mal schnell in der Küche und hier läuft gleich alles über.
Danke, danke, danke.
Klick mich mal durch den Code und versuche eurer schnellen Hilfe zu folgen.
Pierre
hi,
hupps, war mal schnell in der Küche und hier läuft gleich alles über.
na besser als genau anders herum ;-)
gruß,
wahsaga
Juhee! Habs hingekriegt.
Mein Post um halb neun hat wohl niemand mehr gesehen. Eurer Input war sehr hilfreich. Das Problem war, dass in der include-Datei nach dem schliessenden ?> noch ein Leerschlag oder ne Zeilenschaltung war und das wohl an den Server geschickt wurde, die Position der include-Datei spielt somit keine Rolle, da hier ja wirklich nur Variablen gesetzt werden.
Vielleicht hat das ganze mal wieder mit dem Mac zu tun, dass hier beim Öffnen oder Überspielen der Datei irgendwelche Zeichen nicht sauber konvertiert werden und dadurch dann plötzlich am Ende ein Leerzeichen steht, oder was auch immer...
Pierre
Moin Pierre,
»» Juhee! Habs hingekriegt.
Eurer Input war sehr hilfreich.
das macht Mut ;-)
regds
Mike©
Hello,
schmarn, es darf vorher bloss nichts an den browser gesendet wordet sein..
kein leerzeichen etc..
Jau.
Und um das schmuddlig großtechnisch zu verhindern, setzt Du gleich am Anfang Deines Scriptes
ob_start();
http://de3.php.net/manual/en/function.ob-start.php
Und wenn Du meinst, jetzt sit die Seite fertig, dann schreibst du
ob_end_flush();
Und gut ist es.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo nochmal
Alos so:
<?
session_start();include "var.inc.php";
Also auf der ersten Seite klappts nun. Das gleiche Problem hab ich aber auf der Datei login.php und wenn ich da den "include" ans Ende zieh, läufts nimmer. Also scheint die Include-Datei gebraucht zu werden, ich seh darin aber net wirklich was, was hier an den Browser zurückgegeben wird. Oder irre ich mich da?
Das steht in der login.php
---------------------
<?
include "var.inc.php";
if ( (!empty($fuser)) and (!empty($fpswd)) and ($fuser==$adm_user) and ($fpswd==$adm_pswd) ){
$login=$adm_user."|".$adm_pswd;
session_register(login);
header("location:adm_gallery.php");
}
if ( (empty($login)) or ($login<>$adm_user."|".$adm_pswd) ){
echo "<style><!--\n";
echo "BODY {font-family:tahoma; font-size:12px}\n";
echo "TD {font-family:tahoma; font-size:12px}\n";
echo "INPUT {font-family:tahoma; font-size:12px}\n";
echo "--></style>\n";
echo "<title>r-GALLERY</title>\n";
echo "<p align=center><font style="font-size:20px">r-GALLERY ADMIN LOGIN</font></p>";
echo "<form action='$PHP_SELF' method='post'>";
echo "<p align=center>";
echo "Username:<br><input name=fuser>";
echo "<br>Password:<br><input type=password name=fpswd>";
echo "<br><input type=submit value=LOGIN>";
echo "<br>Username : $adm_user<br>Password : $adm_pswd";
echo "</p>";
echo "</form>";
}
?>
--------------------------
Und so schaut die "var.inc.php" aus:
--------------------------
<?
$fold="galimg/";
$data=$fold."data.txt"; // file data
$maxchar=750; // maximum characters for description
$allow_post="y"; // Allow posting from Gallery Page
$adm_user="demo"; // ADMIN USER
$adm_pswd="1234"; // ADMIN PASSWORD
function conv_asc2html($str,$mode){
if ($mode==1){
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace(""",'"',$str);
}
if ($mode==2){
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace('"',""",$str);
}
$str=ltrim($str);
$str=rtrim($str);
return $str;
}
function splitwordx(&$text,$w_max,$w_cut){
if (!strstr($text," ")){ $text=$text." "; }
$word = explode(" ", $text);
if (empty($w_max)){ $w_max=10; }
if (empty($w_cut)){ $w_cut=10; }
for ($w=0; $w<count($word); $w++){
$wordlen=strlen($word[$w]);
if ($wordlen>$w_max){
$wordnew="";
$wordpart="";
for ($l=0; $l<ceil($wordlen/$w_cut); $l++){
$wordpart[$l]=substr($word[$w],($l*$w_cut),$w_cut)." ";
}
$wordnew=implode(" ",$wordpart);
$word[$w]=$wordnew;
}
}
$text = implode(" ", $word);
return $text;
}
function disperr($str){
echo "<table border=1 cellspacing=0 cellpadding=10 style="border-collapse:collapse" bordercolor=#FFCCCC bgcolor=#FFEEEE><tr><td><font color=#FF0000 style="font-size:14px"><b>Page Error :<br>$str</td></tr></table>\n";
}
?>
--------------------------
Könnt ihr nochmal sagen, was ich da net checke?