Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод файлов
 
 автор: сторож   (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>&#xA9;X-chat</small></p></card></wml>';
$navigation_bar_both '<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>';
$navigation_bar_back '<p align="center"><small><a href="index.php?action=back">&#171;back</a></small></p>';
$navigation_bar_forward '<p align="center"><small><a href="index.php?action=forward">forward&#187;</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 $d0$i);
         
$existion strtolowersubstr $d$i+1$lenghth) );
         break;
        }
  } 
# end for

    
global $allowed_file;
    
$fallowed fopen "$allowed_file""r");
    while (!
feof ($fallowed) )     # удаляем пустые строки и комментарии
      
{
        
$type fgets ($fallowed1024);
        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-) 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"] <= )    { $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);
?>

   
 
 автор: cheops   (07.04.2005 в 16:15)   письмо автору
 
   для: сторож   (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
<-- типы текста -->

   
 
 автор: cheops   (07.04.2005 в 21:37)   письмо автору
 
   для: сторож   (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)
 

Что нибудь нашли?

   
 
 автор: cheops   (08.04.2005 в 22:30)   письмо автору
 
   для: сторож   (08.04.2005 в 17:15)
 

Хм... у меня почему-то не отображаются названия файлов - только куча ссылок DIR и сразу ссылка назад, что-то даже не соображу как скрипт должен работать...

   
 
 автор: сторож   (10.04.2005 в 18:52)
 
   для: cheops   (08.04.2005 в 22:30)
 

Разместите скрипт в папку с файлами типа jpg и запустите его в папке не должно быть других папок!

   
 
 автор: cheops   (11.04.2005 в 02:36)   письмо автору
 
   для: сторож   (10.04.2005 в 18:52)
 

Исправьте блок
<?php
#проверка бара навигации на возможность переходов 
$navigation_bar $navigation_bar_both
if ( 
$HTTP_SESSION_VARS["index_page"] <= )    { $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"] <= )    { $navigation_bar $navigation_bar_forward;} 
if ( 
$HTTP_SESSION_VARS["index_page"] >= floor($i/$index_per_page) - )    { $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)
 

Да и индекс перед ссылками и размер файла после

   
 
 автор: cheops   (13.04.2005 в 11:54)   письмо автору
1.9 Кб
 
   для: сторож   (12.04.2005 в 01:42)
 

Хм... странно посмотрите этот вариант - он не работает...

   
 
 автор: Сторож   (15.04.2005 в 01:15)
 
   для: cheops   (13.04.2005 в 11:54)
 

В нём всё тоже только ещё перестали отображаться названия папок

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования