2016-05-23 7 views
0

Я печатаю сессию с print_r ($ _ SESSION) на странице индекса, на которой показан следующий массив.Переменная сеанса недоступна

Array 
(
    [name] => hhh 
) 

index.php 

    <?php 
    session_start(); 
    $_SESSION['name']='hhh'; 

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

<?php 

    session_start(); 
    echo "before destroying the session"; 
    print_r($_SESSION); 
    unset($_SESSION['name']);//remove the name session variable which is available in my index page. 
    session_destroy(); //destroy the session 
    echo "after destroying the session"; 
    print_r($_SESSION); 

Но всякий раз, когда я запускаю приведенный выше код печатает следующее:

before destroying the sessionArray () after destroying the sessionArray () 

Почему моя сессия, которая доступна в индексе страница недоступна на странице выше сценария ?.

Заранее спасибо

+0

вы пишете его в session_start(). Его работа прекрасна для меня. – RJParikh

+0

Да, это в первой строке. – scriptkiddie

+0

не нужно снова использовать session_start(), если вы включаете индексную страницу на другой странице, а ваша индексная страница содержит начало сеанса. – RJParikh

ответ

0

Я не уверен, что ваша цель состоит в том, что это то, что делает ваш код:

# You start your session 
session_start(); 

# Echo a string 
echo "before destroying the session"; 

# Print the $_SESSION array, comes out empty because you havn't put anything in the session 
print_r($_SESSION); 

# You unset the 'name' key in the $_SESSION array, which wasn't even there in the first place 
unset($_SESSION['name']); 

# You get rid of the session 
session_destroy(); 

# Echo a string 
echo "after destroying the session"; 

# You print $_SESSION variable again, which is going to be empty, because you just destroyed the session. 
print_r($_SESSION); 

Моя точка объясняя ваш код, что вы на самом деле хотите сделать?

Если вы хотите использовать $ _SESSION на нескольких страницах, просто не используйте session_destroy() между страницами, просто уничтожьте его, как ваш пользователь «выйдет из системы», так сказать, и session_start() на всех ваших страницах.

0

Вам необходимо запустить сеанс session_start() в вашем индексном файле.

index.php

session_start(); 
$_SESSION['name'] = "test"; 

test.php

include 'index.php'; 

    echo "before destroying the session"; 
    print_r($_SESSION); 
    unset($_SESSION['name']);//remove the name session variable which is available in my index page. 
    session_destroy(); //destroy the session 
    echo "after destroying the session"; 
    print_r($_SESSION); 

Выход

before destroying the sessionArray ([name] => test) after destroying the sessionArray () 
+0

попробуйте код выше для достижения желаемого результата. @scriptkiddie – RJParikh

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