Столкнулась с такой ситуацией: после того как передаю управление файлу send.php через ajax:
....
query = "val="+a;
Request(query);
function Request(query)
{
req_pv.open('post', '/ajax/send.php' , true );
req_pv.onreadystatechange = Refresh_pv;
req_pv.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
req_pv.send(query);
}
в файле send.php, переменные сессии не определены(((
Скажите пожалуйста как -нибудь можно подключить именно мой сеанс? Я работаю ч/з Joomla.
send.php
//зарегистрировать сеанс
session_start();
if(!empty($_POST["val"]) )
{
echo $_SESSION['spr'];//не определена
}
Спасибо.
Спустя 21 минута, 25 секунд (3.03.2011 - 15:15) Zerstoren написал(а):
Напиши сначала так, в /ajax/send.php
Проверь существование сессии и поста.
Если пост не обнаружен - значит причина, что данные не передаются.
Если с постом все ок. То смотри что тебе ответит вар_дамп на сессию.
var_dump($_SESSION,$_POST)
Проверь существование сессии и поста.
Если пост не обнаружен - значит причина, что данные не передаются.
Если с постом все ок. То смотри что тебе ответит вар_дамп на сессию.
Спустя 17 минут, 53 секунды (3.03.2011 - 15:33) zvezda_t написал(а):
Цитата |
Если с постом все ок. То смотри что тебе ответит вар_дамп на сессию. |
var_dump($_SESSION):
Цитата |
array(0) { } |
Спустя 56 минут, 6 секунд (3.03.2011 - 16:29) Zerstoren написал(а):
А на странице где отправляется запрос, что происходит с $_SESSION['spr']? Она существует?
Спустя 1 минута, 39 секунд (3.03.2011 - 16:31) Oyeme написал(а):
ajax вообще тут не причём,сессия должна выводиться.Если она была созданна и не была обнуленна.
Спустя 7 минут, 16 секунд (3.03.2011 - 16:38) Zerstoren написал(а):
Цитата (Oyeme @ 3.03.2011 - 13:31) |
ajax вообще тут не причём,сессия должна выводиться.Если она была созданна и не была обнуленна. |
А я ничего про Аджакс не сказал.
Я спросил - существует ли элемент массива у сессии.
Если его нету даже на странице от куда происходит вызов, то значит он:
1) - не объявлен
2) - убит
Логика проста. Если здесь ее нету. То идем выше и находим место где она исчезает.
Что при этом вызывается и что проходит, читаем каждую строчку и осмысливаем ее.
Спустя 14 часов, 59 минут, 44 секунды (4.03.2011 - 07:38) zvezda_t написал(а):
Zerstoren, восхищаюсь Вашим основательным подходом!
Итак:
на странице откуда происходит вызов сессия не пуста:
Итак:
на странице откуда происходит вызов сессия не пуста:
Цитата |
array(5) { ["__default"]=> array(7) { ["session.counter"]=> int(4) ["session.timer.start"]=> int(1299213326) ["session.timer.last"]=> int(1299213335) ["session.timer.now"]=> int(1299213338) ["session.client.browser"]=> string(75) "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)" ["registry"]=> object(JRegistry)#12 (3) { ["_defaultNameSpace"]=> string(7) "session" ["_registry"]=> array(1) { ["session"]=> array(1) { ["data"]=> object(stdClass)#13 (0) { } } } ["_errors"]=> array(0) { } } ["user"]=> &object(JUser)#14 (19) { ["id"]=> int(0) ["name"]=> NULL ["username"]=> NULL ["email"]=> NULL ["password"]=> NULL ["password_clear"]=> string(0) "" ["usertype"]=> NULL ["block"]=> NULL ["sendEmail"]=> int(0) ["gid"]=> int(0) ["registerDate"]=> NULL ["lastvisitDate"]=> NULL ["activation"]=> NULL ["params"]=> NULL ["aid"]=> int(0) ["guest"]=> int(1) ["_params"]=> object(JParameter)#15 (7) { ["_raw"]=> string(0) "" ["_xml"]=> NULL ["_elements"]=> array(0) { } ["_elementPath"]=> array(1) { [0]=> string(51) "C:\www\libraries\joomla\html\parameter\element" } ["_defaultNameSpace"]=> string(8) "_default" ["_registry"]=> array(1) { ["_default"]=> array(1) { ["data"]=> object(stdClass)#16 (0) { } } } ["_errors"]=> array(0) { } } ["_errorMsg"]=> NULL ["_errors"]=> array(0) { } } } ["DBCONNECT"]=> int(1) ["v_user"]=> int(31) ["spr"]=> int(5) ["rr"]=> array(2) { [0]=> int(271) [1]=> int(263) } } |
Спустя 3 часа, 34 минуты, 36 секунд (4.03.2011 - 11:13) Zerstoren написал(а):
Такс, не знакомы Вы с вардампом)
Откройте html исходник где вызван вар_дамп и скопируйте что он отдаст. Форматирование сохраниете.
А лучше всего - сделайте вар_дамп в конце index.php. (Мало-ли чего там джумла творит)
Откройте html исходник где вызван вар_дамп и скопируйте что он отдаст. Форматирование сохраниете.
А лучше всего - сделайте вар_дамп в конце index.php. (Мало-ли чего там джумла творит)
Спустя 2 минуты, 28 секунд (4.03.2011 - 11:15) Michael написал(а):
zvezda_t, куки отключены что ли?
Спустя 3 часа, 57 минут, 7 секунд (4.03.2011 - 15:12) zvezda_t написал(а):
Zerstoren
а что не так?
вот же в конце, есть моя переменная
а что не так?
вот же в конце, есть моя переменная
Цитата |
["spr"]=> int(5) |
Цитата |
zvezda_t, куки отключены что ли? |
Michael, как проверить и где?
Спустя 18 минут, 21 секунда (4.03.2011 - 15:31) Zerstoren написал(а):
А Вы уверены что она находится в
$_SESSION['spr']
а не в
$_SESSION['_default']['spr'] ?
и еще
перед session_start(); есть вывод каких-то данных?
$_SESSION['spr']
а не в
$_SESSION['_default']['spr'] ?
и еще
перед session_start(); есть вывод каких-то данных?
Спустя 15 минут, 19 секунд (4.03.2011 - 15:46) Michael написал(а):
Это в браузере смотрится.
В Firefox например - Инструменты, настройки, приватность. И тут: История.
В Firefox например - Инструменты, настройки, приватность. И тут: История.
Спустя 35 секунд (4.03.2011 - 15:47) zvezda_t написал(а):
Цитата |
А Вы уверены что она находится в $_SESSION['spr'] а не в $_SESSION['_default']['spr'] ? |
ничего себе! еще и такое бывает....
но ведь регистрировала я переменную сессии просто:
$_SESSION['spr']=5;
а не как $_SESSION['_default']['spr']. или это от меня не зависит?
Цитата |
перед session_start(); есть вывод каких-то данных? |
вывода нет. есть подключение файлика с функциями:
require_once("db/connect.php");
Michael, а как куки влияют на область видимости сессии? и это что все пользователи моего сайта должны настройки у себя проверять?
Спустя 13 минут, 53 секунды (4.03.2011 - 16:00) Michael написал(а):
Цитата (zvezda_t @ 4.03.2011 - 14:47) |
Michael, а как куки влияют на область видимости сессии? и это что все пользователи моего сайта должны настройки у себя проверять? |
Причем тут область видимости сессии если ты пишешь, что:
Цитата | ||||
var_dump($_SESSION):
|
, т.е. сессию вообще не видит. Или уже видит?
Куки важны для сессии, т.к. именно в куках хранится сессионная кука . По ней стартует сессия на сервере( при вызове session_start()). Не только по ней может, но это пока не важно.
В друпале например без кук можно только под анонимом работать. Не зареганным.
Спустя 4 минуты (4.03.2011 - 16:04) zvezda_t написал(а):
Цитата |
, т.е. сессию вообще не видит. Или уже видит? |
не видет ранее созданную.
а вот если в этом же файле зарегистрировать новую переменную сессии, то видит
Спустя 8 минут, 30 секунд (4.03.2011 - 16:13) Michael написал(а):
все должно работать. Ты чего то недоговариваешь. Гадать тут бесполезно. Учись дебажить.
Установила переменную сессии и проверяй на каждом этапе работы что с ней происходит. Можешь например просто в какой то файл дописывать ее значения. (логирование).
Установила переменную сессии и проверяй на каждом этапе работы что с ней происходит. Можешь например просто в какой то файл дописывать ее значения. (логирование).
Спустя 50 минут, 40 секунд (4.03.2011 - 17:04) Zerstoren написал(а):
Мне кажется что где-то стоит противная строчка $_SESSION = array();
Но если нет - то тут нуна дебажить без форума.
Но если нет - то тут нуна дебажить без форума.
Спустя 14 часов, 34 минуты (5.03.2011 - 07:38) zvezda_t написал(а):
Цитата |
Учись дебажить. |
что это значит?
Спустя 17 минут, 10 секунд (5.03.2011 - 07:55) inpost написал(а):
В самом конце документа, откуда вызывается аякс, напиши:
После:
И сразу после него попытайся вызвать страницу аяксом, можно прям в этом скрипте, посмотри на результат работы.
Проверь переход на другую страницу, передаётся ли сессия между ними.
<?php echo '<script>alert("TEXT '.$_SESSION['spr'].'")</script>'; ?>
После:
И сразу после него попытайся вызвать страницу аяксом, можно прям в этом скрипте, посмотри на результат работы.
Проверь переход на другую страницу, передаётся ли сессия между ними.
Спустя 7 минут, 14 секунд (5.03.2011 - 08:02) zvezda_t написал(а):
Цитата |
Проверь переход на другую страницу, передаётся ли сессия между ними. |
не передаётся
фуф... весь форум перевернула и нашла свою старую тему
У меня такая же проблема была, и так я и не смогла её решить.
Вася тогда сказал, что может быть проблема в имени сессии:
Цитата |
session_name() возвращает имя сессии. Если именна сессий не совпадают то и переменные сохраненные в одной сессии не доступны в другой. Это нормальный подход. Все что тебе надо это передать имя сессии в свой скрипт. и там её использовать |
я так попробовала, не получилось у меня
Я же использую cms Joomla, а когда вызываю страницу аяксом, там уже нет модулей cms. Мне кажется поэтому и сессия новая открывается, а сессия зарегистрированная cms не работает
Спустя 1 час, 1 минута, 7 секунд (5.03.2011 - 09:03) Семён написал(а):
Всё верно, zvezda_t почитайте про область видимости сессии.
Пример решения твоей проблемы:
Пример решения твоей проблемы:
session_id($_COOKIE['JOOMLA']); //Где Joomla нужно поменять на твой ключ в куках.
session_start(); //Только теперь мы сможем работать с сессией.
/* Проверку на существование $_COOKIE[key] в production-е, не забудь сделать */
Спустя 14 минут, 28 секунд (5.03.2011 - 09:18) zvezda_t написал(а):
Цитата |
//Где Joomla нужно поменять на твой ключ в куках. |
Семён, как мне узнать мой ключ в куках?
или это 'spr'?
$_COOKIE['spr'] в файле вызванном ч/з ajax не существует.
Спустя 4 минуты, 42 секунды (5.03.2011 - 09:22) Семён написал(а):
Конечно не spr!
В своём файле где ты хочешь получить сессию, напиши
Теперь смотри наличие либо уникального ключа Jooml-ы, либо PHPSESSID
В своём файле где ты хочешь получить сессию, напиши
<?
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
?>
Теперь смотри наличие либо уникального ключа Jooml-ы, либо PHPSESSID
Спустя 8 минут, 16 секунд (5.03.2011 - 09:31) Семён написал(а):
Блин сейчас не поленюсь поставлю Jooml-у и проверю реально ли там такие грабли.
Спустя 12 минут, 42 секунды (5.03.2011 - 09:43) zvezda_t написал(а):
<?
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
?>
добавила этот код в файл вызывающий аякс и в файл который получил управление.
и там и там получила одинаковый результат:
Цитата |
Array ( [2eb88300ef2f70c17e2766798f1b2672] => r9p055uo0d7pp7dod16ama4hp5 [PHPSESSID] => r9p055uo0d7pp7dod16ama4hp5 ) |
В файле где хочу получить сессию пишу так:
1)
session_id($_COOKIE['2eb88300ef2f70c17e2766798f1b2672']);
session_start();
print "s=".$_SESSION['spr'];
Цитата |
Notice: Undefined index: spr in C:\www\file\dct.php on line 11 s= |
2)
session_id($_COOKIE['r9p055uo0d7pp7dod16ama4hp5']);
session_start();
print "s=".$_SESSION['spr'];
Цитата |
Notice: Undefined index: r9p055uo0d7pp7dod16ama4hp5 in C:\www\file\dct.php on line 6 Warning: session_start() [function.session-start]: The session id contains illegal characters, valid characters are a-z, A-Z, 0-9 and '-,' in C:\www\file\dct.php on line 7 Notice: Undefined index: spr in C:\www\file\dct.php on line 11 s= |
Спустя 4 минуты, 53 секунды (5.03.2011 - 09:48) Семён написал(а):
Вообщем поставил Joomлу, да тут просто не получится указать ID сессии.
Придётся её решить с использованием и подключением fw Jooml-ы.
Сейчас проверил, всё работает, держи (проверил на 1.6, но будет и пахать на 1.5)
Придётся её решить с использованием и подключением fw Jooml-ы.
Сейчас проверил, всё работает, держи (проверил на 1.6, но будет и пахать на 1.5)
<?php
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname(__FILE__)); //Обрати внимание сюда. (если у тебя файл лежит не в корне сайта, то измени на DOCUMENT_ROOT
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$session = &JFactory::getSession(); //Здесь то что нужно тебе
echo "<pre>";
print_r($session);
echo "</pre>";
?>
Спустя 24 минуты, 36 секунд (5.03.2011 - 10:13) zvezda_t написал(а):
define( '_JEXEC', 1 );
define('JPATH_BASE', dirname($_SERVER['DOCUMENT_ROOT'].'www'));
define( 'DS', DIRECTORY_SEPARATOR );
require_once (JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once (JPATH_BASE . DS . 'includes' . DS . 'framework.php');
//$_SERVER['DOCUMENT_ROOT']='C:/www/'
//JPATH_BASE='C:/www'
//JPATH_BASE . DS . 'includes' . DS . 'defines.php'='C:/www\includes\defines.php'
$session = &JFactory::getSession(); //Здесь то что нужно тебе
echo "<pre>";
print_r($session);
echo "</pre>";
print "s=".$_SESSION['spr'];
результат:
Цитата |
JSession Object ( [_state] => active [_expire] => 900 [_store] => JSessionStorageNone Object ( [_errors] => Array ( ) ) [_security] => Array ( [0] => fix_browser ) [_force_ssl] => [_errors] => Array ( ) ) Notice: Undefined index: spr in C:\www\file\dct.php on line 20 s= |
Спустя 12 минут, 18 секунд (5.03.2011 - 10:25) zvezda_t написал(а):
...
$result=mssql_query($query);
if(mssql_num_rows($result)>0)
{
$row=mssql_fetch_array($result);
$user=$row['id'];
//Если пользователь записан в базе данных,
//зарегистрировать его идентификатор
$_SESSION['user']=$user;
$_SESSION['spr']='1';
}
Спустя 1 минута, 54 секунды (5.03.2011 - 10:27) Семён написал(а):
Сейчас погуглил. Нашёл такую инфу:
http://ask.webcheatsheet.com/questions/212...es-from-my-code
И вообще ты сессии устанавливай используя Framework...
http://ask.webcheatsheet.com/questions/212...es-from-my-code
И вообще ты сессии устанавливай используя Framework...
$session = &JFactory::getSession();
$session->set('myKey', 'myValue');
echo $session->get('myKey');
Спустя 7 минут, 34 секунды (5.03.2011 - 10:35) zvezda_t написал(а):
В файле, который передаёт управление видно все переменные сессии, а в котором хочу получить свою сессию, не полностью вижу её переменные, только [__default]:
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
Цитата |
Array ( [__default] => Array ( [session.counter] => 15 [session.timer.start] => 1299308159 [session.timer.last] => 1299310128 [session.timer.now] => 1299310317 [session.client.browser] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) ) ) |
Спустя 3 минуты, 58 секунд (5.03.2011 - 10:38) zvezda_t написал(а):
а в том который вызывает:
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
Цитата |
Array ( [__default] => Array ( [session.counter] => 87 [session.timer.start] => 1299305631 [session.timer.last] => 1299310298 [session.timer.now] => 1299310591 [session.client.browser] => Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) [registry] => JRegistry Object ( [_defaultNameSpace] => session [_registry] => Array ( [session] => Array ( [data] => stdClass Object ( ) ) ) [_errors] => Array ( ) ) [user] => JUser Object ( [id] => 0 [name] => [username] => [email] => [password] => [password_clear] => [usertype] => [block] => [sendEmail] => 0 [gid] => 0 [registerDate] => [lastvisitDate] => [activation] => [params] => [aid] => 0 [guest] => 1 [_params] => JParameter Object ( [_raw] => [_xml] => [_elements] => Array ( ) [_elementPath] => Array ( [0] => C:\www\libraries\joomla\html\parameter\element ) [_defaultNameSpace] => _default [_registry] => Array ( [_default] => Array ( [data] => stdClass Object ( ) ) ) [_errors] => Array ( ) ) [_errorMsg] => [_errors] => Array ( ) ) ) [user] => 2 [spr] => 1 ) |
Спустя 3 минуты, 18 секунд (5.03.2011 - 10:42) zvezda_t написал(а):
почему в файле вызванном через ajax урезанная версия массива $_SESSION?
Спустя 8 минут, 30 секунд (5.03.2011 - 10:50) Семён написал(а):
По ссылочке выше посмотри как вытаскивать сессии.
Спустя 8 минут, 24 секунды (5.03.2011 - 10:59) zvezda_t написал(а):
Мне их придется переопределить теперь нада что-ли? Как я написала, не пойдет никак?
Спустя 3 часа, 45 минут, 50 секунд (5.03.2011 - 14:45) Trianon написал(а):
а session_id() возвращает один и тот же идентификатор?
Спустя 7 минут, 59 секунд (5.03.2011 - 14:52) Michael написал(а):
ацкая тема. Почему на форуме джумлы не спросить? У движков свои API, свои приколы. Наугад с ними работать как бы ...
Спустя 6 месяцев, 24 дня, 36 минут, 51 секунда (29.09.2011 - 14:29) zvezda_t написал(а):
опять это же проблема(
не вижу значения своей сессии((((
уже плачу...
не вижу значения своей сессии((((
уже плачу...
Цитата |
а session_id() возвращает один и тот же идентификатор? |
нет, разные
Спустя 20 минут, 21 секунда (29.09.2011 - 14:50) zvezda_t написал(а):
В файле index.php джумлы после строк
добавила строчку:
вроде теперь работает...
require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
добавила строчку:
$gSess = &JFactory::getSession();
вроде теперь работает...
_____________
Что ты сделал сегодня - для завтра?
"Приидите ко Мне вси труждающиеся и обремененнии и Аз упокою вы, возмите иго Мое на себе и научитеся от Мене яко кроток есмь и смирен сердцем и обрящете покой душам вашим, иго бо Мое благо и бремя Мое легко есть."(Мф. 11:28-30)