Sessionkezelés nem indul el a PHP oldalon - UTF8 kódolásnál

Default book

Probléma: Gyakori probléma az, hogy a sessionkezelés nem indul el egy UTF-8 kódolású lapon.

A nagykönyv azt mondja, hogy minden HTTP headernek még azelőtt kell kimennie a szerverről, hogy más HTML tartalmat kiíratunk.
HTTP headert írnak PHP esetén az alábbi függvények:

setcookie()
header()
session_start()

A használatuk - tetszőleges sorrendben tehát így néz ki:

<?php
   session_start();
   header("......'');
   ........ többi kód ........
?>


HTML oldal kódja
Ha include, require, include_once vagy require_once függvényeket használunk a session nyitása előtt, akkor vigyázni kell, hogy ezek egyike sem gyártson kimenetet.

Megoldás:
Ha a fentiek ellenére mégsem menne a sessionkezelés akkor az alábbiakat kell megnézni:

  • Meg kell győződni, hogy minden korábban include-olt oldal nyitó tagje <?php előtt nincsen még véletlenül sem egy soremelés vagy egy space, és a záró ?> tag után sincsen semmi féle karakter.
  • Egyik oldalon sincsen noitce vagy warning hibaüzenet
  • UTF8 esetén pedig vigyázni kell arra, hogy egyes editorok Windowson az UTF8 kódolású fájlok elejére tesznek egy 1 byte hosszú header-t, amit nem mutatnak az editoron belül!

Ha ezeket megnéztük, akkor biztosak lehetünk abban, hogy a sessionkezelés menni  fog.