2013-03-19 3 views
0

Я пытаюсь сохранить значения переменных между загрузками страниц.Переменные сеанса PHP За загрузкой страницы

Я думал, что приведенный ниже код не будет отображаться при первом обращении пользователя к страницам. В следующий раз должен отобразиться номер 5. Он показывает нуль (0) в первый раз и каждый раз после.

<?php 
session_start(); 
$_SESSION['test']; 
echo $_SESSION['test']; 
$_SESSION['test'] = 5; 
?> 

Я делаю что-то неправильно? Возможно ли, что мой PHP-сервер настроен неправильно? и т.д.

Настройки сервера

PHP Version 5.3.13 
session.auto_start Off Off 
session.bug_compat_42 Off Off 
session.bug_compat_warn Off Off 
session.cache_expire 180 180 
session.cache_limiter nocache nocache 
session.cookie_domain no value no value 
session.cookie_httponly Off Off 
session.cookie_lifetime 0 0 
session.cookie_path//
session.cookie_secure Off Off 
session.entropy_file /dev/urandom /dev/urandom 
session.entropy_length 0 0 
session.gc_divisor 1000 1000 
session.gc_maxlifetime 1440 1440 
session.gc_probability 1 1 
session.hash_bits_per_character 4 4 
session.hash_function 0 0 
session.name PHPSESSID PHPSESSID 
session.referer_check no value no value 
session.save_handler files files 
session.save_path /var/php_sessions /var/php_sessions 
session.serialize_handler php php 
session.use_cookies On On 
session.use_only_cookies On On 
session.use_trans_sid 1 1 
+1

комментарий к третьей строке $ _SESSION ['test']; – Ateszki

+0

@Ateszki Хотя эта линия, скорее всего, не то, что OP хочет сделать, это не проблема. – PeeHaa

+0

Я знаю, это был просто комментарий для очистки кода и облегчения отладки – Ateszki

ответ

3
  1. Доступен ли файл session.save_path (/ var/php_sessions) для записи. Я вижу, что вы не используете каталог tmp, поэтому я спрашиваю об этом.

  2. session.use_trans_sid должно быть 0 - если вы включите «use_trans_sid», тогда идентификатор сеанса привязывается к URL-адресу каждый раз. Я не уверен, что происходит по запросу ajax, но я думаю, что он будет прикреплен.

  3. Это противоречиво, используя session.use_only_cookies как 1 и session.use_trans_sid как 1, поскольку use_only_cookies указывает, будет ли модуль использовать файлы cookie только для хранения идентификатора сеанса на стороне клиента.

+0

/var/php_sessions не существует, и я не могу его создать. Это похоже на то, что мне нужно спросить у моего веб-хостинга. Спасибо. – w0lf42

+1

для тестирования вы можете указать его на записываемый каталог на сервере ur, например: session_save_path ('/ home/example.com/my_sessions'); ini_set ('session.gc_probability', 1); или ini_set (session.save_path, '/ path/to/your/folder') http://php.net/manual/en/function.session-save-path.php –

+0

проблема с записью была проблемой. – w0lf42

0

Вы можете попробовать следующее:

<?php 
session_start(); 
if (!isset($_SESSION['test'])) { 
    $_SESSION['test'] = 0; 
} 
echo $_SESSION['test']; 
$_SESSION['test'] = 5; 
?> 
+0

Я пробовал это. К сожалению, это не сработало. – w0lf42

0
$_SESSION['test']; 

Я думаю, что эта линия создает новый элемент в массиве $ _SESSION с ключом из «теста» ... поскольку для него не назначено значение, оно равно 0.

Попробуйте изменить его

if(!array_key_exists('test', $_SESSION)) { 
    $_SESSION['test'] = 5; 
} 
0

Что-то вроде этого ??:

<?php 
    session_start(); 
    if(isset($_SESSION['test'])) 
    {$_SESSION['test'] = 5;} 
    else 
    { 
     $_SESSION['test'] = ""; 
    } 
    echo $_SESSION['test']; 
?> 

PS: все о порядке делать эти вещи, вы должны проверить на сессии, если существует назначить 5, если не создавать вар и не приписывать ничего ... первый раз, когда вы выполнить этот сценарий не собираюсь показать ничего, но позже он собирается показать 5.

Saludos;)

+0

Я тоже это пробовал, но ничего не случилось. – w0lf42

+0

Я тестировал на своем локальном хосте и работал ... в первый раз ничего не показывает .... если импульс f5 показывает 5 каждый раз – Hackerman

+0

в вашей phpinfo .... покажите мне конфигурацию сеанса ....эти мины: сессия сессия Поддержка \t включена Registered сохранить обработчики \t пользовательских файлы Зарегистрированных обработчиков Serializer \t PHP php_binary WDDX – Hackerman

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