значение переменной сеанса php уничтожено после загрузки страницы в WordPress

#php #wordpress #session

#php #wordpress #сеанс

Вопрос:

У меня проблема с сеансами в WordPress. Сначала я активировал использование сеансов в моем functions.php и нет, я получаю правильную переменную, но только после перезагрузки моего целевого сайта после установки переменной. Когда я сначала загружаю другую страницу, а затем мою целевую страницу, моя переменная имеет неправильное значение без какого-либо контекста для моего первого значения. Когда у меня есть правильное значение на моем целевом сайте, и я перезагружаю этот сайт, значение также неверно. Это мой код:

 //Activate sessions() in functions.php
add_action('init', function(){
      if(!session_id())
      {
          session_start();
      }
}, 1);

//Calculate the variable
$gesamtumsatz_kcal = round (($value1   $value2   $value3), 0); 

//Then set the session variable
$_SESSION['gesamtumsatz_kcal'] = $gesamtumsatz_kcal;

//Get my session variable on another page somewhere on my site
if(isset($_SESSION['gesamtumsatz_kcal'])) {
	$gesamtumsatz_kcal = $_SESSION['gesamtumsatz_kcal'];
} else {
	$gesamtumsatz_kcal = '';
}

//Echo my variable
echo $gesamtumsatz_kcal;  

У вас есть какие-либо идеи, что не так? Я абсолютно доволен этим….

Большое спасибо!

                • Я должен добавить это

Когда я определяю постоянную переменную без вычисления чего-то подобного:

 //Define the variable
$_SESSION['test'] = 1056;

//Get the variable
$test = $_SESSION['test'];
    
//Echo the variable
echo $test;  

Я всегда получаю правильное значение: 1056 обратно… Что это? Не могу понять

Комментарии:

1. Ни у кого нет ответа? Это так плохо …. снова

2. У меня была эта проблема раньше, и она была вызвана плагином безопасности (я считаю, что это безопасность), который удалил файл cookie сеанса

3. @NicolasGaller о, это звучит безумно: o Я использую все в одном WP Security, каково было решение?

4. Я не нашел прямого решения, но признаю, что не очень долго исследовал, потому что не хотел изменять настройки безопасности сайта (я не был основным администратором для этого).). В моем случае я разрабатывал интерфейсное веб-приложение для сайта, и поэтому я смог обойти это, сохранив настройки, которые я хотел сохранить в javascript, но это не вариант во всех случаях… если у вас та же проблема, что и у меня, вы сможете определить, просмотрев ответ, отправленный сайтом в Chrome dev tools, и убедившись, что файл cookie сеанса (PHPSESSID) не отправлен.

Ответ №1:

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

if(!session_id()) session_start();

в начале wp-config.php или лучше в init вашем коде / плагине