Скрипт не выводит другой скрипт, подскажите, пожалуйста

DN
На сайте с 20.07.2006
Offline
32
565

Есть такой код:

<?

if ( ! @$go ) {

}

else {

readfile('c.php');
}
?>

По идее он должен открыть файл c.php на всех страницах, кроме главной. Так и есть. Но в файле c.php стоит другой php код:

<?php require_once ($_SERVER['DOCUMENT_ROOT'].'/ct.php'); ?>

Дак вот он так и показывает эту строчку, а нужно, чтобы скрипт выполнился. Пожалуйста, подскажите, как такое сделать, что написать?

СКОРПИОН
На сайте с 05.01.2006
Offline
120
#1
DmitryNa:
Пожалуйста, подскажите

Подсказываю: линейку железную купите, чтобы таким писателям по пальцам...

З.Ы.

Замените readfile на include...

• Контекстные ссылки с внутренних страниц навсегда (/ru/forum/370882) • Качественные сайты для заработка на контекстной рекламе и ссылках
I
На сайте с 29.04.2006
Offline
135
#2
DmitryNa:
if ( ! @$go ) {

Жестоко...

DN
На сайте с 20.07.2006
Offline
32
#3

Спасибо большое, помог инклуд :)

[Удален]
#4

<?

if ( ! @$go ) {

}

else {

readfile('c.php');

}

?>

=== Оффтоп

сразу вспомнилась приколюха про индусских программистов, которые пишут нечто

bool done = false;

а потом проверку вида

if(done.toString().Length ==4)

{

console.writeline("false :( ");

}

== по теме

<?

if (@$go) {

include('c.php');

}

DN
На сайте с 20.07.2006
Offline
32
#5

Подскажте, пожалуйста, как в этой всей конструкции исключить ещё несколько страниц? Сейчас показывается скрипт на всех, кроме главной. Хотелось бы сделать чтобы он ещё не показывался в разделе контакты, в разделе о сайте и т.п.

[Удален]
#6

<?

$exclude[] = "page";

$exclude[] = "about";

$exclude[] = "contacts";

if (@$go && array_search($go,$exclude)===false) {

include('c.php');

}

думаю что так :)

bearman добавил 09.06.2008 в 02:38

массивчег сам заполнишь :)

DN
На сайте с 20.07.2006
Offline
32
#7
bearman:
<?
$exclude[] = "page";
$exclude[] = "about";
$exclude[] = "contacts";

if (@$go && array_search($go,$exclude)===false) {
include('c.php');
}

думаю что так :)

bearman добавил 09.06.2008 в 02:38
массивчег сам заполнишь :)

Не помогает, сделал вот так:

<?

$exclude[] = "page1";
$exclude[] = "page2";

if ( ! @$go && array_search($go,$exclude)===false) {

}

else {
include 'c.php';
}
?>

Сделал вот так, тоже не помогает, в этом случае скрипт нигде не показывается:

<?

$exclude[] = "page1";
$exclude[] = "page2";

if (@$go && array_search($go,$exclude)===false) {
include('c.php');
}
?>
Коля Дубр
На сайте с 02.03.2005
Offline
153
#8

Друзья, а с чего вы решили, что в @$go живет код страницы? :)

ТС, кто живет в @$go? Покажите, как у Вас урлы устроены.

Во-первых, избавляемся от необходимости таскать собаку перед $go:


$go = isset($go) ? $go : false;

Но вообще надо подумать, нужен ли этот $go, и, если нужен, инициализировать его в false в том месте, где он инициализируется.

В общем виде. Если урл выглядит как "/about.php" или "/about.php?sub=2" и на обоих нужно включить код, ищем по куску:


$uri = $_SERVER['REQUEST_URI'];
$script_show_pages = array('contact', 'about', 'guestbook'); // куски урлов
if (preg_match("~".join('|', $script_show_pages)."~", $uri) || $uri = "/") {
require_once("script.php");
}

Если, например, урл выглядит как "/page/", "/page/subpage/", и надо показывать скрипт только по первому:


$uri = preg_replace("~^/|/$~", "", $_SERVER['REQUEST_URI']); // обрезаем слеши, чтоб не мешались
$script_show_pages = array('', 'about', 'about/history'); // урлы без слешей
if (in_array($uri, $script_show_pages)) {
require_once('script.php');
}

Еще в более общем виде: отдайте код специалисту на аудит, дабы он огласил приговор: привести в порядок структуру, либо переписать все заново. Судя по тому куску, который Вы показали, второй вариант более вероятен.

Разрабатываю общую шину (http://habrahabr.ru/company/floxim/blog/268467/) помаленьку. ...а еще у меня есть бложек (http://www.blogovo.ru/).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий