У меня есть любопытство. Что произойдет, если скрипт PHP включит себя?PHP self-including loop (концепция)
Причина, по которой я спрашиваю, что у меня есть php-файл, который генерирует содержимое для всех тегов <head>
моего сайта. Это включает тег 404 error page
head
.
Если файл PHP, который генерирует эти head
теги осуществляется непосредственно он «притворяется» не существует, включив 404 error page
, который посылает 404 status
обратно клиенту.
Это то, что файловая система выглядит следующим образом:
/
.htaccess <- (apache 404 handling)
404.php <- 404 error page
head.php <- '<head>' generator
...
404.php
содержит:
<?php
header("HTTP/1.0 404 Not Found");
?>
<html>
<head>
<?php
$key = true;
include dirname(__FILE__) . "/head.php";
?>
</head>
<body>
lul. dead.
</body>
</html>
head.php
содержит:
<?php
if(isset($key) && $key===true){
//code to generate <head> content
}else{
include dirname(__FILE__) . "/404.php";
}
?>
$key
говорит head.php
, что он был включен еще один файл PHP и не требуется по URL.
Таким образом, чтобы подвести итог, если я прямо просить head.php
от моего веб-браузера (не доступ к нему через php includes
, только через запрос HTTP) он должен:
(а) понимают, что запрос не был include
из другого файла PHP, то
(б) включают 404.php
, который
(с) посылает 404 status
на line 2
из 404.php
и, затем,
(д) включает в себяhead.php
.
Следовательно, в конечном итоге head.php
будет включать в себя head.php
.
такое случается?
Я не был уверен, что это сработает, поэтому я публикую свои собственные результаты здесь, в стеке, чтобы все могли видеть. –