Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Создание массива в Сессии

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Dezmont
Отправлено: 24 Ноября, 2011 - 09:54:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Добрый день. Уважаемык форумчане, может кто-нибудь сможет мне подсказать?

В общем есть 3 страницы php. На каждой должны выводиться страницы, которые посетил пользователь. Т.е. он перешёл на стр1, потом 2, потом 1, потом опять 2, потом 3, то из сессии должно вывестись на странице 1,2,1,2,3.
Создаю сессию и задаю в сессии массив вот так:
PHP:
скопировать код в буфер обмена
  1. $_SESSION['pages'][] = $_SERVER['PHP_SELF'];

Вывожу на странице список страниц вот так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_SESSION['pages'])){
  2.         print '<h2>Список посещенных страниц</h2>';
  3.        
  4.         // Выводим в цикле все посещенные страницы
  5.         print '<ol>';
  6.         foreach ($_SESSION['pages'] as $page){
  7.                 echo '<li>', $page, '</li>';
  8.         }
  9.         print '</ol>';

Проблема в том, что когда я задаю массив вот так:
PHP:
скопировать код в буфер обмена
  1. $_SESSION['pages'] = array($_SERVER['PHP_SELF']);


Ничего не работает. Задаётся и выводится только последняя страница, на которой был пользователь. Что тут не так? Почему в $_SESSION['page'] просто перезаписывается ячейка [0]? По идее ведь это идентичные конструкции?

Может это у меня чёт не так, и нужно как то по особенному задавать через array, чтобы всё воркало? =((
 
 Top
Мелкий Супермодератор
Отправлено: 24 Ноября, 2011 - 10:10:57
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Dezmont пишет:
Что тут не так?

Как написано - так и работает. Конструкции совершенно различны.
В первом случае - вы добавляете в массив элемент.
Во втором - инициализируете/заменяете значение массивом из одного элемента.


-----
PostgreSQL DBA
 
 Top
Dezmont
Отправлено: 24 Ноября, 2011 - 10:19:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 245
Дата рег-ции: Июль 2010  


Помог: 1 раз(а)




Спасибо. =)
 
 Top
ask
Отправлено: 24 Ноября, 2012 - 19:52:42
Post Id



Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Нояб. 2012  


Помог: 0 раз(а)




Файл меню: menu.inc.php

CODE (htmlphp):
скопировать код в буфер обмена
  1. <h2>Меню</h2>
  2. <ul>
  3.         <li><a href="page1.php">Страница 1</a></li>
  4.         <li><a href="page2.php">Страница 2</a></li>
  5.         <li><a href="page3.php">Страница 3</a></li>
  6. </ul>


Страницы page1, page2, page3:

CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. // Открываем сессию
  3.  
  4. // Подключаем код для сохранения информации о странице в сессии
  5. include('savepage.inc.php');
  6. ?>
  7. <!DOCTYPE html>
  8.  
  9. <html>
  10. <head>
  11.         <title>Страница 1</title>
  12. </head>
  13. <body>
  14.  
  15. <h1>Страница 1</h1>
  16.  
  17. <?php
  18. // Подключаем меню
  19. include('menu.inc.php');
  20.  
  21. // Подключаем код для вывода информации обо всех посещенных страницах
  22. include('visited.inc.php');
  23. ?>
  24.  
  25. </body>
  26. </html>


Файл: savepage.inc.php

CODE (htmlphp):
скопировать код в буфер обмена
  1. // Код для всех страниц - сохранение информации о посещенных страницах
  2. $_SESSION['pages'] .= $_SERVER['PHP_SELF']. "|";


Файл: visited.inc.php

CODE (htmlphp):
скопировать код в буфер обмена
  1. // Код для всех страниц - вывод информации о посещенных страницах
  2.  
  3. $pages = explode("|", $_SESSION["pages"]);
  4. if(is_array($pages))
  5.         array_pop($pages);
  6.         echo "<ol>";
  7.         foreach($pages as $page){
  8.                 echo "<li>$page</li>";
  9.         }
  10.         echo "</ol>";
 
 Top
esterio
Отправлено: 24 Ноября, 2012 - 19:59:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




ask
Зачем так извращаться
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB