Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Теряется сессия при обновлении страницы
 
 автор: dima2207   (10.04.2010 в 13:53)   письмо автору
 
 

всем привет !
теряется сессия при обновлении страницы. при том что в session_save_path присутсвует хеш сессии .
куда копать ?

  Ответить  
 
 автор: Diplex   (10.04.2010 в 14:53)   письмо автору
 
   для: dima2207   (10.04.2010 в 13:53)
 

Для начала можно показать свой код :)

  Ответить  
 
 автор: dima2207   (10.04.2010 в 15:00)   письмо автору
 
   для: Diplex   (10.04.2010 в 14:53)
 

какой код ? сохраняется сессия , <?print_r($_SESSION)?> показывает нормально массив сессии , при обновлении страницы сессия теряется . и в куки PHPSESID - нема .

  Ответить  
 
 автор: neadekvat   (10.04.2010 в 16:08)   письмо автору
 
   для: dima2207   (10.04.2010 в 15:00)
 

Вот и покажите, как вы это делаете.

  Ответить  
 
 автор: serenya1983   (10.04.2010 в 16:35)   письмо автору
 
   для: neadekvat   (10.04.2010 в 16:08)
 

session_start() не забыли поставить?

  Ответить  
 
 автор: dima2207   (10.04.2010 в 17:49)   письмо автору
 
   для: serenya1983   (10.04.2010 в 16:35)
 

разумеется не забыл , иначе сессия вообще бы не записалась , но она почему пропадает при обновлении стр.
вот данные :


[root@localhost etc]# php -v
PHP 5.2.13 (cli) (built: Mar  2 2010 15:56:41)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies
[root@localhost etc]# httpd -v
Server version: Apache/2.2.14 (Unix)
Server built:   Oct 14 2009 13:19:18


ставил из yum репозиториев и никаких изменений в конфиги не делал кроме виртуал хост в httpd.conf.
не понятно почему PHPSESSID не пишится в куки ?
пробовал поставить session.use_trans_sid 1
поидеи должно дописывать ид сессии в урл , а нифига не дописывает . че за бред ?

  Ответить  
 
 автор: **   (10.04.2010 в 21:18)
 
   для: dima2207   (10.04.2010 в 17:49)
 

Интересная канитель :)
в адресах sid бывает только появляется если на странице есть html-ссылки.
а так, по умолчанию session.cookie.lifetime 0
(php --ri session)
значит вряд.ли браузер их не ставит из.за времени.
я.бы curl.ом глянул чего шлётся в заголовках .
если конечно session_unset или что.то такое в коде не делает это.

  Ответить  
 
 автор: dima2207   (11.04.2010 в 00:04)   письмо автору
 
   для: **   (10.04.2010 в 21:18)
 

унсет сессии у меня делается лиш в случае если в строке logout.html
вот листинг php --ri session :

[root@localhost etc]# php --ri session

session

Session Support => enabled
Registered save handlers => files user
Registered serializer handlers => php php_binary wddx

Directive => Local Value => Master Value
session.bug_compat_42 => Off => Off
session.bug_compat_warn => On => On
session.save_path => /var/lib/php/session => /var/lib/php/session
session.name => PHPSESSID => PHPSESSID
session.save_handler => files => files
session.auto_start => Off => Off
session.gc_probability => 1 => 1
session.gc_divisor => 1000 => 1000
session.gc_maxlifetime => 1440 => 1440
session.serialize_handler => php => php
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_domain => no value => no value
session.cookie_secure => Off => Off
session.cookie_httponly => Off => Off
session.use_cookies => On => On
session.use_only_cookies => On => On
session.referer_check => no value => no value
session.entropy_file => no value => no value
session.entropy_length => 0 => 0
session.cache_limiter => nocache => nocache
session.cache_expire => 180 => 180
session.use_trans_sid => 0 => 0
session.hash_function => 0 => 0
session.hash_bits_per_character => 5 => 5
[root@localhost etc]#

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

  Ответить  
 
 автор: Рома   (11.04.2010 в 00:21)   письмо автору
 
   для: dima2207   (11.04.2010 в 00:04)
 

это ваш первый опыт работы с сессией?

  Ответить  
 
 автор: dima2207   (11.04.2010 в 00:52)   письмо автору
 
   для: Рома   (11.04.2010 в 00:21)
 

Роман, к чему вопрос ?

  Ответить  
 
 автор: **   (11.04.2010 в 11:29)
 
   для: dima2207   (11.04.2010 в 00:52)
 

Странно, по умолчанию вроде должно быть так-же
use_cookies => On => On
use_only_cookies => On => On
а у меня почему-то сразу после сборки показало use_only_cookies => Off
Пока не устанавливал у себя, неи понравилось как собралось 5,2, жаловалось на отсутствие всяких bison, lemon ...
тоже cli, а как собрать модулем пока не понял.

