Защо ми се получава тази грешка в сесиите ?

lfc321

Registered
Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\xxx\hhh.html on line 2

Тази грешка ми излиза, когато използвам "session_start();" във инклудед файл и така не ми позволява да използвам сесии в други файлове.

Използвах сесии за логин система.
Някой ако може да ми каже как да го оправя?
 
Направи елементарна проверка и може би ще разбереш нещата:

Код:
file.php
<?php
echo $_SESSION['a'];//това само по себе си няма да работи.
?>
Код:
index.php
<?php
session_start();//това стартира сесия. Тя важи за целия файл
$_SESSION['a'] = 'Сесията работи.';

include "file.php";
//това ще изкара 'Сесията работи', защото сесията вече е стартирана. Тя ще важи за всички файлове, които са вмъкнати след session_start();
?>

Сега ако напишеш в url site.com/file.php , ще получиш грешка, защото нямаш стартирана сесия.
А от друга страна, ако стартираш сесия в file.php, ще получиш грешка в index.php.
Значи трябва да стартираш сесия само ако не е стартирана (говорим за file.php, защото index.php няма да бъде инклуднат никъде).
Ето и решението:

Код:
if(!session_id())
   session_start();

Повече за session_id() в php.net

И за да не каже някой заядливко, че това не са грешки, а notice, моля четете навсякъде грешка като notice
 
Стартирай така сесисията:

Работи с версия на PHP >=5.4.0

PHP:
if (session_status() != PHP_SESSION_ACTIVE) {
             session_start();
        }
 

Back
Горе