0

我试图弄清楚如何仅在它与我输入的 URL 匹配时才允许 PHP 索引,如下所示:

例如,如果您输入 URL,site.com/myfile.php我想显示 404 错误之类的消息

但是如果你把site.com/myfile.php?=123页面内容显示出来。

4

6 回答 6

2

我认为当他们正在访问的页面确实存在时将某人发送到 404 可能被认为是不好的做法,这只是他们缺少的一个变量。

首先,我希望看到类似

site.com/myfile.php?variablename=123

反而。

如果您绝对想要,您可以在文件顶部添加:

if(!isset($_GET['variablename']){
     header('location:404.php');
}

其中 404.php 是您希望用户看到的 404 文件。

希望有帮助吗?

于 2013-10-11T14:49:35.937 回答
1

您可以运行条件来查找请求信息,我会使其具体化,例如使用 ?page_id=123

<?php
if ( $_REQUEST AND isset($_REQUEST['page_id']) )
{ 
    // SHOW PAGE CONTENT
}
else
{
    // RETURN 404
}
?>
于 2013-10-11T14:47:59.643 回答
1

您必须测试$_GET参数。

if (!$_GET) {
    echo "404 Error"; //or redirect using header();
} elseif ($_GET['key'] == 'value') {
    //code here
}

我看到您使用的是?= 123,我不是 100% 知道这是否可行,但在 URL 中具有键 => 值关联更容易(IMO)。

于 2013-10-11T14:48:02.310 回答
0

通过简单地比较一个字符串。

if (@$_GET['secret'] != 'mysecret'){
   header('location: noaccess.php'); //redirect the user to access denied page.
   die(); // terminate the script. A 
}

// The rest of the page

或者将所有内容保存在一个文件中:

if ((isset($_GET['secret'])) && ($_GET['secret'] == 'mysecret')){
    // Show the page
} else {
    // Show an error message
}

site.com/myfile.php?secret=mysecret

于 2013-10-11T14:48:58.623 回答
0

这应该足以满足您的需要。如果有其他要求,请告诉我们。

if(!isset($_GET)){
     //do whatever you want to validate the get input provided.
} else {
  header("HTTP/1.0 404 Not Found");
}
于 2013-10-11T14:53:26.797 回答
0

那么首先这 ?=123 可能是一个问题,因为当 ?=123 被传递时,它应该存储在某个地方,它可能像这样 ?uid=123 然后你通过 get 方法在变量中检索它然后检查它的值并相应地重定向用户。你可以做这样的事情

if(isset($_GET['uid']))
{
refresh(to whatever location you want);
}
else 
refresh(to some other location);

但是,如果您想要错误 404,那么根据我的说法是不可能的,因为这些值将被发送到存在的页面,如果该页面存在,则服务器无法给出“未找到”错误。

于 2013-10-11T14:55:31.757 回答