Если URL является домашней страницей (/ или index.php), сделайте это

Я пытаюсь скрыть контент на своей домашней странице с помощью этого кода:

<?php   

  $homeurl = 'index.php';                               
  $homepage = "/";
  $currentpage = $_SERVER['REQUEST_URI'];

  if($currentpage == $homepage or $currentpage == 'index.php') {
  echo 'no content';
  } else {
    echo 'content';
  }                                     

?> 

Это работает, если URL-адрес просто www.mysite.com, но не если URL-адрес www.mysite.com/index.php - мне нужно скрытое содержимое в обоих случаях. Мой PHP очень простой, поэтому, пожалуйста, прости меня!

3 ответа

Решение

Так что вам нужно добавить / до index.php тоже:

$homeurl = '/index.php';

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

Вы можете просто использовать магическую константу PHP и basename ()

echo basename(__FILE__);

Вот логика;

if( basename(__FILE__) == "index.php" ) {
  //Hide content
} else {
  //Show content
}

Например;

http://localhost/test/
index.php

http://localhost/test/index.php
index.php

Кажется, что Google поддерживает старые SO-страницы на плаву, поэтому извините за поздний ответ :) Я думаю, что лучшее решение для определения того, находимся ли мы на главной странице, выглядит примерно так:

      function isHomepage() {
  $page = basename($_SERVER['PHP_SELF']);
  return $page === 'index.php';
}

Приведенный выше код будет работать независимо от того, размещен ли он в самом файле домашней страницы или на какой-либо включенной странице (в отличие от __FILE__), и это также будет работать, если URL-адрес страницы явно не указан в нем, например http://example.com/app/все равно будет работать корректно.

Однако, если вы используете маршрутизацию и index.phpявляется страницей входа для ваших контроллеров, выше всегда будет возвращаться true. В этом случае вы должны разобрать $_SERVER['REQUEST_URI']вместо.

Другие вопросы по тегам