2012-04-16 76 views
6

我知道如何檢查用戶是否通過PHP登錄,但是當事件發生時我需要做一些樣式,並且爲此創建了一個單獨的JavaScript文件。這是一個Drupal變量還是我可以參考的東西?如何檢查用戶是否通過JavaScript在Drupal站點中登錄?

+1

你在做JavaScript樣式?基於用戶身份驗證,非常小心您在JavaScript中執行的操作。任何人都可以輕鬆操縱頁面上的JS。 – Webnet 2012-10-01 13:34:46

回答

13

創建一個new custom modulehook_init實現。

function [YOUR_MODULE]_init() 
{ 
    global $user; 
    drupal_add_js(array('user_js_uid' => $user->uid), 'setting'); 
} 

然後,在JavaScript代碼,檢查模塊user_js_uid中定義的變量的值。

​​

希望這有助於...穆罕默德

+1

'jQuery.cookie(「DRUPAL_UID」);'總是返回null' – FLY 2012-05-21 12:35:27

+2

7.12 – jhoff 2013-05-09 19:31:57

+0

+1中沒有「DRUPAL_UID」cookie。我爲這種情況添加了一個修復程序。謝謝。 – 2013-05-13 06:48:12

11

如果你正在等待DOM做好準備和使用標準產生的Drupal CSS類,你可以這樣做(用jQuery):

if($("body.not-logged-in").length) 
{ 
    // user is not logged in 
} 
+1

這樣你不必添加一個庫來檢查.. – Haje 2013-05-30 06:42:49

+0

這是一個很好的解決方案,如果你不使用清漆或類似的 – Bery 2014-08-07 07:48:05

+0

就不需要編寫自定義模塊。這種方法不需要編寫PHP,只需要純JavaScript。 – Sunry 2016-07-02 03:17:37

1

「未登錄」類似乎不存在於香草Drupal 8中。 但是有「用戶登錄」。下面是我使用隱藏定製的「註冊」菜單項的CSS的一條線,如果用戶登錄:

body.user-logged-in a[href="/user/register"] {display: none; } 
1

爲Drupal 8,如果你使用Drupal.behaviors,您可以訪問設置的用戶UID :

(function($, Drupal, viewport, settings) { 
    "use strict"; 
    Drupal.behaviors.ifCE = { //the name of our behavior 
    attach: function (context, settings) { 
    var userUID = settings.user.uid; 
    //your code... 
    } 
})(jQuery, Drupal, ResponsiveBootstrapToolkit, drupalSettings); 

所以如果userUID === 0那麼你的用戶沒有連接。

相關問題