php中页面的访问控制

php中页面的访问控制,php,switch-statement,Php,Switch Statement,我想控制在php网站的访问 我有一个解决方案,现在与开关盒 <?php $obj = $_GET['obj']; switch ($obj) { case a: include ('a.php'); break; default: include ('f.php'); } ?> 但是当我有这么多页面时,管理它们就变得很困难了。你有更好的解决方案吗 现在,我使用p

我想控制在php网站的访问

我有一个解决方案,现在与开关盒

<?php
      $obj = $_GET['obj'];
      switch ($obj)
        {
      case a:
         include ('a.php');
         break;

      default:
         include ('f.php');
 }
?>
但是当我有这么多页面时,管理它们就变得很困难了。你有更好的解决方案吗

现在,我使用php4开发应用程序。我想用php5。当我使用php5开发它时,你有什么建议吗


谢谢

我不是说这是最好的解决方案,但几年前我曾经有一个网站,它使用数据库来管理密钥、要包含的页面以及一些信息,例如附加css

所以代码是这样的:

<?php

  $page = htmlspecialchars($_GET['page']);
  $stuffs = $db->query('select include,css from pages where pageid = "' . $page . '" LIMIT 1');

?>

因此,当我们需要添加页面时,我们只是在数据库中创建了一个新字段。这也让我们关闭了网站的一部分:我们可以有一个可用的={0,1}字段,如果为零,则显示一个静态页面,说明该页面正在维护中。

为什么不直接寻址页面本身呢

$obj = $_GET['obj']; 

$validArray = array('a','b','c','d','e');

if (in_array($obj,$validArray)) {
   include ($obj.'.php'); 
} else {
   include ('f.php');
} 
<a href="a.php">first page</a>
<a href="f.php">another page</a>

你拥有的页面越多,就越难控制它


您最好使用某种框架,我个人的偏好是。

我们肯定遗漏了什么。这是如何控制访问的?例如,你为什么不直接链接到a.php?我想要一个文件作为网站内容的访问,当然它不包括登录、注销界面等,因为你想要一个文件作为网站内容的访问?有什么原因吗?我想这样做只是为了安全。@garcon1986:我看不到任何安全性。你认为这里的安全性是如何工作的?htmlspecialchars在这里做什么?我忘了引用哪个可以逃避“和”和其他特殊字符。如果我打印$page.htmlspecialchars与sql无关,那么它就避免了sql注入no'的风险。它是html specialchars,而不是sqlspecialchars。正确的函数是mysql\u real\u escape\u string我知道。但ENT_QUOTE将“收入”&039;所以此外,无论是xss的东西,我总是逃避用户的输入。我不明白这件事。这就是我得到-1的原因吗?不仅必须转义引号字符,而且还必须为查询正确准备用户输入。这样,用户在URL中键入时可以看到所有文件。@garcon1986:使用/index.php?obj=a、/index.php?obj=b等有什么区别。?我也可以键入。是的,用户可以在url中键入任何内容。但这样的代码不容易管理。@garcon1986不,不会有这么多链接。只有几个。比如说,您有一个脚本news.php,所有的新闻页面都将通过这个脚本显示。你的站点会有多少个分区?这比使用switch要好。谢谢的确,它非常易于使用,并且有大量库可以帮助您更快地编写代码