переменные — PHP сессия, несколько страниц ссылаются на одну страницу

Хорошо, я только что заметил эту проблему. Должен быть способ обойти это.

Пример…
На странице A.php и на странице B.php есть ссылка на страницу ALPHABET.php. ALPHABET.php получает указанные значения переменных в зависимости от того, какая страница является реферером.

Все вовлеченные страницы имеют session_start (); в начале.

Страница A.php имеет:

           <?php
$_SESSION['name'] = "John";
?>

Страница B.php имеет:

           <?php
$_SESSION['name'] = "Jane";
?>

Страница ALPHABET.php имеет:

           <?php
$personName = $_SESSION['name'];
echo "Hello, I am ".$personName;
?>

Я решил не закрывать сеанс в ALPHABET.php, потому что я хочу, чтобы информация по-прежнему загружалась правильно, если некоторые обновят страницу. Если сессия была закрыта, то $ _SESSION [‘name’] не существовало бы или не имело значения.

Все это работало хорошо, пока я не загрузил обе страницы, A.php и B.php, одновременно (через новую вкладку). Я заметил, что когда я нажимаю ссылку на ALPHABET.php на любой из этих страниц, она не всегда получает информацию о сеансе со страницы, которая была ссылающейся. Я отметил, что в этой ситуации последняя загруженная страница будет иметь информацию, отображаемую в ALPHABET.php, а не страницу, с которой я щелкнул ссылку.

т.е. я загружаю обе страницы вверх. Сначала A.php, а затем я открываю B.php в новой вкладке. Я нажимаю на ссылку ALPHABET.php внутри A.php. ALPHABET.php загружает информацию B.php. Я предполагаю, что это потому, что B.php был последней загруженной страницей, и поэтому он переписал все данные сеанса из A.php и заменил их своими собственными.

можно ли это исправить?

0

Решение

Сеансы PHP хранятся в файлах cookie, которые используются всеми вкладками браузера. НАПРИМЕР. нет хорошего способа обойти это, просто используя ванильные сеансы.

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

Например.

A.php

$_SESSION["A_name"] = "John";
?>

<a href="Alphabet.php?ref=A">Click</a>

B.php

$_SESSION["B_name"] = "Jane";
?>

<a href="Alphabet.php?ref=B">Click</a>

Alphabet.php

if($_GET["ref"] == "A")
echo $_SESSION["A_name"];
else if($_GET["ref"] == "B")
echo $_SESSION["B_name"];
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]