Отчаянно надеясь, что кто-то может помочь в этом. Я новичок с 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 { } .... ?>