Просмотр файла autolist/auto_list_dir_1.0_and_count/index.php

Размер файла: 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">&#171;back</a>&nbsp;<a href="index.php?action=forward">forward&#187;</a></small></p>
DATA;

$navigation_bar_back = <<<DATA
				<p align="center"><small><a href="index.php?action=back">&#171;back</a></small></p>
DATA;

$navigation_bar_forward = <<<DATA
				<p align="center"><small><a href="index.php?action=forward">forward&#187;</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.".&nbsp;";
		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>&nbsp;$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);
?>