session fejl/header.

Tags:    php

hej,

har lige fået opgraderet mit hotel til nyeste versioner af php, mySQL mv.

og får nu et problem i index.php

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ttoepzjd/public_html/kim/index.php:1) in /home/ttoepzjd/public_html/kim/index.php on line 1

<?php session_start();

Det er min linje, og index.php er i format: Konventer til UTF-8
Sætter jeg den til (uden BOM). Så forsvinder den fejl meddelelse.

Men jeg ønsker jo det skal køre uden fejl. Så hvorfor får jeg den besked?.

php.ini er ikke lavet, og mangler nok lidt info til det.



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Du får fejlen fordi du sender body/content til browser før header.

Et response til browser skal være bygget op således at header sendes før body. Header indeholder informationer så som cookie data, session id, content-type og meget mere. Faktisk kan du selv checke det via din browsers developer tools. Denne header skal altid sendes før content, altså alt normal indhold du sender til browseren, lad det være html, text, xml eller noget fjerde.

Sessions er header baseret, i og med at header indeholder session id, gemt i en cookie. Det samme gælder alle header() baseret funktionskald.

Når du i din index.php gemmer med BOM, så gemmer du et par kryptiske tegn (BOMen) først i php filen. Dvs. før de normale "første" tegn i din PHP fil. Editorer fortolker BOMen og skjuler den for dig, derfor ser du først beviserne på at den eksistere, når du afvikler dit PHP script. Men denne BOM kan altså ses som output til din klient, og da du ikke må sende output/content/body til klienten før header, så vil PHP fejle med den nævnte besked.



1:

<?php session_start();
setcookie("mine cookies ting"];
include("config.php");
?>

2: Her kommer mit <html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>

<body>

indhold

</body>
</html>



Aner ikke hvad det betyder.


Men...


For at svare på dit spørgsmål pr. PB. Gem altid og arbejd altid i UTF-8. Det vil spare dig for mange problemer ud i fremtiden.

https://www.phpbb.com/community/viewtopic.php?f=66&t=1584655



t