Problemer med sessions i PHP

Tags:    php

Hej alle...

sidder og bakser med en hjemmeside, som virker på min computer, men når jeg så uploader den, så virker den ikke. Jeg får denne fejlbesked:

---------------------------------------------------------------------------------------

Warning: Cannot send session cache limiter - headers already sent (output started at D:\\web\\minusme.dk_e7w6ju\\wwwroot\\new\\login\\login-ok.php:8) in D:\\web\\minusme.dk_e7w6ju\\wwwroot\\new\\login\\login-ok.php on line 13

----------------------------------------------------------------------------------------

... Jeg har en side (login.php), hvor jeg bare har 2 input felter (login og pass) som bliver postet til login-ok.php. Den tjekker i databasen om det er rigtigt kodeord til brugernavnet. På min login.php starter jeg en session, og min login-ok.php ser sådan ud:

----------------------------------------------------------------------------

<?php

include("../funktioner/tools.php");
include("../connect.php");

session_start();

function checkUser()
{
if (!isset($_SESSION["validUser"]))
{
if (isset($_POST["brugernavn"]))
$brugernavn = htmlspecialchars($_POST["brugernavn"], ENT_QUOTES);
else
$brugernavn = "";

$result = mysql_query("select * from users where brugernavn = '".$brugernavn."'") or die (mysql_error());
$row = mysql_fetch_array($result);

if (mysql_num_rows($result) && ($row["PASSWORD"] == $_POST["password"]))
{
$_SESSION["validUser"] = true;
$_SESSION["userName"] = $brugernavn;
}
else
{
print("forkert password eller brugernavn");
session_destroy();
exit;
}
}
}

checkUser();

if(session_id() && $_SESSION["validUser"])
{

// gør noget

}

------------------------------------------------------------------------------------------------------

Er der nogen der kan hjælpe mig... DEt driver mig til vanvid :-)

mvh Rune



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Hejsa Rune.

Helt hvad problemet er kan jeg ikke sige, men den fejl du får er pga du sætter session_start()
efter at noget output (html block eller echo fra php block), og det kan man ikke.
session_start sætter en cookie, og det sker med headers, og det kan man kun sende hvis php ikke har sendt noget endet (text, html) afsted allerede ... derfor får du beskeden (Cannot send session cache limiter - headers already sent).
Det med linie 8, det kan være at det er i en af de includerede filer:
include("../funktioner/tools.php");
include("../connect.php");
Selæv hvis bare en warning kommer fra en af dem så er det nok.
Check hvis du fx har opdateret tools.php eller connect.php lokal på din pc, men ikke har ftpet nyeste udgave over på serveren.
Ellers er der en setup/versions forskel som spiller ind, måske er serverens php i safemode og så er der nogle functioner der ikke fungerer og måske producerer fejl.

Helt hvad der får headers til at blive sendt i tools.php og/eller connect.php ved jeg ikke, eftersom jeg ikke har set deres indhold, men du burde nemt kunne identificere problemet selv.




Hejsa...

Tusinde milliarder gange tak...

Det virkede. Jeg overfører point..

mvh Rune



t