2012-10-22 42 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

    這是因爲當您的內容存儲在數據庫中時,通常會使用此方法,而不是像您那樣的基於文件的系統。如果你的網頁是獨立的文件,那麼重寫是不必要的。