@vladimir328

Нужно ли два раза прописывать session_start()?

Если прописать session_start только в одном файле, то данные из сессии не доходят до второго файла. Но если прописать session_start в двух файлах, вылезает ошибка, но все работает корректно.
Ошибка: Warning: session_start(): Cannot send session cache limiter - headers already sent
<?php
    $arr = ["testuser" => "testpassword"];
    setcookie('authorization', false, time()+3600);
    if (isset($_REQUEST['login']) and isset($_REQUEST['password'])){
        foreach($arr as $key => $value){
            if($_REQUEST['login'] == $key and $_REQUEST['password']==$value){
                setcookie('authorization', true, time()+3600);
                session_start();
                $_SESSION['name'] = $_REQUEST['login'];
                echo 'Вы успешно авторизированы,'. $_SESSION['name'] . ' <a href="test.php">Продолжить</a>';
            }
            else{
                echo 'Вы не авторизированы';
            }
        }
    }
?>
<form action="" method="GET">
    <input type="text" name="login">
    <input type="text" name="password">
    <input type="submit">
</form>


<?php
echo 'Страница личного кабинета' . '<br>';

if($_COOKIE['authorization']== true){
    session_start();
    echo 'Здравсвуйте ' . $_SESSION['name']. '<br>';
    echo 'Вы авторизированы';
}
else if($_COOKIE['authorization']==false){
    echo 'ВЫ не авторизированы';
}
?>
  • Вопрос задан
  • 66 просмотров
Решения вопроса 1
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Не "два", а в каждом скрипте, который использует сессии.
поэтому обычно её просто кладут в общий файл, который инклюдится во все скрипты

Ошибка headers already sent к количеству вызовов отношения не имеет, это стандартная ошибка при кривой структуре кода и лечится элементарно. В интернете примерно миллион рекомендаций по её решению.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы