Не работает ф-ция include()

rinat

Новичок
Не работает ф-ция include()

У меня Apache 2.0.x php4.x все работает
На сервере Apache 2.x php5.x не работает

Очень простой скрипт для страницы index.php
PHP:
include "inc/begin.php";
function foo ($in) {
if ($in != "") {$out=$in;}
else {$out="main";} return $out;}
$a=(foo($QUERY_STRING)).".php";
include $a; 
include "inc/end.php";
и пишу ссылки на страницы index.php?news, причем в news.php содержатся новости, а begin.php и end.php - шаблонные .
Проблемма в том, что иногда он открывает другую страницу, например:
открываем index.php?news (ч/з ссылку), он открывает index.php?press, например

В чем дело?
 

Фанат

oncle terrible
Команда форума
во-первых, не $QUERY_STRING, а $_SERVER['QUERY_STRING']
во-вторых, не if ($in != "") {$out=$in;}
а $in=basename($in);
в-третьих, не include $a;
а if (is_readable($a)) include $a; else echo "not found";
 

rinat

Новичок
спасибо огромное
завтра оттестю и отпишусь

-~{}~ 18.10.06 16:03:

Все заработало. Спасибо.
Я воспользовался только пунктами 1 и 3, т.к. пункт 2 не понял.
Все круто, ребята
 

Фанат

oncle terrible
Команда форума
вместо $out=$in напиши $out=basename($in);

иначе даже пятилетний ребёнок будет иметь на твоём сайте больше прав, чем ты сам.
 

Фанат

oncle terrible
Команда форума
я непонятно написал?
могу повторить.
чтобы даже пятилетний ребёнок не имел на твоём сайте больше прав, чем ты.

чтобы твой скрипт запускал только те файлы, которые ты ИМЕЛ В ВИДУ.
а не те, которые каждый придурок укажет в адресной строке.
неужели непонятно?
 
Сверху