Подтвердить что ты не робот

PHP $_SESSION для нескольких пользователей одновременно

Мне интересно, как работает массив $_SESSION. Если у меня много пользователей, использующих мой сайт, мне нужно установить подмашину для каждого пользователя? Например, прямо сейчас у меня есть

$_SESSION['userid'] = $userid;
$_SESSION['sessionid'] = $sessionid;
$_SESSION['ipaddress'] = $ipaddress;

но для того, чтобы справиться с большим количеством пользователей, мне нужно создать многомерный массив?

$_SESSION[$userid]['sessionid'] = $sessionid;
$_SESSION[$userid]['ipaddress'] = $ipaddress;

Используется ли глобальная система $_SESSION для каждого клиента или просто общая? Будет ли установлено $_SESSION ['userid'] при входе в систему с помощью предыдущего пользователя и будет установлен последний зарегистрированный пользователь?

4b9b3361

Ответ 1

Нет. Для каждого пользователя создается отдельный $_SESSION. Все это делается сервером, вам не о чем беспокоиться. При написании кода обработайте $_SESSION, как если бы на сайте был только один пользователь.

Изменить: Собственно, подумав об этом, это очень хороший вопрос. Хорошо спросить такие вопросы, это означает, что вы серьезно думаете о том, как ваш код действительно работает. Продолжайте просить об этом и продолжайте тестирование. У меня такое чувство, что в один прекрасный день вы напишете удивительный код.

Итак, на этой заметке, вот некоторая информация с сайта apache:

Что такое сеанс?

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

Сохранение сеансов на сервере

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

Если сконфигурировано, сеансы отслеживаются с использованием идентификатора сеанса, который хранится внутри файла cookie, или извлекаются из параметров, встроенных в строку запроса URL-адреса, как показано в типичном запросе GET.

И из документации по PHP в сеансах:

Поддержка сеанса в PHP состоит в том, чтобы сохранить определенные данные для последующих обращений. Это позволяет создавать более настраиваемые приложения и повышать привлекательность вашего веб-сайта.

Посетителю, обращающемуся к вашему веб-сайту, присваивается уникальный идентификатор, так называемый идентификатор сеанса. Это либо сохраняется в файле cookie на стороне пользователя, либо распространяется в URL-адресе.

Поддержка сеанса позволяет хранить данные между запросами в суперглобальном массиве $_SESSION. Когда посетитель обращается к вашему сайту, PHP будет проверять автоматически (если для параметра session.auto_start установлено значение 1) или вашего запроса (явно через session_start() или неявно через session_register()), был ли отправлен конкретный идентификатор сеанса с запросом. Если это так, предыдущая сохраненная среда воссоздается.

Ответ 2

После долгих поисков и работы над сессией я нашел свой путь. Я надеюсь, что это отлично работает для всех здесь

это запрос на страницу входа для моих пользователей: здесь я храню электронную почту как сеанс из поля ввода после сопоставления данных из MySQL

<?php
include_once("dbcon.php");
$que=mysqli_query($con,"select * from agents where companyemail='$email' AND 
pass='$password' AND post != 'Owner'"); 
$record = mysqli_fetch_assoc($que);
$_SESSION[$email]=$email;
header("Location:/dashboard/woresk/Dashboard_For_Agents/light/index.php? 
&loginid=$agentid");
?>

а затем на панели инструментов для пользователей есть опция выхода из системы, где я использовал этот метод

<?php
session_start();
include_once("dbcon.php");
$sid=$_GET['loginid'];
$que=mysqli_query($con,"select * from agents where id='$sid'"); 
$recorde = mysqli_fetch_assoc($que);
$email=$recorde['companyemail'];
unset($_SESSION[$email]); 
header('location:/dashboard/woresk/index.php');
?>

и чтобы пользователи не заходили в панель мониторинга, если они не авторизованы или их сеанс не установлен, следующий код отлично работает для меня

<?php
session_start();
include_once("dbcon.php");
$sid=$_GET['loginid'];
$que=mysqli_query($con,"select * from agents where id='$sid'"); 
$recorde = mysqli_fetch_assoc($que);
$email=$recorde['companyemail'];
if(isset($_SESSION[$email]) && isset($_SESSION['alllogout'])){

 }
 else if(!isset($_SESSION[$email])){
    echo 
    "<script>
      window.location.href='/dashboard/woresk/index.php'
    </script>";
  }
  else if (!isset($_SESSION['alllogout'])){
    echo 
    "<script>
      window.location.href='/dashboard/woresk/index.php'
    </script>";
  }
  ?>

Я надеюсь, что это работает и для других. если любой вопрос, пожалуйста, дайте мне знать