разбор функции

Rezec

По пиву? (socket80)
Как вариант. Пробеги по директории и занеси имена файлов в массив
PHP:
$files = array('file1.php', 'file2.php')
В этом массиве бедут только те фйлы, которые реально существуют. А с помощью
PHP:
if(in_array($file_name, $files))
  include($path.$file_name);
проверяй, есть ли такое имя в массиве.
 

Krisha

pain in the neck
Автор оригинала: Don Arana
Код:
$filename = foo($QUERY_STRING);

if (file_exists($filename))
{
     include ($filename);
}else{
     print "The file $filename does not exist";
}

function foo ($in)
{ 
   if ($in != "") {
       $out = "inc/texts/" . $in;
   }else{ 
       $out = 'error404.php'; 
   } 
   return $out; 
}
Зачем так извратно?

PHP:
$path = "inc/texts/";
$ext = ".txt";

if(!empty($_SERVER[QUERY_STRING]))
{
    if(file_exists($path.$_SERVER[QUERY_STRING].$ext))
    {
        include($path.$_SERVER[QUERY_STRING].$ext);
    }else{
        include("error404.php");
    }
}
 

Don Arana

Новичок
Krisha
спасибо большое, но знаешь.. ты будешь наверное смеяться...

все работает с твоим вариантом!
нооо.... :)
при запросе http://10.5.1.83/altair/navigation.php?con.txt

вижу все ту же ошибку!!
Fatal error: input in flex scanner failed in c:\internet\home\localhost\www\altair\inc\texts\con.txt on line 1


причем как только пишешь любое другое ошибочное имя файла, все пучком, как я и описывал!!!! это дурдом какой то, может что с PHP?

Пробовал, менять расширения файлов, ему все равно, что

Fatal error: input in flex scanner failed in c:\internet\home\localhost\www\altair\inc\texts\con.txt

что
Fatal error: input in flex scanner failed in c:\internet\home\localhost\www\altair\inc\texts\con.php

socket80 твой вариант наверное подошел бы, но я не хочу с появлением нового файла каждый раз записывать его в массив. где то видел функцию, что то там читает список файлов в диерктории...
 

Krisha

pain in the neck
ты будешь смеятся, но под виндами я тоже не могу создать файл с именем con, потому, что это зарезервированное слово по-моему от слова console (консоль)
 

tony2001

TeaM PHPClub
Don Arana:
обнови РНР.
это баг и он был пофиксен в версиях старше 4.2.3
 

Don Arana

Новичок
ураааа! :) я нашел баг :) и ведь я знал что это баг! какой я догадливый :) можете меня не утешать, что я не первый нашел этот баг :)

tony2001- сенкс!

Krisha все равно сенкс! :)

всем биг сенкс! %)
 

Krisha

pain in the neck
2tony2001
Проверка file_exists("con") или file_exists("con.*") возвращает TRUE

PHP 4.3.1
 

tony2001

TeaM PHPClub
>ураааа! я нашел баг и ведь я знал что это баг!
в следующий раз - перед тем, как жаловаться на что-то пройдите в Гугль и ищите по сообщению об ошибке.

Krisha:
мне попробовать негде, к сожалению.
кто-нить еще с виндой - попробуйте, плз, на последней версии РНР.
 

Don Arana

Новичок
tony2001 - в гугле не догадался! в след раз буду!

а думать об ошибке как потенциальном баге, мне, мягко говоря, новичку, тяжеловато!

я пробовал искать объяснение ошибки на php.net, но не нашлось..
 

Krisha

pain in the neck
2tony2001
PHP Fatal error: input in flex scanner failed in ...

Да, этой ошибки уже не выводит, у нас выходит получается другая бага уже. С проверкой file_exists("con") на виндах.

ща попробую на 4.3.3 и на 4.3.4RC1
 

Don Arana

Новичок
ахаха

установил пхп 4.3.3, и теперь на запрос

http://10.5.1.83/altair/navigation.php?con

выдает новые ошибки:

Warning: main(inc/texts/con.txt): failed to open stream: No such file or directory in c:\internet\home\localhost\www\altair\navigation.php on line 121

Warning: main(): Failed opening 'inc/texts/con.txt' for inclusion (include_path='.;c:\php4\pear') in c:\internet\home\localhost\www\altair\navigation.php on line 121


старая ошибка исчезла.. но..хм..кхе...ааааааааааа
 

Krisha

pain in the neck
2tony2001
И так, в версиях 4.3.3 и 4.3.4RC1 проверка file_exists("con") возвращает TRUE на виндах.

Ошибки: PHP Fatal error: input in flex scanner failed in... нет.
 

tony2001

TeaM PHPClub
пости баг на bugs.php.net
и test case не забудь маленький туда добавить.
 
Сверху