[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: session_id() возвращает пусто :((
cln2008
Доброго времени суток всем.
Помогите с проблемой разобразаться - функция session_id() ничего не возвращает.
Т.е. конструкция echo "session id = ".session_id(); ничего не отображает,
результат такой: session id = .
Никто не сталкивался с такой проблемой ?




Спустя 4 минуты, 39 секунд (16.11.2010 - 21:46) Sanchopansa написал(а):
Вот с PHP.net
Цитата
Return Values

session_id() returns the session id for the current session or the empty string ("") if there is no current session (no current session id exists).

Спустя 9 минут, 13 секунд (16.11.2010 - 21:56) cln2008 написал(а):
Но при попытке вызвать session_start() дает:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home ....
sad.gif
и при всем при этом сессия работает и переменные через нее нормально передаю

Спустя 1 минута, 38 секунд (16.11.2010 - 21:57) Sanchopansa написал(а):
ну походу это надо делать до какого либо вывода в поток... попробуй получить ID до вывода.. ну и я надеюсь ты уже осуществлял работу с сесией.. тоесть она создана..

Спустя 10 минут, 45 секунд (16.11.2010 - 22:08) cln2008 написал(а):
блин, не могу понять
есть код

$SessionId = session_id();

if ( empty($SessionId) )
{
session_start();
$SessionId = session_id();
}

но каждый раз ИД дается разный ...

Спустя 1 минута, 1 секунда (16.11.2010 - 22:09) DmitryOpalev написал(а):
А разве не надо делать session_register()
Или хотя бы $_SESSION['lolo'] = "";

Спустя 1 минута, 1 секунда (16.11.2010 - 22:10) linker написал(а):
Сначала всегда в самом верху session_start(), а уже потом остальной код.

Спустя 14 секунд (16.11.2010 - 22:10) sharki написал(а):
Я как то раз задавал этот вопрос насчет session_id(); так вот, ОН НЕ ПОСТОЯННЫЙ, все время генерируется новый.

Спустя 4 минуты, 24 секунды (16.11.2010 - 22:15) cln2008 написал(а):
DmitryOpalev, у меня указанная выше конструкция в index.php, а любая ссылка на страницах переводит на index с набором управляющих переменных, в зависимости от которых
уже определяю что надо делать ...
или может спасет

if (!isset($_SESSION['lolo']))
{
$_SESSION['lolo'] = session_id();
}

?

Спустя 5 минут, 48 секунд (16.11.2010 - 22:20) Sanchopansa написал(а):
вот тебе два кода для сравнения.. запусти и покрути..
die(var_dump(session_id()));

и второй
session_start();
die(var_dump(session_id()));

а вот мои результаты выполнения этого скрипта ...
Для первого случая
Цитата
string(0) ""


Для второго случая
Цитата
string(32) "cfb2769a6cc772dc713a7c1973ab423d"

Спустя 1 час, 18 минут, 49 секунд (16.11.2010 - 23:39) cln2008 написал(а):
Sanchopansa, ну да ... только у меня задача - получить какой-то уникальный идентификатор на то время, пока пользователь сидит на сайте ...
а session_id все время меняется sad.gif

Спустя 25 минут, 19 секунд (17.11.2010 - 00:05) linker написал(а):
Читаем When using session cookies, specifying an id for session_id() will always send a new cookie when session_start() is called, regardless if the current session id is identical to the one being set.

Спустя 10 часов, 16 минут, 31 секунда (17.11.2010 - 10:21) cln2008 написал(а):
Попробую поставить вопрос по-другому - я хочу сделать корзину и мне нужен какой-то уникальный идентификатор, который был "жил" до тех пор, пока пользователь не закроет
окно браузера.
Никто не сталкивался с такой задачей ?

Спустя 58 минут, 18 секунд (17.11.2010 - 11:19) linker написал(а):
session_start(); в массиве $_SESSION храни данные текущей сессии, никаких session_id нафиг не нужны.

Спустя 12 минут, 44 секунды (17.11.2010 - 11:32) Sanchopansa написал(а):
Капец.. ну ты бы так сразу и спросил и все было бы решино быстро.. короче читай ответ linker

Спустя 43 минуты, 43 секунды (17.11.2010 - 12:16) cln2008 написал(а):
linker прав на все 1000 ... но мне надо ПОЛУЧИТЬ идентификатор, как его хранить - тут вопросов нет ... попробую еще подробней
для формирования заказа нужен какой-то уникальный номер, рассматривал 2 пути
1. при нажатии на кнопку "в корзину" делается вставка в таблицу заказов и получаю
оттуда последний IDENTITY. дальше его использую его как номер заказа. при следующих
нажатиях на кнопку просто проверяю - а есть ли запись с таикм ИД, и если есть,
то уже вставка идет в таблицу товаров заказа
Такой способ я использовал на одном сайте, когда оформлял заказ на печать фото

2. попробовать получить ИД сесии и сипользовать его в качестве идентификатора
список товаров заказа хранить пока в массиве и при подтверждении уже записывать
в БД, получать какой-то номер заказа и выдавать его пользователю (выдавать 32 символа
как номер заказа - жестоко для пользователя;) )

Вот сейчас решил попробовать вариант 2 ... но что-то пока не получается sad.gif

Спустя 23 минуты, 21 секунда (17.11.2010 - 12:39) cln2008 написал(а):
и есть еще вопрос - а может ли кто-то помочь с реализацией корзины ? за соотв вознаграждение ...

Спустя 35 минут, 21 секунда (17.11.2010 - 13:15) linker написал(а):
Есть такой массив $_SESSION, он для каждого пользователя грубо говоря свой. Id сессии хранится в куках или передается в адресной строке. Например, пользователь зашел на сайт
session_start();
добавил что-то себе в корзину в количестве "n"
$_SESSION['basket'][$id_tovar] = $count_tovar;
выводим ему список товаров корзине
$result = mysql_query("SELECT `id`, `name` FROM `tovars` WHERE `id` IN (" . implode(',', array_keys($_SESSION['basket'])) . ")");
echo 'В корзине: <br>'
while($Tovar = mysql_fetch_assoc($result))
echo $Tovar['name'] . ' в количестве ' . $_SESSION['basket'][$Tovar['id']] . '<br>';
Удаляем товар из корзины
$remove_id = isset($_GET['id']) ? abs($_GET['id']) : 0;
if (isset($_SESSION['basket'][$remove_id]))
unset($_SESSION['basket'][$remove_id]);
и т.д. никакие session_id() не нужны тут вообще.

Спустя 7 минут, 11 секунд (17.11.2010 - 13:22) Sanchopansa написал(а):
Вот тут почитай.. рассматривали это http://phpforum.ru/index.php?showtopic=35897&hl=

Спустя 1 день, 3 часа, 45 минут, 40 секунд (18.11.2010 - 17:07) cln2008 написал(а):
народ, вылезла у меня другая проблема ....
или туплю или хз ...
работаю через $_SESSION
когда пользователь нажал на кнопку "Купить", то
сначала проверяю
isset($_SESSION['OrderId']

и если ничего нет, то вставка в БД, получаю последний ид и присваиваю его
в $_SESSION['OrderId'].
вывожу
 print_r($_SESSION); 
, показывает что $_SESSION['OrderId'] есть и равен нужному значению.
после возврата в index.php, вывожу
 print_r($_SESSION); 
и вот тут мне показывается, что $_SESSION['OrderId'] и близко нет ....
никто не сталкивался с такой ситуацией ?

Спустя 1 час, 28 минут, 15 секунд (18.11.2010 - 18:36) cln2008 написал(а):
все, проблема решена ;)
помогла конструкция

$sId = session_id();
if ( empty($sId) ) { session_start(); }
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.