Но проверили-бы какие заголовки-то приходят при запросе страницы, скриптом типа
<?php
header
('content-type:text/plain');

$ch curl_init();

curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 0,
CURLOPT_HEADER => 1,
CURLOPT_NOBODY => 0,
CURLOPT_TIMEOUT => 15,
CURLOPT_URL => 'http://адрес/скрипта'
));
curl_exec($ch);
?>
есть-ли там PHPSESSID

  Ответить  
 
 автор: devoto   (05.06.2010 в 16:53)   письмо автору
 
   для: dima2207   (10.04.2010 в 13:53)
 

такая же проблема как у автора. файл сессии есть, но при переходе на другую страницу сессия теряеться.
неужели никто не нашел решения этой проблемы?

  Ответить  
 
 автор: sim5   (05.06.2010 в 16:57)   письмо автору
 
   для: devoto   (05.06.2010 в 16:53)
 

Начало своих страниц покажите.

  Ответить  
 
 автор: devoto   (05.06.2010 в 17:55)   письмо автору
 
   для: sim5   (05.06.2010 в 16:57)
 

Взял примеры с первого сайта по PHP
page1.php

<html>
<body>
<h1> Страница регистрации </h1>
  <input type=hidden name=action value=post>
  <form method="post" action="page2.php">
   <table>
    <tr><td>Имя:</td>
    <td><input type="text" name=name value='<? echo $name?>'></td></tr>
    <tr><td colspan=2><input type=submit value='Enter'>
    </td></tr>
   </table>
  </form>
</body>
</html>


page2.php

<?php
  session_start
();
  
$_SESSION['username'] = $_POST['name'];
  echo 
'Привет, '.$_SESSION['username']."<br>";
?>

  <a href="page2.php">На следующую страницу </a>


page3.php

<?php
  session_start
();
  echo 
$_SESSION['username'].' , ты пришел на другую страницу этого сайта!';
  echo(
"<br>");
?>


здесь выдает ошибку Undefined variable: username in localhost/page3.php on line 3

PS и пожалуйста не нужно выискивать ошибки в написани кода (из серии писать session_start() до любого вывода и тд). Это мы уже проходили.

  Ответить  
 
 автор: sim5   (05.06.2010 в 18:10)   письмо автору
 
   для: devoto   (05.06.2010 в 17:55)
 

У вас ссылка во втором файле на саму себя, а так....
И что у вас в качестве локального сервера?

  Ответить  
 
 автор: devoto   (05.06.2010 в 18:43)   письмо автору
 
   для: sim5   (05.06.2010 в 18:10)
 

опечатка=)
apache 2.2.14

  Ответить  
 
 автор: sim5   (05.06.2010 в 18:46)   письмо автору
 
   для: devoto   (05.06.2010 в 18:43)
 

Апач, это еще не весь сервер, я спрашивал о сборке. Например, Денвер, выполняет все без проблем, а его сессионные установки по умолчанию:
Session Support enabled
Registered save handlers files user
Registered serializer handlers php php_binary wddx
session.auto_start Off
session.bug_compat_42 On
session.bug_compat_warn On
session.cache_expire 180
session.cache_limiter nocache
session.cookie_domain no value
session.cookie_httponly Off
session.cookie_lifetime 0
session.cookie_path /
session.cookie_secure Off
session.entropy_file no value
session.entropy_length 0
session.gc_divisor 100
session.gc_maxlifetime 1440
session.gc_probability 1
session.hash_bits_per_character 4
session.hash_function 0
session.name PHPSESSID
session.referer_check no value
session.save_handler files
session.save_path /tmp
session.serialize_handler php
session.use_cookies On
session.use_only_cookies Off
session.use_trans_sid 0

Вы сами файлы сессий наблюдаете?

  Ответить  
 
 автор: devoto   (05.06.2010 в 19:08)   письмо автору
 
   для: sim5   (05.06.2010 в 18:46)
 

Apache+PHP+MySQL собраный вручную.

спс) после переустановки PHP сесии заработали. судя по всему я во время установки неправильно сконфигурировал php.ini и из-за этого возникли неполадки)

  Ответить  
 
 автор: sim5   (05.06.2010 в 19:12)   письмо автору
 
   для: devoto   (05.06.2010 в 19:08)
 

Надо было сразу посмотреть наличие файла сессии, ибо
$_SESSION['username'] = $_POST['name'];
echo $_SESSION['username'];
совсем не означает, что сессия работает, просто выводится значение объявленной переменной $_SESSION['username'], и не важно при этом, запущен механизм сессии или нет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования