1

好的,我使用的是传统的 php,没有框架,什么都没有,我使用的是简单的程序方式,现在我的问题是我正在搜索一段时间,但没有得到我的问题的答案,我现在没有使用 .htaccess 文件,但我真的需要了解 404 错误是如何工作的?我有一个网站,在其中显示与类别相关的帖子,例如 category=php,所以我将其作为获取请求传递

$_GET['category'] == 'php';

现在正在做的事情是这样的:

$pocategory = $_GET['category'];

if($pocategory == 'php' || $pocategory == 'javascript') {
//Then show related posts
} else {
header('Location:404.php');
exit;
}

我的意思是我只想将 php 和 javascript 作为有效请求的值,其余的我想重定向到 404 但我不明白该怎么做所以我这样做了,如果有超过 50 个类别怎么办?我无法在这种情况下将它们全部列出,简而言之如何检测给定的获取请求值是否无效..

任何帮助都感激不尽。

4

2 回答 2

1

.htaccess 是执行此操作的方法。

ErrorDocument 404 index.php?404

该行将告诉 apache 加载什么文件。上面的示例调用主 index.php 脚本。

在 index.php 文件的顶部添加这样的内容:

$error_404 = isset($_GET["404"]) ? true : false;

现在您可以检测是否有 404 错误请求。$error_404 将是真的,所以为什么不添加一个简单的函数:

function error_404($error_404)
{
    if($error_404 == true)
    {
       // do some error stuff here, like set headers, and some text to tell your visitor
    }
}

现在只需调用您的函数:

error_404($error_404);

最好在 get 处理程序之后立即执行该操作:

error_404($error_404)
$error_404 = isset($_GET["404"]) ? true : false;

或将两者合并为一行:

error_404($error_404 = isset($_GET["404"]) ? true : false);

要解决这个问题,请将其添加到相关脚本中:

$pocategorys_ar = array("php","javascript"); 

if (!in_array($pocategory, $pocategorys_ar)) 
{ 
    error_404(true); 
} 

确保它可以访问 error_404() 函数。

于 2012-09-30T17:55:07.063 回答
0

您可以将所有类别放在一个数组中,如下所示:

$pocategories = array
(
    'php',
    'javascript'
);
if (in_array($pocategory, $pages))
{
    // ...
}
else
{
    header('Location:404.php');
}

您可以做的另一件事是为每个类别创建一个 html/php 文件,然后这样做

if (is_file('sites/' . $popcategory . '.php')
{
    include('sites/' . $popcategory . '.php');
}
else
{
    header('Location:404.php');
}
于 2012-09-30T17:51:36.113 回答