我有文件夹(索引,注册,登录等)。我想检查给定GET请求的文件是否存在。示例 - localhost /?page =(页面)。我知道如何制作这个,但如果文件夹中不存在页面,我想制作404错误页面。
如果我在文件夹页面文件register.php并设置if($_GET['page'] = 'register') include('pages/register')
,如果文件不在文件夹中,则返回HTTP 404
答案 0 :(得分:0)
如果您使用的是带有apache或nginx的服务器,则应在其中进行设置。 如果您只是测试并且想要了解如何手动完成它,您可以尝试捕获需求,如下所示:
try{
require('pages/' . $_GET["page"]);
}catch(Exception $e){
require('pages/404.html');
}
答案 1 :(得分:0)
编辑1
由于您已经要求您只需要文件名,因此只需添加
即可$page = isset($_GET['page']) ? $_GET['page'] : '';
$page = pathinfo($page, PATHINFO_FILENAME);
$dir = '/your-files-directory';
$files = scandir($dir);
if( !in_array($page, $files)){
include('404.php');
exit();
}
include("/your-file-director/{$page}.php");
<强>解决方案强>
$page = $_GET['page'];
$dir = '/your-files-directory';
$files = scandir($dir);
if( !in_array($page, $files)){
include('404.php');
exit();
}
include("/your-file-director/{$page}.php");
<强>问题强>
现在只有两个原因..干杯:)
答案 2 :(得分:0)
您可以使用函数scandir()来实现
$getpage = (string) $_GET['page'];
$existingFiles = scandir('pages');
if(isset($existingFiles[$getpage])){
include('pages/'.$getpage);
}
else{
echo '404';
header('HTTP/1.0 404 Not Found', true, 404);
}