2013-06-12 5 views
0

Я написал код для веб-страницы, использующей сеансы. Я использую Mac, и он работает нормально. Я попробовал свою страницу в Windows, и сеансы не работают. Оказывается, переменные сеанса, которые я объявляю, не существуют на других страницах. Я использовал session_start() в начале каждой страницы, которую у меня есть. Одним из решений, которые я прочитал об этой проблеме, было использование session_write_close(), но это не сработало. Когда я использую var_dump() на $_SESSION, я вижу только те, которые были объявлены на той же странице (это как в Mac, так и в Windows). В окнах и на Mac я использовал Chrome. И одна из причин, по которой я работала на Mac, заключалась в том, что я не получил ошибку, она просто работала, однако, в Windows я получил строку с ошибкой и сказал, что индекс сеанса, который я использую, не определен.Сессии не работают должным образом

В чем проблема в моем случае? И как я могу это решить?

EDIT:

Вот код для установки переменных в сессии, это самый первый блок страницы

<?php 

session_start(); 

session_destroy(); 

$_SESSION["contestant_name"]["topics_done"] = array(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE); // topics done 
$_SESSION["contestant_name"]["topics_score_correct"] = array(); 
$_SESSION["contestant_name"]["topics_score_wrong"] = array(); 
$_SESSION["contestant_name"]["correct"] = 0; 
$_SESSION["contestant_name"]["wrong"] = 0; 

?> 

А вот код для чтения переменных

<?php 

session_start(); 

if (isset($_POST["submit"])) 
    $name = $_POST["name"]; 

if(!isset($_SESSION["contestant_name"]["name"])) 
$_SESSION["contestant_name"]["name"] = $name; 

// if ($_SESSION["contestant_name"]["name"] == "") 
// $_SESSION["contestant_name"]["name"] = $name; 

print $_SESSION["contestant_name"]["name"]; 

$arr = $_SESSION["contestant_name"]["topics_done"]; // getting it as null or empty 

var_dump($_SESSION); 

print count($arr); 
print_r($arr); 

?> 

Здесь я пытаюсь использовать переменные сеанса после их хранения на предыдущей странице.

+0

Посмотрите на печенье. – SLaks

+0

Что говорит сеансовая часть вашего phpinfo()? – frenus

+0

Вы используете это на localhost? –

ответ

1

код в верхней части каждой страницы, прежде чем что-то должно быть (убедитесь, что он находится на верхней строке, как я выразился)

<?php session_start(); 
ob_start();?> 

И в нижней части каждой страницы положить:

<?php ob_end_flush();?> 

Не ставьте ничего перед первым кодом или после второго кода.

+0

Это не сработало. –

+0

@ aizen92 Можете ли вы предоставить свой код для настройки и чтения этих переменных? –

+0

.... убедитесь, что это до HTML-тега –

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