Стартую сессию в хуке:
Создала файл application\hooks\EC2_Session.php:
function session()
{
//зарегистрировать сеанс
session_start();
}
И в application\config\hooks.php прописала:
$hook['pre_controller'] = array(
'class' => '',
'function' => 'session',
'filename' => 'EC2_Session.php',
'filepath' => 'hooks',
'params' => array()
);
Но когда регистрирую переменные сессии в одном контроллере, а затем делаю redirect на другой контроллер - массив $_SESSION оказывается пустым. Подскажите, пожалуйста - что не так делаю?
Посмотрела, что происходит с файлами сессий. При посещении первой страницы создается файлик сессий и туда записываются мои переменнные, но при редиректе на другую страницу - создается еще один файлик сессий и он уже пуст. Как это исправить? Подскажите, пожалуйста!
Спустя 4 часа, 9 минут, 59 секунд (14.09.2012 - 10:57) Winston написал(а):
ты на каждой странице сессию стартуешь или только на определенных?
Если на каждой, то проще создать файл MY_Controller
С таким содержанием
И положить его в application/core/
И в своих контроллерах наследоваться уже не от CI_Controller, а от MY_Controller
И будет тебе сессия на каждой странице :)
Если на каждой, то проще создать файл MY_Controller
С таким содержанием
Свернутый текст
class MY_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
session_start();
}
}
И положить его в application/core/
И в своих контроллерах наследоваться уже не от CI_Controller, а от MY_Controller
И будет тебе сессия на каждой странице :)
Спустя 6 минут, 58 секунд (14.09.2012 - 11:04) zvezda_t написал(а):
Цитата |
ты на каждой странице сессию стартуешь или только на определенных? |
Я её через функцию стартую, которая вызывается точкой хука $hook['pre_controller'].
Цитата |
'pre_controller': Вызывается непосредственно перед вызовом любого контроллера. Все основные классы, роутинг и проверки безопасности уже завершены. |
Спустя 1 минута, 21 секунда (14.09.2012 - 11:05) Winston написал(а):
Цитата (zvezda_t @ 14.09.2012 - 11:04) |
Я её через функцию стартую, которая вызывается точкой хука $hook['pre_controller']. |
А стартовать в главном контроллере не подходит?
Спустя 1 минута, 14 секунд (14.09.2012 - 11:07) zvezda_t написал(а):
Winston
не знаю... Сейчас попробую. Посмотрим, может и правда так поможет.
не знаю... Сейчас попробую. Посмотрим, может и правда так поможет.
Спустя 22 минуты, 49 секунд (14.09.2012 - 11:30) zvezda_t написал(а):
Winston не получилось.
Если стартую в конструкnоре контроллера CI_Controller, такая же ерунда:
При посещении первой страницы создается файлик сессий и туда записываются мои переменнные, но при редиректе на другую страницу - создается еще один файлик сессий и он уже пуст.
Если стартую в конструкnоре контроллера CI_Controller, такая же ерунда:
При посещении первой страницы создается файлик сессий и туда записываются мои переменнные, но при редиректе на другую страницу - создается еще один файлик сессий и он уже пуст.
Спустя 2 минуты, 17 секунд (14.09.2012 - 11:32) Winston написал(а):
хм... Наверное что-то где-то очищает сессию...
Спустя 26 минут, 18 секунд (14.09.2012 - 11:58) dron4ik написал(а):
а просто первой строчной в файле входа session_start(); без функции?
Спустя 27 минут, 40 секунд (14.09.2012 - 12:26) zvezda_t написал(а):
Цитата |
хм... Наверное что-то где-то очищает сессию... |
Winston, не очищается она. Я же говорю - создается еще один физический файл для сессии - и вот он пустой - а старый с моими данными не используется(
dron4ikне помогло. после редирект - еще один файл. все также...
ничего не понимаю(((
Спустя 1 час, 36 минут, 21 секунда (14.09.2012 - 14:02) killer8080 написал(а):
Цитата (zvezda_t @ 14.09.2012 - 12:26) |
Я же говорю - создается еще один физический файл для сессии - и вот он пустой - а старый с моими данными не используется( |
Значит теряется кука с идентификатором сессии, возможно проблемы с путями кук. Что у тебя в php.ini в session.cookie_path? По умолчанию там '/', если path не указан, то куки привязываются к текущему uri, и на других страницах могут быть недоступны, так же могут проблемы с session.cookie_lifetime. Попробуй перед вызовом сессий сделать так
session_set_cookie_params ( 86400, '/' );
session_start();
Спустя 27 минут, 54 секунды (14.09.2012 - 14:30) zvezda_t написал(а):
Цитата |
Значит теряется кука с идентификатором сессии, возможно проблемы с путями кук. Что у тебя в php.ini в session.cookie_path? |
session.cookie_path = /
session.cookie_lifetime = 0
Спустя 4 минуты, 45 секунд (14.09.2012 - 14:35) zvezda_t написал(а):
Цитата |
session_set_cookie_params ( 86400, '/' ); session_start(); |
сделала... всё равно теряется сессия
Спустя 2 часа, 12 секунд (14.09.2012 - 16:35) dron4ik написал(а):
может они не пишутся... на чем сайт? локалка? Денвер?
Спустя 16 часов, 24 минуты, 21 секунда (15.09.2012 - 08:59) zvezda_t написал(а):
Цитата |
может они не пишутся... на чем сайт? локалка? Денвер? |
пока локалка. Стоит WAMP.
Кто не пишется- куки? Может CI их удаляет?
Сам файл сессий не пустой:sess_ujgrtvibhmqpfsvcaj2l30sh85:
valid_user|s:2:"33";valid_role|s:1:"1";valid_branch|N;valid_tzone|N;
Спустя 1 час, 12 минут, 29 секунд (15.09.2012 - 10:12) Invis1ble написал(а):
zvezda_t
Отследи заголовки, которые получает и отсылает браузер. Думаю, что-то с куками в самом браузере. Также проверь, повторяется ли ситуация в других браузерах.
Отследи заголовки, которые получает и отсылает браузер. Думаю, что-то с куками в самом браузере. Также проверь, повторяется ли ситуация в других браузерах.
Спустя 6 минут, 45 секунд (15.09.2012 - 10:19) zvezda_t написал(а):
Invis1ble, в других браузерах - тоже самое.
Цитата |
Отследи заголовки, которые получает и отсылает браузер. |
Как это сделать?
Спустя 12 минут, 48 секунд (15.09.2012 - 10:31) Invis1ble написал(а):
Если в других браузерах наблюдается такая же проблема, то дело, скорее всего, все таки не в браузерах.
Цитата |
Как это сделать? |
смотря где, в Chrome - F12, вкладка Network; в FF - в firebug'е тоже по-моему вкладка Network; в опере и ие тоже аналоги есть.
Спустя 32 минуты, 1 секунда (15.09.2012 - 11:03) zvezda_t написал(а):
Invis1ble, посмотрела.
На первую страницу попадает методом GET.
когда заполняю форму авторизации и нажимаю на кнопку "войти",
все заголовки которые были очищаются и остается только два заголовка
сработанный метод POST и редирект на следующую страницу методом GET.
На первую страницу попадает методом GET.
когда заполняю форму авторизации и нажимаю на кнопку "войти",
все заголовки которые были очищаются и остается только два заголовка
сработанный метод POST и редирект на следующую страницу методом GET.
Спустя 24 минуты, 35 секунд (15.09.2012 - 11:28) Invis1ble написал(а):
я имею в виду заголовки Сookie запроса и Set-Cookie ответа проанализируй. где-то что-то теряется из них.
Спустя 5 минут, 13 секунд (15.09.2012 - 11:33) zvezda_t написал(а):
Цитата |
я имею в виду заголовки Сookie запроса и Set-Cookie ответа проанализируй |
у Google Chrome F12 на вкладке Network, есть столбцы: Name, Method, Status, Type, Initiator, Size, Time
а где про куки посмотреть?
Спустя 6 минут, 30 секунд (15.09.2012 - 11:40) Invis1ble написал(а):
кликаешь на нужном url в столбце Name и во вкладке Headers будут показаны все заголовки
Спустя 13 минут, 40 секунд (15.09.2012 - 11:53) zvezda_t написал(а):
До перехода страницы:
После перехода:
PHPSESSID - поменялась. Как это исправить?
Свернутый текст
Request URL:http://localhost/
Request Method:GET
Status Code:302 Found
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=7lji6mnbn70867182bb0p8cvl5; ci_session=a%3A5%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%2213533b4c8c54424152551ca21843e1d8%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A99%3A%22Mozilla%2F5.0+%28Windows+NT+5.1%29+AppleWebKit%2F537.1+%28KHTML%2C+like+Gecko%29+Chrome%2F21.0.1180.89+Safari%2F537.1%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1347698745%3Bs%3A9%3A%22user_data%22%3Bs%3 A0%3A%22%22%3B%7D8d3832dca44bd56ee80cf44c41a9821f
Host:localhost
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Response Headersview source
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Length:9
Content-Type:text/html
Date:Sat, 15 Sep 2012 08:49:45 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Location:http://127.0.0.1/manager
Pragma:no-cache
Server:Apache/2.2.22 (Win32) PHP/5.4.3
X-Powered-By:PHP/5.4.3
После перехода:
Свернутый текст
Request URL:http://127.0.0.1/manager
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:windows-1251,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=aoj1h6rum6ijdsicp5a47o3d26; ci_session=a%3A5%3A%7Bs%3A10%3A%22session_id%22%3Bs%3A32%3A%225f6e359af6c5f770df436614dea45e34%22%3Bs%3A10%3A%22ip_address%22%3Bs%3A9%3A%22127.0.0.1%22%3Bs%3A10%3A%22user_agent%22%3Bs%3A99%3A%22Mozilla%2F5.0+%28Windows+NT+5.1%29+AppleWebKit%2F537.1+%28KHTML%2C+like+Gecko%29+Chrome%2F21.0.1180.89+Safari%2F537.1%22%3Bs%3A13%3A%22last_activity%22%3Bi%3A1347698037%3Bs%3A9%3A%22user_data%22%3Bs%3A0%3A%22%22%3B%7D73db5ce38c01fbed230bad504f508eeb
Host:127.0.0.1
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
Response Headersview source
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Length:31
Content-Type:text/html
Date:Sat, 15 Sep 2012 08:49:45 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.2.22 (Win32) PHP/5.4.3
X-Powered-By:PHP/5.4.3
PHPSESSID - поменялась. Как это исправить?
Спустя 55 минут, 16 секунд (15.09.2012 - 12:49) zvezda_t написал(а):
Нашла в инете такое предположение о проблеме:
Цитата |
Вобщем, проблема оказалась в том, что не правильно было выставлено время (-5 часов), соответственно и сессии не сохранялись, т.к. при обновлении страницы тут же истекали. |
Сейчас вывела результат ф-ции date() = 09:46:49, хотя моё время 15:46:49.
Посмотрела настройки php.ini:
Цитата |
date date/time support enabled "Olson" Timezone Database Version 2012.2 Timezone Database internal Default timezone UTC |
В этом может быть проблема?
Что нужно изменить?
ЗЫ:Winston спасибо) что то я не нашла - кнопочку - свернутый текст)))
Спустя 10 минут, 11 секунд (15.09.2012 - 12:59) Winston написал(а):
хм.. Проверь в config.php
$config['cookie_path'] значение должно быть /
И настройки сессий примерно следующие
$config['cookie_path'] значение должно быть /
И настройки сессий примерно следующие
Свернутый текст
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
Спустя 6 минут, 42 секунды (15.09.2012 - 13:05) zvezda_t написал(а):
Winston, всё так.
Спустя 1 минута, 45 секунд (15.09.2012 - 13:07) Winston написал(а):
Хм..
Попробуй создать отдельно 2 независимых файла и между ними передать сессию, если тоже не будет пахать, значит дело не в CI
Попробуй создать отдельно 2 независимых файла и между ними передать сессию, если тоже не будет пахать, значит дело не в CI
Спустя 16 минут, 29 секунд (15.09.2012 - 13:24) zvezda_t написал(а):
Winston
просто два файла, работают:
просто два файла, работают:
<?php
echo "test";
session_start();
$_SESSION['test']='privet';
?>
<html>
<a href="http://localhost/testses2.php">Переход</a>
</html>
<?php
session_start();
echo "test".$_SESSION['test'];
?>
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)