2017-04-24 99 views
0

我正在工作的應用程序有一個度假模塊。員工X註冊一個度假請求,他的經理收到一封電子郵件,表示X想要休假。到目前爲止,經理必須登錄並導航到休假部分並批准或拒絕請求,但我在電子郵件中添加了按鈕以直接批准或拒絕請求。我唯一的問題是,我不知道如何在登錄後將管理員重定向到電子郵件中的鏈接。如果他已經登錄,該應用程序運行良好,但如果他不是,我需要一種方法來存儲他在電子郵件中獲得的鏈接,然後使用它。登錄然後重定向到重新鏈接

我有一個用戶類,其中我登錄後保存數據庫中有關登錄用戶的所有信息,並且試圖在該方法中添加對uri_string()方法的調用,但由於User是自動加載庫,它會調用方法在每個頁面上刷新。所以我試圖檢查使用strpos(),如果我有一個在URI中的所需鏈接的一部分,然後存儲它,但由於某種原因,電子郵件的鏈接不會被存儲。

那麼如果存儲引用鏈接,如果它是從外部來源?

該應用程序是使用CodeIgniter框架在PHP中開發的。

編輯:沒有的,因爲一些原因有:

  1. 我得太多了問題。
  2. 在我擁有的用戶庫中,我一遍又一遍覆蓋了我被存放鏈接的變量(這是你累了時想念的小事之一);所以我總是以一個空字符串結束。
  3. 之前在這裏工作過的人(開發應用程序的那個人)有一種非常混亂的編寫代碼的方式
  4. 我總是在超越它!

謝謝!

+2

在會話中..? –

+1

作爲@JonStirling表示將其存儲在會話中 –

+0

謝謝!我正在解決這個問題,並且我正要結束一段非常複雜的代碼,這是行不通的。我在會議中做到了,效果很棒! –

回答

3

正如Jon Stirling &汗沙魯克在評論中說最簡單的方法是在會話中存儲鏈接。

基本上,你應該做的2個地方的變化:

  1. 在這種檢查,如果用戶進行身份驗證這樣的事情應該添加代碼:

    if ($notAuthenticated) { // checked somewhere before 
        $session->set_userdata('redirect_after_login', base_url(uri_string())); // session library was loaded somewhere above 
    } 
    
  2. 而在代碼實際上auth用戶加入:

    // after success auth (and after all other code does their job)... 
    $redirectAfterLogin = $session->userdata('redirect_after_login'); // session library was loaded somewhere above 
    if ($redirectAfterLogin) { 
        redirect($redirectAfterLogin); 
    } 
    
+0

我們在工作中使用的最佳解決方案。 –

+0

這很棒,它的工作原理比我想象的要簡單。謝謝! –