2015-10-05 2 views
1

У меня возникла очень странная проблема SESSION, я долгое время работаю с сессиями на своем сервере, и все работает нормально. Я искал & пробовал много изменений за 5 часов до публикации этого вопроса.Странная проблема SESSION на PHP

В любом случае, кажется, что $ _SESSION не обновляется правильно. У меня есть форма, использующая POST, которая переходит на ту же страницу, и когда пользователь отправляет информацию, сохраненную в $ _SESSION, а затем я делаю некоторые вещи и обновляю переменную сеанса. Все выглядит хорошо в причине страницы, когда я закончил. Я сохраняю сеанс с новыми переменными, а затем делаю var_dump ($ _ SESSION ["whatever"]); и он показывает обновленные данные. Но когда я снова отправлю форму с новыми настройками и покажу данные $ _SESSION на перезагруженной странице, это все еще старые данные.

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

session_start(); 
var_dump($_SESSION["whatever"]); 

if(isset($_POST["whatever"])){ 


$_SESSION["whatever"]=$_POST["whatever"]; 

} else { 

$_SESSION["whatever"] = FALSE; 
} 

var_dump($_SESSION["whatever"]; 

Итак, ниже var_dump действительно показывает новое значение, введенное в форма, это должно означать, что она была сохранена правильно, но нет! Потому что, когда я снова вхожу в форму, первый дамп var, который должен иметь то же значение, что и последний var_dump на предыдущей странице, по-прежнему показывает исходное значение (FALSE).

Любые идеи?

UPDATE: Даже если я иду на новую страницу и просто сделать это:

session_start(); 
var_dump($_SESSION["whatever"]); 

Это показывает старые данные, а не обновленный один.

PS: Кстати, у меня есть много других переменных, которые не входят в этот оператор if/else, который корректно сохраняет, а сеанс обновляется со значений на другой предыдущей странице.

NEW UPDATE: Я использую jQuery для отображения формы со слайдерами и ручками, если я удалю jQuery, все работает хорошо! Это очень странно! Я не видел ничего подобного в Интернете, никаких идей?

+0

Я уже отключил кэширование: S –

+0

Вы случайно не экспериментировал с именованными сессий и забытого либо обновить все страницы, либо вернуть все изменения? – JoSSte

+1

Вы проверили дисковое пространство на сервере? Я наблюдал подобную проблему, когда диск был заполнен. –

ответ

0
session_start(); 
var_dump($_SESSION["whatever"]); 
if(isset($_POST["whatever"])){ 
    $_SESSION["whatever"]=$_POST["whatever"]; 
} else { 
    // Check if there is a session variable set 
    if (!isset($_SESSION['whatever'])) { 
     // If the session variable isn't set, initialize it to false 
     $_SESSION["whatever"] = FALSE; 
    } else { 
     // Set the $whatever variable to be the value of the session variable 
     $whatever = $_SESSION['whatever']; 
    } 
} 
var_dump($_SESSION["whatever"]; 


<!-- In the HTML --> 
<input name="whatever" value="<?php echo $whatever ?>" type="text"> 
+0

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

Смежные вопросы