Подтвердить что ты не робот

Получить имя файла, включающего PHP скрипт

Вот пример того, что я пытаюсь сделать:

index.php

<ul><?php include("list.php") ?></ul>

list.php

<?php
    if (PAGE_NAME is index.php) {
        //Do something
    }
    else {
        //Do something
    }
?>

Как я могу получить имя файла, который включает list.php script (PAGE_NAME)? Я пробовал basename(__FILE__), но это дает мне list.php.

4b9b3361

Ответ 1

$_SERVER["PHP_SELF"]; возвращает то, что вы хотите

Ответ 2

Если вы действительно должны знать, к какому файлу относится текущий, это решение:

$trace = debug_backtrace();

$from_index = false;
if (isset($trace[0])) {
    $file = basename($trace[0]['file']);

    if ($file == 'index.php') {
        $from_index = true;
    }
}

if ($from_index) {
    // Do something
} else {
    // Do something else
}

Ответ 3

Если кто-то попал сюда из поисковой системы, принятый ответ будет работать только в том случае, если script находится в корневом каталоге сервера, так как PHP_SELF - это имя файла с указанием пути к корню сервера. Таким образом, универсальное решение

basename($_SERVER['PHP_SELF'])

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

Ответ 4

Возможно, вы можете сделать что-то вроде следующего:

<ul>
    <?php
        $page_name = 'index';
        include("list.php")
    ?>
</ul>

list.php

<?php
    if ($pagename == 'index') {
        //Do something
    }
    else {
        //Do something
    }
?>

Ответ 5

В коде, включающем list.php, перед включением вы можете установить переменную с именем $this_page, а затем list.php может увидеть тест для значения $this_page и действовать соответственно.

Ответ 6

Решение basename($_SERVER['PHP_SELF']) работает, но я рекомендую поставить strtolower(basename($_SERVER['PHP_SELF'])) для проверки ошибок Index.php или index.php.

Но если вы хотите альтернативу, вы можете сделать:
<?php if (strtolower(basename($_SERVER['SCRIPT_FILENAME'], '.php')) === 'index'): ?>.