2008-12-29 28 views
0

我有一個名爲User的類,其中包含靜態函數loginRequired(),如果用戶已登錄,則返回false;如果用戶已註銷,則返回true。它還將錯誤追加到我創建的錯誤類中,該錯誤類告訴使用該網站的用戶必須登錄才能查看內容。PHP從另一個文件中的函數返回

的想法是,這將要求用戶先登錄各功能的頂部,我們寫這樣的代碼:

if(User::loginRequired()) return; 

將輸出錯誤並立即從函數返回。我寧願做這個,但是:

User::loginRequired(); 

而且從loginRequired函數內調用函數返回......但因爲loginRequired()是在一個單獨的文件中單獨的一類,這是不行的。是否有可能從loginRequired()中調用loginRequired()函數返回?

謝謝。

回答

3

我已經看到了一些開源的應用程序的方式來處理,這是由具有require_login()函數執行重定向如果用戶沒有登錄。

5

我不確定你可以做到你想要的,但是,你可能想看看使用exceptions。這將允許您在User :: loginRequired函數中引發異常,並在更高級別捕獲它。你也可以看看使用PHP函數exit()

0

距離實際的頁面動態內容?我的意思是,我需要進行身份驗證才能看到除登錄頁面以外的其他任何內容,或者我在登錄時看到了一些內容,而在我沒有登錄時看到其他內容,等等。因爲如果服務器的整個目錄/部分位於登錄屏幕後面,您可以在目錄的.htaccess文件中添加一些內容,以重定向任何未登錄的人等。

另一方面,您可以讓該文件保持登錄狀態包含在用戶正在查看的任何頁面/腳本中,所包含的文件僅返回登錄狀態而不是其全部內容。這在includes下的例子5下的「include()和return()語句」中有介紹。如果你這樣做,你可以使用這樣的三元條件:

$logged_in = (include('userlogin.php') == TRUE) ? TRUE : FALSE; 

然後在每個受保護的功能有類似:

global $logged_in; 

你還是堅持了一個IF子句環繞整個功能,但至少你有登錄狀態。如果你想擺脫函數內部的IF,你總是可以調用函數conditional。像:

$content = ($logged_in == TRUE) ? some_function() : redirect_User(); 

話又說回來,我剛開始2個月前學習這些東西,還是不明白類和對象,所以我可能是大錯特錯。

0

OT:如果您描述的目的是唯一的,我會考慮將方法的名稱更改爲isLoggedIn()。稱爲loginRequired()的方法會更好地保護機密內容。

相關問題