Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скрипт для вап-сайта


Автор: Maks 2k 11.4.2005, 16:34
С PHP знаком буквально две недели. Решил сделать вап-сайт php + mySQL. Нашел скрипт, который индексирует все файлы в директории, создает на них ссылки+постраничная навигация. Но что-то в нем не работает. Может кто увидит ошибку и подскажет что не так.
Код

<? 

$index_per_page = 10; 

$allowed_file = "type_file.dat";

#$index_flag = false;        # false - нет 
$index_flag = true;          # true - да 

#$existion_flag = false;     # false - нет 
$existion_flag = true;       # true - да 

#$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="" title="'.$curren_dir_title.'">'; 
$footer = '</card></wml>'; 

$navigation_bar_both = '<p align="center"><a href="index.php?action=back">&lt;&lt;&lt;</a>&nbsp;<a href="index.php?action=forward">&gt;&gt;&gt;</a></p>'; 
$navigation_bar_back = '<p align="center"><a href="index.php?action=back">&lt;&lt;&lt;</a></p>'; 
$navigation_bar_forward = '<p align="center"><a href="index.php?action=forward">&gt;&gt;&gt;</a></p>'; 

session_name ("mysess"); 
session_start(); 

if ( !(trim ($HTTP_GET_VARS['action']) == "dir") ) 
  { 
    if ( trim ($HTTP_GET_VARS['action']) == "forward" ) 
      { $HTTP_SESSION_VARS["index_page"]++; } 

    if ( trim ($HTTP_GET_VARS['action']) == "back" ) 
      { $HTTP_SESSION_VARS["index_page"]--; } 
  } 
else 
  { 
      session_register("index_page"); 
      $HTTP_SESSION_VARS["index_page"] = 0; 
  } 

$body = ""; 
$body_line = ""; 
$i = 1; 
$dir = opendir ($curren_dir); 


function allowed_type ($d) 
  { 
   $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="'.$filename.'">'.$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) - 1 )    { $navigation_bar = $navigation_bar_back;}

    header ("Content-type: text/vnd.wap.wml"); 
    echo ($header.$body.$navigation_bar.$footer); 

?>


Автор: penizillin 11.4.2005, 22:25
Цитата(Maks @ 11.4.2005, 14:34)
Но что-то в нем не работает.
вот только - что?..

Автор: Maks 2k 11.4.2005, 22:32
Скрипт должен лежать в папке например JPG. В этой папке должен быть файл type_file.dat с таким содержанием:
Код

<-- типы картинок --> 

bmp 
gif 
jpg 
png 

<-- типы мелодий --> 

mmf 
mid 
midi 
mp3 
wav 
wma 
amr 

<-- игры --> 

sis 
jad 
jar 

<-- типы текста -->

В этой папке JPG не должно быть никаких других папок, толко файлы *.jpg

Автор: penizillin 11.4.2005, 23:47
и что?

Автор: Opik 11.4.2005, 23:58
Maks 2k
если
Цитата
Решил сделать вап-сайт php + mySQL

то, писать надо
WML + PHP + MySQL, вывод именно на WML.

Автор: Maks 2k 12.4.2005, 00:57
Извиняюсь! Немножечко неверно выразился. Вывод действительно на WML

Автор: Opik 12.4.2005, 01:36
Цитата
<p align="center"><a href="index.php?action=back">&lt;&lt;&lt;</a>&nbsp;<a href="index.php?action=forward">&gt;&gt;&gt;</a></p>

такого в WML уж точно нет.

Автор: Maks 2k 13.4.2005, 21:21
Все разобрался. Теперь работает. :-) Спасибо всем.

Автор: Любитель 25.7.2005, 18:08
На засыпку: перейди в любую страницу, где есть >>> и щёлкни обновить. ИМХО не красиво.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)