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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Перестала работать сессия!

Сообщения:  [1-10]   [11-17] 

 
 автор: psychomc   (16.04.2010 в 00:37)   письмо автору
 
   для: rubiroide   (16.04.2010 в 00:06)
 

м-да, каждый для себя делает какие угодно выводы )))

просто может быть сначала нужно что-то делать, и уже потом смотреть на ожидаемый результат, а не наоборот

  Ответить  
 
 автор: rubiroide   (16.04.2010 в 00:06)   письмо автору
 
   для: rubiroide   (15.04.2010 в 23:09)
 

Проблему решил. Спасибоза помощь. Просто перенес код

  if ($action != 1)
  {
    $metro = $_GET['metro'];
    $_SESSION['metro'] = $metro;
  }    
  else
  { 
    $metro = $_SESSION['metro'];
  }  




поближе к session_start(); и все заработало.

ВЫВОД: код работы с сессией не надо разбрасывать по скрипту!!!!!!

P.S. Скрипт неделю назад работал и в разбросанном виде.

  Ответить  
 
 автор: Trianon   (16.04.2010 в 00:05)   письмо автору
 
   для: rubiroide   (15.04.2010 в 23:09)
 

Как он выглядит-то этот массив?
Может у Вас не массив, а просто набор сгенерирован?
станций метро даже в самых крупных городах редко бывает больше нескольких сотен.
Набор такой мощности можно упаковать в несколько десятков символов. А их можно передать хоть через GET

  Ответить  
 
 автор: rubiroide   (15.04.2010 в 23:09)   письмо автору
 
   для: Trianon   (15.04.2010 в 23:03)
 

Кажется в моем случае это нереально. Такой вот я скрип от незнания написал(http://www.arenda-liferealty.ru/ofis.php). База очень динамичная (агентство недвижимости) и через час на стр. 2 может быть совсем не то... Страница формируется на основе анализа массива, который я передаю (массив станций метро). Передать его не получается :(

  Ответить  
 
 автор: Trianon   (15.04.2010 в 23:03)   письмо автору
 
   для: rubiroide   (15.04.2010 в 22:44)
 

Вам не нужно передавать никакой массив.
Запрос к любой странице должен обрабатываться так, как если бы он был самым первым запросом этого пользователя.
Посетитель может и сразу захотеть посмотреть поисковую выдачу начиная со второй страницы (это кстати для современного состояния яндекса весьма актуально на практике)

  Ответить  
 
 автор: rubiroide   (15.04.2010 в 22:44)   письмо автору
 
   для: Trianon   (15.04.2010 в 22:37)
 

Тогда помогите новичку советом как передать массив из страницы на саму себя. Можно ли его в get запихать?

  Ответить  
 
 автор: Trianon   (15.04.2010 в 22:37)   письмо автору
 
   для: rubiroide   (15.04.2010 в 21:44)
 

У Вас поисковой запрос с банальной постраничной навигацией.
Никакие сессии Вам не нужны вообще - они лишь навредят.

  Ответить  
 
 автор: rubiroide   (15.04.2010 в 21:47)   письмо автору
 
   для: rubiroide   (15.04.2010 в 21:44)
 

$action помогает определиться что делать - записывать или считывать.
Когда мы в первый раз попадаем на страницу поиска $action!=1 и мы должны перезаписать массив в сессию. Для этого я сначала удаляю что было в массиве до этого и записываю туда то что пришло.

Когда мы попадаем второй раз $action уже равен 1 и надо считать то что лежит в сессии.

  Ответить  
 
 автор: rubiroide   (15.04.2010 в 21:44)   письмо автору
 
   для: sim5   (15.04.2010 в 16:35)
 

Напишу логику работы скрипта. Может кто поможет:

Есть страница с формой, где пользователь выбирает станции метро(metro.php).
После нажатия на кнопку он попадает на страницу с моим скриптом(poisk.php).
Делается выборка БД, результат выводится на страницу. Найденных вариантов может быть очень много.
Всё это со скриптом я затеял чтобы выводить не все варианты, а только 10 первых найденных.
Чтобы увидеть следующие 10 пользователь жмет на цифру 2 внизу. При нажатии происходит переход на ту же страницу(poisk.php). Через get передаю признак того что я на стр. 2. Теперь мне нужно снова сделать выборку и показать вторую десятку найденных. Для того чтобы сделать выборку мне нужен массив, который пришел со страницы metro.php.

ИТОГО: все что мне нужно - передать массив между страницами! ПОДСКАЖИТЕ КАК?

  Ответить  
 
 автор: sim5   (15.04.2010 в 16:35)   письмо автору
 
   для: rubiroide   (15.04.2010 в 16:31)
 

Еще раз повторить? НЕТ В ЭТИХ СТРОКАХ КОДА ПРИЧИНЫ!
А уничтожить переменную и потом сразу ее объявить вновь, это лишено всякого смысла.
Все ваше можно записать так:
<?
session_start
();
//заносим
if(!isset($_SESSION['metro'])) $_SESSION['metro'] = $metro;
//вот так, но не понятна проверка
$metro $action == $_SESSION['metro'] : $metro;
//может просто
$metro $_SESSION['metro']

Ищите причину в логике работы вашего скрипта/скриптов.

PS. Кстати, если $metro исходный массив, то зачем все это, получается просто рокировка. Нужно использовать везде $_SESSION['metro'].

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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