// Инициируем сессию
session_start();
if ($action != 1)
{
unset($_SESSION['metro']);
$_SESSION['metro'] = $metro;
}
else
{
$metro = $_SESSION['metro'];
}
Спустя 8 минут, 10 секунд (15.04.2010 - 14:48) ApuktaChehov написал(а):
Цитата (rubiroide @ 15.04.2010 - 14:40) |
У меня сохранялся массив $metro при первом посещении страницы и считывался из сессии при последующих посещениях |
Если имеется в виду, что пользователь ушел с сайта, а потом снова пришел, то у вас проблема не с сессиями, а с куками.
Спустя 10 минут, 47 секунд (15.04.2010 - 14:59) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 11:48) | ||
Если имеется в виду, что пользователь ушел с сайта, а потом снова пришел, то у вас проблема не с сессиями, а с куками. |
Подскажите какая проблема? Что добавить, чтобы у вернувшегося пользователя все работало как в первый раз.
Спустя 5 минут, 34 секунды (15.04.2010 - 15:04) rubiroide написал(а):
Как можно передать массив с одной страницы на другую? Может есть альтернативный способ?
Спустя 1 час, 25 минут, 7 секунд (15.04.2010 - 16:29) ApuktaChehov написал(а):
Определитесь, с одной страницы на другую во время одного посищения сайта или чтобы информация хранилась, даже если пользователь ушел с сайта.
Спустя 4 часа, 2 минуты, 21 секунда (15.04.2010 - 20:32) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 13:29) |
Определитесь, с одной страницы на другую во время одного посищения сайта или чтобы информация хранилась, даже если пользователь ушел с сайта. |
Во время ОДНОГО перехода.
Передал бы через get, но не знаю как МАССИВ запихать.
Спустя 2 минуты, 29 секунд (15.04.2010 - 20:34) ApuktaChehov написал(а):
Тогда сессии должны работать.
Убедитесь, что session_start(); есть в НАЧАЛЕ каждого скрипта который использует сессии.
Убедитесь, что session_start(); есть в НАЧАЛЕ каждого скрипта который использует сессии.
Спустя 18 минут, 11 секунд (15.04.2010 - 20:52) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 17:34) |
Тогда сессии должны работать. Убедитесь, что session_start(); есть в НАЧАЛЕ каждого скрипта который использует сессии. |
Есть! Сессии использую только на одной странице, переход осуществляется на ту же страницу, меняется только переменная $page - номер страницы. Другие переменные я передаю через get. А массив как передать не знаю, решил через сессию. Может есть альтернативный способ?
Спустя 2 минуты, 8 секунд (15.04.2010 - 20:54) ApuktaChehov написал(а):
Сессии должны работать. Проверьте настройки php.
И покажите полный код.
И покажите полный код.
Спустя 13 минут, 10 секунд (15.04.2010 - 21:08) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 17:54) |
Сессии должны работать. Проверьте настройки php. И покажите полный код. |
Самая первая страница с формой, список в который добавляю станции метро для поиска:
<SELECT id=metro ondblclick=del_m();
style="WIDTH: 190px" size=10
name="metro[]" multiple></SELECT>
Страница с результатами:
<?
session_start();
include "config.php";
$action = $_GET['action'];
trim($action);
$metro = $_GET['metro'];
$page = $_GET['page'];
if (empty($page))
$page = 1;
if ($action != 1)
{
unset($_SESSION['metro']);
$_SESSION['metro'] = $metro;
}
else
{
$metro = $_SESSION['metro'];
}
?>
Поясню словами, возможно моя логика неверна.
При первом заходе $action!=1 поэтому записываем массив в сессию (перед этим удаляю что там было)
При последующих заходах сюда ($page = 2 или 3...) $action==1 поэтому считываю массив из сессии. Переходы делаю по одной странице и разными $page.
Надо передавать массив при переходах!
Спустя 8 минут, 28 секунд (15.04.2010 - 21:16) ApuktaChehov написал(а):
Вы проверяли что в массиве $_SESSION происходит?
И еще. Как я уже сказал, session_start(); должна быть В НАЧАЛЕ скрипта. Т.е. на строчке №1
А что с селектом такое страшное? Его его опции?
P.S. Используйте теги оформления кода, пожалуйста!
И еще. Как я уже сказал, session_start(); должна быть В НАЧАЛЕ скрипта. Т.е. на строчке №1
А что с селектом такое страшное? Его его опции?
P.S. Используйте теги оформления кода, пожалуйста!
Спустя 9 минут, 9 секунд (15.04.2010 - 21:25) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 18:16) |
Вы проверяли что в массиве $_SESSION происходит? И еще. Как я уже сказал, session_start(); должна быть В НАЧАЛЕ скрипта. Т.е. на строчке №1 А что с селектом такое страшное? Его его опции? P.S. Используйте теги оформления кода, пожалуйста! |
Массив в $_SESSION['metro'] вроде сохраняется. Я попробовал вывести после скрипта
echo count($_SESSION['metro']);
После сохранения (первый заход $action != 1) количество показывает.
При втором заходе ($action == 1) должно произойти считывание
$metro = $_SESSION['metro'];
В результате количество элементов массива = 0.
Можно ли как-нибудь проверить когда выпадает содержимое $_SESSION['metro'];
Насчет селекта не понял:(
Спустя 2 минуты, 43 секунды (15.04.2010 - 21:28) ApuktaChehov написал(а):
echo count($_SESSION['metro']);
Это неправильно. Я имел в виду, что нужно посмотреть, что в массиве, а не сколько там элементов.
И покажите ВЕСЬ код, включая форму, вообщем, ВСЕ что есть!
Это неправильно. Я имел в виду, что нужно посмотреть, что в массиве, а не сколько там элементов.
print_r($_SESSION['metro']);
И покажите ВЕСЬ код, включая форму, вообщем, ВСЕ что есть!
Спустя 8 минут, 53 секунды (15.04.2010 - 21:37) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 18:28) |
echo count($_SESSION['metro']); Это неправильно. Я имел в виду, что нужно посмотреть, что в массиве, а не сколько там элементов. print_r($_SESSION['metro']); И покажите ВЕСЬ код, включая форму, вообщем, ВСЕ что есть! |
Вот что при первом заходе:
Array ( [0] => 7 [1] => 134 [2] => 136 [3] => 35 [4] => 117 [5] => 48 [6] => 137 [7] => 75 [8] => 87 [9] => 12 [10] => 132 [11] => 122 [12] => 100 [13] => 28 [14] => 52 [15] => 133 [16] => 71 [17] => 8 [18] => 118 [19] => 175 [20] => 174 [21] => 33 [22] => 103 [23] => 34 [24] => 74 [25] => 32 [26] => 73 [27] => 49 [28] => 10 [29] => 31 [30] => 9 [31] => 119 [32] => 72 [33] => 53 [34] => 30 [35] => 120 [36] => 159 [37] => 158 [38] => 161 [39] => 160 [40] => 29 [41] => 121 [42] => 88 [43] => 11 )
При следующем пусто! Массив удаляется из сессии или я его неправильно читаю!
Спустя 3 минуты, 36 секунд (15.04.2010 - 21:40) rubiroide написал(а):
Прикреплю файлы с кодом. Это форма (весит 153К, сжал).
Спустя 1 минута, 53 секунды (15.04.2010 - 21:42) rubiroide написал(а):
Это скрипт
Спустя 10 минут, 34 секунды (15.04.2010 - 21:53) ApuktaChehov написал(а):
Я не знаю зачем вы мне прислали всю верстку.
Я просил, только форму с которой отправляются данные и сам скрипт.
Ну да ладно.
Короче. Если при первом все хорошо, а при следующей пусто, тогда у Вас срабатывает вот этот участок кода:
Проведите трасировку, проверьте когда у Вас и что срабатывает.
Банально поставьте перед unset($_SESSION['metro']); - echo(123);
Увидите когда срабатывает эта часть кода.
Я просил, только форму с которой отправляются данные и сам скрипт.
Ну да ладно.
Короче. Если при первом все хорошо, а при следующей пусто, тогда у Вас срабатывает вот этот участок кода:
if ($action != 1)
{
unset($_SESSION['metro']);
$_SESSION['metro'] = $metro;
Проведите трасировку, проверьте когда у Вас и что срабатывает.
Банально поставьте перед unset($_SESSION['metro']); - echo(123);
Увидите когда срабатывает эта часть кода.
Спустя 7 минут, 54 секунды (15.04.2010 - 22:01) rubiroide написал(а):
Цитата (ApuktaChehov @ 15.04.2010 - 18:53) |
Я не знаю зачем вы мне прислали всю верстку. Я просил, только форму с которой отправляются данные и сам скрипт. Ну да ладно. Короче. Если при первом все хорошо, а при следующей пусто, тогда у Вас срабатывает вот этот участок кода:
Проведите трасировку, проверьте когда у Вас и что срабатывает. Банально поставьте перед unset($_SESSION['metro']); - echo(123); Увидите когда срабатывает эта часть кода. |
НЕА! Проверил:
if ($action != 1)
{
unset($_SESSION['metro']);
$_SESSION['metro'] = $metro;
echo "perzap";
}
else
{
$metro = $_SESSION['metro'];
echo "zap";
}
print_r($_SESSION['metro']);
Этот кусок не срабатывает, текст perzap во второй раз не появляется (в первый раз да)!
Спустя 1 минута, 58 секунд (15.04.2010 - 22:03) rubiroide написал(а):
А можно запихать массив в get? Я использую сессии потому что не смог другим способом передать массив при переходе (причем переход на ту же самую страницу)
Спустя 8 минут, 8 секунд (15.04.2010 - 22:11) rubiroide написал(а):
Не примите за рекламу, вот проблемная страница: http://www.arenda-liferealty.ru/ofis.php
При выборе станций метро они в первый раз передаются (через массив), а потом нет.
При выборе станций метро они в первый раз передаются (через массив), а потом нет.
Спустя 9 минут, 41 секунда (15.04.2010 - 22:21) ApuktaChehov написал(а):
Весь код я не могу просмотреть он большой.
Но дам несколько советов.
Убедитесь, что нигде в коде $_SESSION['metro'] не используется.
Для теста сессий запишите в начале в сессию что-нибудь, а потом на каждой странице выведите эту запись. Проследите что сессия не теряется.
Уберите unset($_SESSION['metro']); и попробуйте без этого. Если все также. То попробуйте поработать, к примеру с $_SESSION['metro1'];
Каким образом данные передаются, обычная форма и с помощью JS?
Мне тяжело Вам помогать, потому как кода много.
Но дам несколько советов.
Убедитесь, что нигде в коде $_SESSION['metro'] не используется.
Для теста сессий запишите в начале в сессию что-нибудь, а потом на каждой странице выведите эту запись. Проследите что сессия не теряется.
Уберите unset($_SESSION['metro']); и попробуйте без этого. Если все также. То попробуйте поработать, к примеру с $_SESSION['metro1'];
Каким образом данные передаются, обычная форма и с помощью JS?
Мне тяжело Вам помогать, потому как кода много.
Спустя 40 минут, 47 секунд (15.04.2010 - 23:01) rubiroide написал(а):
Проблему решил. Спасибоза помощь. Просто перенес код
поближе к session_start(); и все заработало.
ВЫВОД: код работы с сессией не надо разбрасывать по скрипту!!!!!!
P.S. Скрипт неделю назад работал и в разбросанном виде.
if ($action != 1)
{
$metro = $_GET['metro'];
$_SESSION['metro'] = $metro;
}
else
{
$metro = $_SESSION['metro'];
}
поближе к session_start(); и все заработало.
ВЫВОД: код работы с сессией не надо разбрасывать по скрипту!!!!!!
P.S. Скрипт неделю назад работал и в разбросанном виде.