0
如果會話在使用Yii框架的應用程序級別爲空,我想重定向到登錄頁面。它應該適用於除登錄頁面以外的所有頁面。任何幫助讚賞如果會話爲空,如何重定向到登錄頁面
如果會話在使用Yii框架的應用程序級別爲空,我想重定向到登錄頁面。它應該適用於除登錄頁面以外的所有頁面。任何幫助讚賞如果會話爲空,如何重定向到登錄頁面
這樣做會修改控制器基類(保護/組件/ Controller.php這樣)的最佳方式。您可以添加init()
功能,這將獲得每個控制器調用執行,是這樣的:
public function init(){
if(!isset($_SESSION['mysession'])){
this->redirect("site/login");
}
}
您可以通過訪問當前控制器:
Yii::app()->controller->id
但你不能在init函數訪問行動(通常你可以使用Yii::app()->controller->action->id
)。要做到這一點,最簡單的方法可能是檢查類的網址:
if ($_SERVER['REQUEST_URI'] == "/site/login"){
// it's the login page
}
您可能必須在比較之前編輯$_SERVER['REQUEST_URI']
,如果你在你的本地主機在子文件夾中的工作,是這樣的:
$url = str_replace("/mysubfloder","",$_SERVER['REQUEST_URI']);
然後再比較一下。也可能最好檢查字符串中的index.php。
我假設你正在使用它來使某些頁面無法訪問未登錄的用戶?如果是這種情況,你真的應該使用accessRules
。 Read more about that here
感謝您的回覆。你的假設是對的。我想只爲非登錄用戶提供訪問權限。讓我看看訪問規則 –
沒問題阿克巴:)這是一個相當不錯的指南 - http://www.yiiframework.com/wiki/191/implementing-a-user-level-access-system/ –
至於現在我還沒有使用太多的框架類。我用一些Yii框架類使用純PHP。如果我使用Yii框架類太多,它會對Jquery的東西產生不利影響,這些東西我想在視圖中執行。假設我使用'$ form-> textfield()'爲html'輸入文本'我可以使用jquery操作那個元素嗎? –