$_SESSION+Array

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
$_SESSION+Array

Здраствуйте
скрипт для поиска и постраничного вывода картинок с директории .
Попробую рассказать что хочу сделать

1. Прочитать в масив имена всех файлов с директории.
Сохранить имена файлов в сессию.

2. вывести 20 файлов начиная с n-ого элемента масива

В принципе всё работает.

Но поскольку $_SESSION пытаюсь юзать впервые, то меня терзают смутные сомнения о правильности использования. Замечено, что сессия не удаляется из временной директории.
(Win2000 PHP 4.1.2).

Может есть более изящное решение?
Буду рад выслушать все замечания и предложения.

Спасибо


session_start();
session_register("FILE_ARRAY");
//////////////////////////
// Выводим форму


//////////////////////////////////////
//если нажали кнопку ищем в массиве файл под именем $filename
if (isset($search)){
foreach ($_SESSION['FILE_ARRAY'] as $_SESSION['FILE_ARRAY']){
if ($filename == $_SESSION['FILE_ARRAY']){echo "Файл ".$file." найден";}
}
}

//////////////////////////////
//если не нажата кнопка поиск

if (!isset($search)){
$FILE_ARRAY = array ();
$dir = opendir ("./pic/");
while($file = readdir($dir))
{
if ($file == '.' or $file == '..'){continue;}
$_SESSION['FILE_ARRAY'][] = $file;
}

////////////////////////////
// Вывод 20 файлов

if (!isset($n)){$n='0';}

for ($i=$n*10; $i<($n*10+20); $i++){
if (($i>count($_SESSION['FILE_ARRAY'])-'1') || $i<'0'){break;}//останавливаем цикл если i больше чем количество елементов масива или меньше нуля
echo $i.$_SESSION['FILE_ARRAY'][$i]."<br>";
}

if ($n!=='0'){
echo "<a href=\"".$PHP_SELF."?n=".($n-2)."\">Предыдущих 20</a> ";
}

if (count($_SESSION['FILE_ARRAY']) / ($n*'10'+'20') > '1'){
echo "<a href=\" ".$PHP_SELF."?n=".($n+2)."\">Следуйщих 20</a> ";
}
 

Фанат

oncle terrible
Команда форума
файлы не удаляются потому, что система вын.
нормальное решение. Наверное...
Хотя, если файлов много, а поиск файлов - не единственный раздел сайта (то есть, человек уйдет из поиска и будет потом час таскать список файлов за собой) - это не слишком оптимально.
написил бы ты лучше функцию, которая запускает dir через exec и интерпретирует его результаты. а точнее - загоняет в массив.
 

Bloody

Guest
Может все и нормально, но что, к примеру, означает такая конструкция:

foreach ($_SESSION['FILE_ARRAY'] as $_SESSION['FILE_ARRAY'])...

объясните, пожалуйста...
 

tony2001

TeaM PHPClub
>Замечено, что сессия не удаляется из временной директории.
она и не должна сразу удаляться.
по дефолту стоит вероятность отработки удаления - 1%.
 
Сверху