2016-03-19 3 views
3

Мой скрипт PHP для отмены сеансовой переменной не работает.PHP unset session не работает

Мне нужно вызвать PHP-файл destroy.php, который содержит код для отмены переменной сеанса из ajax, все работает отлично, за исключением сеанса clear.

Я отправляю свой код для очистки переменной сеанса, пожалуйста, укажите мою ошибку.

JQuery Код:

$.ajax 
        ({ 
         type: "POST", 
         url: "SubmitReview.php", 
         data: dataString, 
         cache: false, 

         success: function(response) 
         { 
          $.fn.destroySession(); 
          $('body').animate({scrollTop:0}, 500); 
          $('body').children(':not(div.ErrorMessageContainer)').fadeTo(500, 0.1); 
          $('div.ErrorMessageContainer').html(response).fadeIn(500).delay(5000).fadeOut(500); 
          setTimeout(function() 
          { 
           $('body').children(':not(div.ErrorMessageContainer)').fadeTo(500, 1); 
          }, 5400); 
          setTimeout(function() 
          { 
           window.location.href = "Thanks.php"; 
          }, 5600); 
         } 
        }); 

$.fn.destroySession = function() 
      { 
       $.post("Destroy.php"); 
      } 

destroy.php:

<?php 

if(isset($_SESSION['MN'])) 
{ 
    $_SESSION['MN'] = array(); 
    unset($_SESSION['MN']); 
} 

?> 
+0

Объединение сессий и Ajax иногда делает это так, что сессия не работает. Если вы собираетесь использовать ajax, пройдите через параметр вместо использования сеанса. – frosty

+3

сеанс начался? плюс '$ .post (" Destroy.php ");' и 'destroy.php' - два разных животных в системе NIX. –

+0

@ Fred-ii- Работал, как шарм, сэр .... Большое вам спасибо .... Я думал, что когда я очищаю сессию, то зачем снова начинать сеанс .... но ваше решение помогло мне. .... Спасибо тонны .... –

ответ

1

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

Поэтому добавьте session_start(); наверху и под вашим PHP-тегом.

Ссылка:

Добавить error reporting в верхней части файла (ов), который поможет найти ошибки.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

Sidenote: Отображение ошибок не должно быть сделано только в постановке, и никогда производства.


«почему снова начать сеанс» - Потому что, session_start(); необходимо находиться в файле, даже если вы хотите, чтобы сбросить его (это только, как они построили его на PHP.net).

<?php 
session_start(); 

if(isset($_SESSION['MN'])) 
{ 
    $_SESSION['MN'] = array(); 
    unset($_SESSION['MN']); 
} 
+0

@luweiqi hehe спасибо за исправление опечатки. Я время от времени набираю слишком быстро. Мои пальцы получают все * lkasdfkfdakdsdfjajsd * lol. –

+0

Добро пожаловать;) – Panda

+0

@ Fred-ii- Ты потрясающий сэр ... очистил мои сомнения ... снова ** тонны благодарности ** ...... –

0

Put session_start() на первой линии.

<?php 
session_start(); 

if(isset($_SESSION['MN'])) 
{ 
    $_SESSION['MN'] = array(); 
    unset($_SESSION['MN']); 
} 
+0

..... Спасибо, сэр .... Я буду помнить об этом. –