Как я могу получить URL-адрес страницы, которая использовала require_once

Я создал сайт PHP с 3 страницами, то есть A, B и C. И A, и B сначала вызовут страницу C, используя «require_once». Есть ли способ для страницы C узнать, поступил ли этот звонок от A или B?

$_SERVER['HTTP_REFERER'] не работает.


person Gary    schedule 25.06.2012    source источник
comment
Из любопытства, а зачем именно вам знать? А сколько нужно знать? Вам нужно только различать два или вы должны быть в состоянии точно определить, какой именно?   -  person Wug    schedule 25.06.2012
comment
поместите тег в A и B, например, $tag = A.php;   -  person nullpotent    schedule 25.06.2012


Ответы (3)


A.php

$page = 'A';
require_once 'C.php';

B.php

$page = 'B';
require_once 'C.php';

C.php

echo 'I was required by'.$page;
person Damien Pirsy    schedule 25.06.2012
comment
Это означает, что переменная $page должна быть доступна на всех трех страницах. - person Blaster; 25.06.2012
comment
Да, то же самое для вызова require() - person Damien Pirsy; 25.06.2012
comment
Ваше решение применимо только в том случае, если количество файлов невелико. В противном случае включение инициализации $page в каждый файл занимает слишком много времени... - person Jocelyn; 25.06.2012
comment
Это занимает столько же времени, сколько и использование require_once(); если количество страниц становится больше, OP может пойти на другой подход, что-то вроде контроллера fron, который также будет обрабатывать определение $page. В любом случае, простой ответ на простой вопрос («сайт с 3 страницами») - person Damien Pirsy; 25.06.2012

Вы можете использовать функцию debug_backtrace в c.php
. Вы также получите номер файла и строки вызывающего абонента.

$db =  debug_backtrace();

echo "Calling file: ". $db[0]['file'] . ' line  '. $db[0]['line'];
person Mahesh Meniya    schedule 25.06.2012

Попробуйте $_SERVER['REQUEST_URI']. Согласно php.net,

URI предоставляет полный путь запроса (/directory/file.ext?query=string)

person aynber    schedule 25.06.2012
comment
Спасибо. Это то, как я искал, потому что я не хотел помещать какую-либо дополнительную переменную на вызывающие страницы. Извините, у меня недостаточно репутации, чтобы проголосовать. - person Gary; 25.06.2012