Сессия PHP уже началась - PullRequest
       5

Сессия PHP уже началась

0 голосов
/ 26 апреля 2019

У меня есть страница на моем сайте, которая вызывает php-файл, используя ajax.Я требую, чтобы пользователь вошел в систему для доступа к любой странице и использовал session_start() на странице, которая вызывает php-файл (скажем, main.php вызывает bg.php).Я также включаю session_start() в bg.php, потому что мне нужно получить доступ к переменным сеанса.Тем не менее, я спам с php-уведомлениями, которые говорят

A session had already been started - ignoring session_start()

Итак, я попытался использовать

if (!isset($_SESSION)) session_start();

Однако я продолжал получать ошибку, поэтому я попыталсяполностью удалив его, потому что он сказал, что его все равно игнорируют.Однако затем bg.php прекратил распознавать переменные сеанса.Как я могу прекратить получать уведомления?

Ответы [ 3 ]

1 голос
/ 26 апреля 2019

Вы должны проверить состояние сеанса с помощью функции session_status(), чтобы избежать повторного запуска сеанса.Например:

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
0 голосов
/ 26 апреля 2019

Мне нравится обращаться к управлению сессиями php следующим образом: после проверки пользователя я установлю переменную сеанса.например:

   $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';

   $_SESSION['loggedIn']=generate_string($permitted_chars, 20);

, затем в верхней части каждой страницы я хочу, чтобы мой контроль сеанса был:

        <?php
        session_start();
         if (empty($_SESSION['loggedIn'])){
          header("Location: login.php");
          exit();
         }   

edit: Кроме того, если вы загружаете внешние страницы, например, dbconnect.php-страницу, вы бы поместили только:

        <?php
        if (empty($_SESSION['loggedIn'])){
         header("Location: login.php");
        exit();
       } 

вверху в этих файлах ....

, если я действительно стану надежным, то я сохраню сгенерированный код "вошел в систему"в таблице базы данных при входе в систему загрузите пару идентификаторов (например, имя пользователя и пароль) в переменные сеанса. Затем после первоначальной проверки я проверю, является ли сеанс действительным, например

     " select count users from user_tbl where `name`=`".$_SESSION['name']."` and `pass`=`".$_SESSION['pass']."` and `key`=`".$_SESSION['loggedIn']."`"

затем

       if ($count=="0"){
        header("Location: login.php");
      exit(); 
       }
0 голосов
/ 26 апреля 2019

Рекомендую написать библиотечный файл, который стоит на первом месте во всех .php файлах.Он содержит функции и код запуска, который добавляется всеми / многими другими страницами.Это помогает создавать четкие структуры и избегать копирования и вставки общих частей кода.

*. Php

<?PHP
require_once("lib-standard.php");
# .... more code

lib-standard.php

<?PHP
session_start();
# more startup code (locale, timezone, login, check users, check rights, ...)
# common functions
# common classes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...