我需要让代码工作,但它似乎根本不起作用。它应该使用页面中的代码(如果它存在),但如果它不存在则会重定向到404 page
。
try {
include "/pages/". $_GET["page"] . ".php";
} catch (Exception $e) {
header("Location: /?page=404");
}
答案 0 :(得分:2)
include不会抛出异常,因此无法在try / catch中使用。但是,您可以检查文件是否存在,如果不存在,则抛出一个将被try / catch块捕获的异常:
try {
$path = "/pages/". $_GET["page"] . ".php";
if ( ! file_exists($path)) {
throw new \Exception('File does not exist');
}
include $path;
} catch (Exception $e) {
header("Location: /?page=404");
}
或者您可以删除try / catch并使用file_exists
答案 1 :(得分:0)
它不会起作用。包括不会抛出任何例外。
你应该这样简单:
$file = "/pages/". (isset($_GET["page"]) ?: $_GET["page"] :'') . ".php";
if (file_exists($file)) {
include $file;
}
else {
header("Location: /?page=404");
exit; // you should use it after redirection
}
答案 2 :(得分:0)
尝试
<?php
if ((include "/pages/". $_GET["page"] . ".php") !== 1)
{
die('Include failed.');
}
?>
或者如果你需要捕捉异常
<?php
if ((include "/pages/". $_GET["page"] . ".php") !== 1)
{
throw new Exception("Include failed");
}
?>