這可能是一個沒有答案的問題,但...PHP:將變量/函數/ session_start保存在一個包含文件中?
在傳統的ASP我曾經有一個美妙的包含文件在每個頁面的頂部。它不僅在網站上的每個頁面的頁面頂部都有基本的html模板,而且還有關鍵變量,如dbase連接字符串,有用的函數和各種變量,如果更改將通過整個站點傳播。我只需將它包含在網站的每個頁面的頂部,它給了我統一的外觀和訪問各種各樣的東西。最好的部分...... ASP讓我在HTML發送到頂部包含文件後,例如在用戶成功登錄,表單提交或其他操作之後,在下面進行重定向。
現在我正在學習PHP(仍然noob)。似乎沒有簡單的方法來做重定向,一旦html已經發送爲header.php失敗。在每個頁面上,像session_start()所需的某些內容必須位於任何html之前。所以我可以在每個頁面的頂部放置一個無html的包含常用函數,字符串和開頭的session_start之類的調用。但是,如果我想根據下面的某些條件進行重定向,即成功登錄,似乎並沒有簡單的方法可以將頂級html模板保留在頂部。如果不是重定向問題,我會在HTML之前放置代碼並將其全部放在頂部包含文件中。
是否有保持會話開始於每個頁面的第一行,並有其他代碼方便,使用常見的html模板,仍然保留重定向的能力的最佳做法。
否則,如果重定向始終是任何HTML格式發送之前,那麼HTML不能包括作爲網站的頂級單文件,但必須插入下面的代碼,每個頁面上的任何重定向...
感謝您提供有關經驗豐富的PHP手中最佳實踐的建議。
聽起來您的網站已經達到了將大量表現代碼(HTML)與業務邏輯混合在一起的程度(PHP)。儘管你的問題當然可以解決而沒有太多的痛苦(儘管如果沒有看到你的實際代碼,我們無法幫助你),你應該考慮將業務邏輯分解爲有組織的類,並且只在「視圖」或「模板」文件中使用HTML。這被稱爲[關注點分離](http://en.wikipedia.org/wiki/Separation_of_concerns),是一種非常常見的最佳做法。 – 2012-03-09 23:02:27