将所有不存在的get请求发送到默认页面

时间:2013-03-26 02:53:04

标签: php variables get http-status-code-404 http-get

请注意我是php的新手。

好吧我有一个剧本。

将变量页面发送到某些页面,但仅当变量与已存在的页面匹配时才

例如mysite.com/?varible123,如果存在varible123,则会将其发送到该页面,但如果它不存在,则会将其发送到默认页面。在我的情况下我的主页"主要"我不希望不存在的变量页面被发送到我的主页,而只是那些页面的默认值。

我想修改脚本,将所有不存在的变量发送到主页以外的默认页面。

和调用时显示的主页。

所以有人访问mysite.com他们看到了主页,但是如果有人访问mypage.com/?nonexisitenpage,他们会被发送到不是主页的默认页面。

?网站上的标记必须留在那里。

我的代码是

<?php
$page = $_SERVER['argv'][0];
if (!file_exists($page.".htm")){
 //check to make sure the file exists
 $page = "main";
 //include this page by default
}
if (strstr($page, ".")){ 
 //hack attempt
 $page = "main";
}
require_once($page.".htm");
//hard code extension to prevent getting hacked
//http://mysite.com/?lol will include lol.htm
?> 

任何帮助都会得到解决。

1 个答案:

答案 0 :(得分:1)

你可以使用include。但是每个页面都必须有代码才能在另一个页面中正确呈现它,这将是最快的渲染。

<?php
$page = $_SERVER['QUERY_STRING'];

if (strstr($page, ".") !== false){ means . is there 
 //hack attempt
 $page = "main";
}
 //first check for hack

if (!file_exists($page.".htm")){
 //check to make sure the file exists
 $page = "main";

 //include this page by default
}
 include 'main.php'; //or main.html and return
   return;
//hard code extension to prevent getting hacked
//http://mysite.com/?lol will include lol.htm
?> 

在向全世界开放之前先尝试一下自己。也许你应该检查其他spl字符或只允许a-z,下划线和短划线作为名称。