File size: 5.89Kb
<?
#-------------------------------------------------------------------------------------------
#
# AUTO LIST DIR 0.9
#
# ПРИ РАСПРОСТРАНЕНИИ ДАННОГО СКРИПТА ССЫЛКА НА САЙТ http://fgm.nm.ru
# ИЛИ http://wphone.fatal.ru/auto_list_dir/
# ОБЯЗАТЕЛЬНА!
#
# [email protected]
#
#------------------------------------------------------------------------------------------
//------------------------------< parameters programm >---------------------------------
# сколько показывать на WML странице файлов:
$index_per_page = 3;
$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; }
} # end for
//----------------------------------- заголовок WML страницы -----------------------------------
$header = <<<DATA
<?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">
DATA;
//---------- end --------------//
//----------------------------------- окончание WML страницы -----------------------------------
$footer = <<<DATA
<p align="center"><small>auto list dir 1.0</small></p>
</card>
</wml>
DATA;
//---------- end --------------//
$navigation_bar_both = <<<DATA
<p align="center"><small><a href="index.php?action=back">«back</a> <a href="index.php?action=forward">forward»</a></small></p>
DATA;
$navigation_bar_back = <<<DATA
<p align="center"><small><a href="index.php?action=back">«back</a></small></p>
DATA;
$navigation_bar_forward = <<<DATA
<p align="center"><small><a href="index.php?action=forward">forward»</a></small></p>
DATA;
//--------------------------------< programm code >--------------------------------------
# устанавливаем сессию
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"]--; }
if ( trim ($HTTP_GET_VARS['action']) == "" )
{ require "count.php"; } // подключаем счетчик посещений
}
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 = <<<DATA
<p align="left"><small>[DIR]...<a href="$d/index.php?action=dir">$d</a></small></p>
DATA;
$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 = <<<DATA
<p align="left"><small>$index<a href="$d">$filename</a> $file_size</small></p>
DATA;
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");
//header ("Content-type: text/html\n\n");
echo ($header.$body.$navigation_bar.$footer);
?>