Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
了解与无效get请求相关的PHP 404重定向_Php_.htaccess_Redirect_Request_Http Status Code 404 - Fatal编程技术网

了解与无效get请求相关的PHP 404重定向

了解与无效get请求相关的PHP 404重定向,php,.htaccess,redirect,request,http-status-code-404,Php,.htaccess,Redirect,Request,Http Status Code 404,好的,我使用的是传统的php,没有框架,什么都没有,我使用的是简单的过程方式,现在我的问题是我搜索了一段时间,但没有得到我的问题的答案,我现在没有使用.htaccess文件,但我真的需要了解404错误是如何工作的?我有一个网站,在那里我显示了与category相关的帖子,比如category=php,所以我将其作为get请求传递 $_GET['category'] == 'php'; 现在我正在做的事情是这样的: $pocategory = $_GET['category']; if($po

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

$_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多个类别呢?在这个if条件下,我无法将它们全部列出,除非如何检测给定的get请求值是否无效


任何帮助都将不胜感激。

您可以将所有类别放入如下数组:

$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');
}

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

$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');
}

.htaccess就是这样做的

ErrorDocument 404 index.php?404
该行将告诉apache要加载的文件。上面的示例调用main index.php脚本

在index.php文件的顶部添加如下内容:

$error_404 = isset($_GET["404"]) ? true : false;
现在,您可以检测是否有404错误请求$错误_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);
现在只需调用函数:

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处理程序之后执行immidatley:

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()函数。

.htaccess是执行此操作的方法

ErrorDocument 404 index.php?404
该行将告诉apache要加载的文件。上面的示例调用main index.php脚本

在index.php文件的顶部添加如下内容:

$error_404 = isset($_GET["404"]) ? true : false;
现在,您可以检测是否有404错误请求$错误_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);
现在只需调用函数:

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处理程序之后执行immidatley:

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()函数。

解决方案是进入路由和框架^^。此外,您还应该在响应中提供一个适当的
404未找到
HTTP头,而不仅仅是页面中的“未找到”标题。类别存储在哪里?这确实让我难以理解,因为php似乎无法确定给定的get值是否有效,如果我键入一些随机值,它只是呈现了一个脏的暂停页面errors@Baba比如说现在的4个,css、html、php和javascript,但我想这是正确的方式吗?@V413HAV你的意思是你没有使用任何数据库作为你的分类解决方案是进入路由,进入框架^^^。此外,您还应该在响应中提供一个适当的
404未找到
HTTP头,而不仅仅是页面中的“未找到”标题。类别存储在哪里?这确实让我难以理解,因为php似乎无法确定给定的get值是否有效,如果我键入一些随机值,它只是呈现了一个脏的暂停页面errors@Baba比如说现在的4个,css、html、php和javascript,但是我想这是正确的方式吗?@V413HAV你的意思是你没有为你的分类使用任何数据库它应该是
在数组中
而不是
数组密钥存在
对不起,将其更改为
在数组中
所以我猜。htaccess在这里什么都做不了?数组键不存在
检查索引吗<代码>在数组中($pocategory,$pages)
在我看来更好。。。哦,你们跑得更快:P@V413HAV:如OP推荐中所述,您还应将标题更改为404以及重定向。在这里阅读更多信息:它应该是
在数组中
而不是
数组密钥存在
对不起,我猜它改成
在数组中
了。htaccess在这里什么都做不了?数组密钥不存在
检查索引吗<代码>在数组中($pocategory,$pages)
在我看来更好。。。哦,你们跑得更快:P@V413HAV:如OP推荐中所述,您还应将标题更改为404以及重定向。阅读更多信息:这是一种自定义方法,用于告诉我的脚本get值是否无效,如果用户输入任意内容,比如category=blahblah,该怎么办?当用户请求一个他不支持的类别时,OP想要404,而不是基本的404重定向。至少我从他的理解是这样的question@Seth是的,你说得对,但这仍然是自定义检查,我必须通过所有有效类别,这是他唯一的方法:我很惊讶……是的,你是对的,这就是为什么我没有为它保留一个单独的表,感谢你的解决方案,很快将尝试,叹息只能打勾:(,但我会肯定地投票给你的答案:)这是一种自定义的方法,可以告诉我的脚本get的值是否无效,如果用户输入任何随机的东西,比如category=blahblah,怎么办?当用户请求一个他不支持的类别时,OP想要404,而不是基本的404重定向。至少我从他那里了解到了这一点question@Seth是的,你说得对,但这还是海关检查,我必须通过所有有效的分类,他是唯一的方法吗:哦,我很惊讶……是的,你是对的,这就是为什么我没有为它保留一个单独的表格,感谢你的解决方案,我很快就会尝试,叹息只能打勾:(,但我肯定会投票支持你的答案:)