|
автор: сторож (07.04.2005 в 15:36) |
|
| Подскажите где ошибка?
Он выводит на страницу файлы которые есть в этомже каталоге с постраничной навигацией но
нажимаю далее он переходит на 2 страницу и всё на 3 переходить нехочет!
<?
# сколько показывать на WML странице файлов:
$index_per_page = 10;
$allowed_file = "type_file.dat"; # имя файла, содержащего типы файлов разрешенных для вывода
# показывать индекс впереди файла:
#$index_flag = false; # false - нет
$index_flag = true; # true - да
# показывать на WML странице расширение файла:
#$existion_flag = false; # false - нет
$existion_flag = true; # true - да
# показывать на WML странице размер файла:
#$size_flag = false; # false - нет
$size_flag = true; # true - да
$curren_dir = getcwd ();
$lenghth = strlen ($curren_dir);
for ( $i = $lenghth; $i>0; $i--) { if ( $curren_dir [$i] === "/" or $curren_dir [$i] === "\\" ) { $curren_dir_title = substr ( $curren_dir, $i+1, $lenghth); break; }
}
$header = '<?xml version="1.0"?><!DOCTYPE wml PUBLIC "-//PHONE.COM//DTD WML 1.3//EN" "http://www.phone.com/dtd/wml13.dtd"><wml><card id="Menu" title="'.$curren_dir_title.'">';
$footer = '<p align="center"><small>©X-chat</small></p></card></wml>';
$navigation_bar_both = '<p align="center"><small><a href="index.php?action=back">«back</a> <a href="index.php?action=forward">forward»</a></small></p>';
$navigation_bar_back = '<p align="center"><small><a href="index.php?action=back">«back</a></small></p>';
$navigation_bar_forward = '<p align="center"><small><a href="index.php?action=forward">forward»</a></small></p>';
# устанавливаем сессию
session_name ("wapsid");
session_start();
if ( !(trim ($HTTP_GET_VARS['action']) == "dir") )
{ # папка не изменилась, используем сохранненый page index
# было ли действие "forward" метод POST
if ( trim ($HTTP_GET_VARS['action']) == "forward" )
{ $HTTP_SESSION_VARS["index_page"]++; }
# было ли действие "back" метод POST
if ( trim ($HTTP_GET_VARS['action']) == "back" )
{ $HTTP_SESSION_VARS["index_page"]--; }
}
else
{ # папка изменилась
#регистрируем default page index в сессии
session_register("index_page");
$HTTP_SESSION_VARS["index_page"] = 0;
}
# инициализация переменных
$body = "";
$body_line = "";
$i = 1;
$dir = opendir ($curren_dir);
# функция определяет разрешен ли тип файла к показу или нет
function allowed_type ($d)
{
# разделяем имя и расширение файла 'name' . 'existion'
$lenghth = strlen ($d);
for ( $i=$lenghth; $i>0; $i--)
{
if ( $d [$i] == '.' )
{
global $name;
$name = substr ( $d, 0, $i);
$existion = strtolower( substr ( $d, $i+1, $lenghth) );
break;
}
} # end for
global $allowed_file;
$fallowed = fopen ( "$allowed_file", "r");
while (!feof ($fallowed) ) # удаляем пустые строки и комментарии
{
$type = fgets ($fallowed, 1024);
if ( !(trim (strip_tags($type) ) == "") )
{
if ( trim($type) === $existion ) {return true; break;};
}
}
return false;
}
# начинаем читать каталог
while ( ($d = readdir ($dir)) !== false)
{
if ( is_dir ( $d ) and !($d == ".") and !($d == ".."))
{
$body_line = '<p align="left"><small>[dir]...<a href="$d/index.php?action=dir">$d</a></small></p>';
$body = $body.$body_line;
}
$flag_allowed = !($d == ".htaccess") and !($d == "index.php") and !($d == $allowed_file);
if ( is_file ( $d ) and $flag_allowed and allowed_type($d))
{
# узнаем параметры файла
$LIST_FILE = stat ($d);
$file_size = $LIST_FILE [7]; # размер фала
$file_change_time = $LIST_FILE [9]; # время последнего изменения файла
# вычисляем плавающий размер файла
if ($file_size < 1024) $file_size = $file_size."b";
if ($file_size >= 1024) $file_size = round (($file_size/1024), 1)."Kb";
if ($file_size >= 1024) $file_size = round (($file_size/1024), 1)."Mb";
if ($index_flag) $index = $i." ";
else $index = "";
if ($existion_flag) $filename = $d;
else $filename = $name;
if (!$size_flag) $file_size = "";
$body_line = '<p align="left"><small>'.$index.'<a href="$d">'.$filename.'</a> '.$file_size.'</small></p>';
if ( ( $index_per_page*$HTTP_SESSION_VARS["index_page"] <= $i-1 ) and ( $i <= $index_per_page + ($index_per_page)*$HTTP_SESSION_VARS["index_page"] ) )
{ $body = $body.$body_line; }
$i++;
}
}
#проверка бара навигации на возможность переходов
$navigation_bar = $navigation_bar_both;
if ( $HTTP_SESSION_VARS["index_page"] <= 0 ) { $navigation_bar = $navigation_bar_forward;}
if ( $HTTP_SESSION_VARS["index_page"] >= floor($i/$index_per_page) ) { $navigation_bar = $navigation_bar_back;}
# выводим страницу
header ("Content-type: text/vnd.wap.wml");
echo ($header.$body.$navigation_bar.$footer);
?>
|
| |
|
|
|
|
|
|
|
для: сторож
(07.04.2005 в 15:36)
| | А формат type_file.dat какой должен быть? Просто листинг здоровый - неплохо бы его сначала запустить на локальном хосте - тогда проще отлаживать. | |
|
|
|
|
автор: сторож (07.04.2005 в 16:34) |
|
|
для: cheops
(07.04.2005 в 16:15)
| | Вот такой.
<-- типы картинок -->
bmp
gif
jpg
png
<-- типы мелодий -->
mmf
mid
midi
mp3
wav
wma
amr
<-- игры -->
sis
jad
jar
<-- типы текста -->
|
| |
|
|
|
|
|
|
|
для: сторож
(07.04.2005 в 16:34)
| | Пока так и не запустил скрипт, но меня смущает строка
'<p align="left"><small>[dir]...<a href="$d/get.php?action=dir">$d</a></small></p>'
|
Она в одинарных кавычках, поэтому перменная $d интерпретироваться не будет - она так и будет вставляться $d. Так надо?
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=130 | |
|
|
|
|
автор: сторож (07.04.2005 в 21:54) |
|
|
для: cheops
(07.04.2005 в 21:37)
| | нет так не надо. Я уже понял ,но это только повлияло на открытие и отображение папок в этой директории. Страницы так и доходит до второй и всё. | |
|
|
|
|
автор: сторож (08.04.2005 в 17:15) |
|
|
для: сторож
(07.04.2005 в 21:54)
| | Что нибудь нашли? | |
|
|
|
|
|
|
|
для: сторож
(08.04.2005 в 17:15)
| | Хм... у меня почему-то не отображаются названия файлов - только куча ссылок DIR и сразу ссылка назад, что-то даже не соображу как скрипт должен работать... | |
|
|
|
|
автор: сторож (10.04.2005 в 18:52) |
|
|
для: cheops
(08.04.2005 в 22:30)
| | Разместите скрипт в папку с файлами типа jpg и запустите его в папке не должно быть других папок! | |
|
|
|
|
|
|
|
для: сторож
(10.04.2005 в 18:52)
| | Исправьте блок
<?php
#проверка бара навигации на возможность переходов
$navigation_bar = $navigation_bar_both;
if ( $HTTP_SESSION_VARS["index_page"] <= 0 ) { $navigation_bar = $navigation_bar_forward;}
if ( $HTTP_SESSION_VARS["index_page"] >= floor($i/$index_per_page) ) { $navigation_bar = $navigation_bar_back;}
?>
|
на
<?php
#проверка бара навигации на возможность переходов
$navigation_bar = $navigation_bar_both;
if ( $HTTP_SESSION_VARS["index_page"] <= 0 ) { $navigation_bar = $navigation_bar_forward;}
if ( $HTTP_SESSION_VARS["index_page"] >= floor($i/$index_per_page) - 1 ) { $navigation_bar = $navigation_bar_back;}
?>
|
| |
|
|
|
|
автор: сторож (12.04.2005 в 01:42) |
|
|
для: cheops
(11.04.2005 в 02:36)
| | Не помогло.
Он всё равно переходит на вторую страницу и всё когда нажимаю далее то открывается этаже страница.
Устал уже. | |
|
|
|
|
автор: сторож (13.04.2005 в 01:32) |
|
|
для: сторож
(12.04.2005 в 01:42)
| | Может знаете как по другому можно сделать чтобы скрипт читал содержимое каталога и выводил по 10 на страницу и были кнопочки вперёд назад и также чтобы каталоги тоже отображались как ссылки нажав на которую переходишь в каталог и всё это для WAP | |
|
|
|
|
автор: сторож (13.04.2005 в 01:34) |
|
|
для: сторож
(13.04.2005 в 01:32)
| | Да и индекс перед ссылками и размер файла после | |
|
|
|
|
 1.9 Кб |
|
|
для: сторож
(12.04.2005 в 01:42)
| | Хм... странно посмотрите этот вариант - он не работает... | |
|
|
|
|
автор: Сторож (15.04.2005 в 01:15) |
|
|
для: cheops
(13.04.2005 в 11:54)
| | В нём всё тоже только ещё перестали отображаться названия папок | |
|
|
|