2012-10-22 43 views
2

我正在做我的第一个单一登录网站,根据结果我看不到收益。单次登录实施出错

我实现以下内容:

  • htaccess的重定向的所有请求在根
  • 地址被解析并且每个/段到index.php /存储为数组中的元素
  • 第一段指出要包含哪个文件夹(例如“users”»“/pages/users/index.php”)。
  • 每个文件夹的index.php文件都会分析segments数组中剩余的元素,直到数组为空。如果有段阵列中没有更多的元素,指示该目标文件达到

样品

文件结构被包含的每个文件夹的

  • content.php文件(在文件夹中[] ):

    • [根]
      • 的index.php
      • [页]
        • [用户]
          • 的index.php
          • content.php
          • [资料]
            • 的index.php
            • content.php
            • [编辑]
              • 的index.php
              • content.php
        • [其他页]
          • 的index.php
          • 内容.php

    请求:http://mysite.com/users/profile/

    1. 。htaccess的重定向请求到http://mysite.com/index.php

    2. URL被解析和段数组包含:[1]的用户,[2]轮廓

    3. 的index.php地图[1]设定为 “页/用户/ index.php的”,所以包括文件

    4. 页/用户/ index.php的地图[2]至页/用户/简档/ index.php的,所以包括文件

    5. 由于段阵列中的任何其他元素,所述包含当前文件夹(pages/users/profile)中的contents.php文件。


    我真的不看到这样在具有功能,包括网站的组件(例如include_header(),include_footer()等)的利益,所以我的结论是我我做了一些非常错误的事情。我只是不确定它是什么。

  • 回答

    4

    这个版本你缺乏一些功能,只能作为一个非常简单的前端控制器模式。

    大多数系统不将URL映射到一个单一的PHP文件页面 - 他们的URL路径映射到知道要如何建立页面的控制器。

    另外,并非所有的URL都需要映射到直接文件。例如,查看github.com/[username]/[repo]。您无法创建数百万个bob/ajaxstuff/index.php文件 - 您需要使用正则表达式来告诉控制器您需要该项目的写入页面。

    $app->get('/:username/:repo', function ($username, $repo) { 
        echo "Looking at $username's $repo"; 
    }); 
    

    要真正掌握应如何正确使用我建议你使用一个全功能的路由系统一样简单Slim Framework

    如果您想了解更多关于路由设计和理论的信息,我建议您阅读php-router's自述文件以及来自warpspire的优秀URL Design文章。

    如果其中的任何一个太多,您还可以查看klein和超简单ToroPHP库。

    +0

    不错的苗条框架 – dynamic

    +0

    很多学习。谢谢! –

    2

    这是因为当您的内容存储在数据库中时,通常会使用此方法,而不是像您那样的基于文件的系统。如果你的网页是独立的文件,那么重写是不必要的。