Если index.php, покажите «это», если нет, покажите «это»,

Отчаянно надеясь, что кто-то может помочь в этом. Я новичок с php. Я стараюсь и сам обучать себя через учебные пособия, и я искал высоко и низко, но безрезультатно.

В основном я ищу, чтобы реализовать страницу If If index.php, показать foo , если не на странице index.php, show bar "

Есть идеи?

Надеюсь, я объясню это достаточно хорошо …

index.php включает боковую панель:

 require_once('./cache/templates/sidebar.php'); 

Каждая последующая страница построена, использует то, что определено в этом файле index.php, что означает, что sidebar.php является обязательным.

Я хочу изменить sidebar.php, чтобы содержать объявление, которое отображается исключительно на индексной странице.

В настоящий момент, когда я редактирую файл sidebar.php, например, чтобы отобразить букву «B», она будет отображаться на домашней странице и на любой другой странице;

Страница индекса: http://img.ruphp.com/php/bwe.png

Каждая другая страница: http://img.ruphp.com/php/bwe.png

Как я могу диктовать одну область включенного файла для отображения на одной странице, но исключать показ другим?

Любая помощь будет очень оценена.

[Изменить] Это веб-сайт в теме: www.grandoldteam.com. Вы можете увидеть, где у меня есть текст «Тест» – это было введено в sidebar.php. Я бы хотел, чтобы этот текст (будущая реклама) отображался только на индексной странице, больше нигде.

[Редактировать 2] Это точка, в которой sidebar.php вызывается в файле index.php;

 <p class="page_desc">'.$PAGE['subtitle'].'</p> ' ); } if (isset($url[1])) require_once('./cache/html/'.$url[0].'/'.$url[1].'.php'); else require_once('./cache/html/'.$url[0].'.php'); } } require_once('./cache/templates/sidebar.php'); } require_once('./cache/templates/footer.php'); 

И это то, но в котором я могу редактировать sidebar.php для отображения желаемого текста;

 <div class="clear"></div> test </div> <p> </div> 

Чтобы сделать это так, как вы хотите, используйте супергелбал $ _SERVER . Имя скрипта находится в нескольких местах.

 if (strpos($_SERVER['SCRIPT_NAME'], 'index.php') !== false) // index page... 

Другой вариант заключается в том, что index.php задает некоторую переменную типа $ show_ad, прежде чем включать боковую панель, а страница боковой панели может проверить эту переменную.

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

Используйте глобальную переменную или константу, указывающую, какая страница является вызывающей.

index.php:

 <?php $GLOBALS['caller_page'] = 'index'; require_once('./cache/templates/sidebar.php'); ... 

sidebar.php:

 <?php ... if ( isset($GLOBALS['caller_page']) && ($GLOBALS['caller_page']=='index') ) { ... // special action for the index page } ... 

Попробуйте это вместо этого,

Создайте сеанс на странице, где вы хотите показать «foo».

Тогда сделайте это

 if ($_SESSION['valid']) { //if the session is present, then show } else { //if not, } 

Это не только лучший способ сделать это, как то, что произойдет, если ваши имена файлов будут изменены? Таким образом, это не имеет значения, поскольку он проверяет сеанс, а не то, что может измениться 🙂

Как это работает:

В верхней части sidebar.php добавьте строку:

 print_r($_SERVER); 

Это покажет вам полное содержимое переменной $ _SERVER. Из этого вы должны увидеть несколько кандидатов, которые могут быть использованы, а также другие вещи, которые могут быть вам полезны в какой-то момент.

После того, как вы решите, что использовать, вам нужно будет проверить, включает ли он строку index.php . Хороший способ сделать это – использовать:

 if (strpos($_SERVER['SCRIPT_NAME'], 'index.php') !== false) { } 

Эта идиоматическая строка проверяет, не является ли положение строки index.php в имени сценария не ложным, то есть значением.

Проверить значение

 $_SERVER[ 'REQUEST_URI' ] 

против буквального

'/index.php'.

Если он идентичен. выполняется index.php.

все эти ответы велики, но я предлагаю другую практику. Это не лучше, но в моем чувстве это более комфортно.

когда вы это сделаете:

 require_once('./cache/templates/sidebar.php'); 

на index.php, сделайте это вместо этого:

 require_once('./cache/templates/sidebar.php?ad=1'); 

теперь, на sidebar.php, добавьте это:

 if(isset($_GET['ad'])&& $_GET['ad']=='1') // display ad else //don't display ad 

РЕДАКТИРОВАТЬ:

вам нужен рабочий код, отлично …

скажем, ваше объявление на самом деле является изображением логотипа stackoverflow:

теперь на sidebar.php у вас будет что-то вроде:

 <?php .... if(isset($_GET['ad'])&& $_GET['ad']=='1') { ?> <div> <a href="http://stackoverflow.com"> <img src="http://img.ruphp.com/php/stackoverflow-logo-250.png" alt="ad"/> </a> </div> <?php } else { } .... ?>