仅在设置正确的URL时才允许PHP页面

时间:2013-10-11 14:45:06

标签: php html

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

如果您输入网址site.com/myfile.php,我想显示404错误或其他内容的消息

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

6 个答案:

答案 0 :(得分:2)

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

首先,我希望看到像

这样的东西
site.com/myfile.php?variablename=123

代替。

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

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

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

希望有帮助吗?

答案 1 :(得分:1)

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

<?php
if ( $_REQUEST AND isset($_REQUEST['page_id']) )
{ 
    // SHOW PAGE CONTENT
}
else
{
    // RETURN 404
}
?>

答案 2 :(得分:1)

您必须测试$_GET参数。

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

我看到你正在使用?= 123,如果可以的话,我不是百分之百的,但是在URL中有一个key =&gt;值关联更容易(IMO)。

答案 3 :(得分: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

答案 4 :(得分:0)

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

if(!isset($_GET)){
     //do whatever you want to validate the get input provided.
} else {
  header("HTTP/1.0 404 Not Found");
}

答案 5 :(得分:0)

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

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

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