- Info
- Oktatás
- Web
- Tudás
- Fotók
- Zene
- Pedig az Icának tetszik
- AS együttes
- Szerzemények vagy fordítások
- Koncertek
- Zenetanulás
- Gitártanulás
- Gitártanulás 2
- Gitárvásárlási tanácsok
- Énektanulás kezdőknek 1
- Énektanulás kezdőknek 2
- 4. Énektanulás kezdőknek - Színpadi előadás
- Basszusgitár tanulás 1.
- Basszusgitár tanulás 2
- Basszusgitár tanulás 3
- Basszusgitár tanulás 4
- Basszusgitár tanulás 5
- Basszusgitár tanulás 7
- Elektromos gitárok működése
- Énektanulás kezdőknek 3 - zenekari próba
- Szilykon iskolazenekar
- Griff Együttes
- Linkgyűjtemény zenészeknek
- Kedvenc zenészek, zenekarok
- Egyéb
- Letöltés
User adatok használata Drupal környezetben
fz, 2008, január 20 - 12:39du
Ha egy Drupal rendszerben bármilyen tartalmat usernévhez, esetleg szerephez akarunk kötni, akkor használhatjuk a bejelentkezett felhasználó adatait a PHP kódban. Fontos dolog az, hogy ha egy tartalmat PHP kód állít elő, akkor a Drupal azt egy értelmező környezetben az eval() függvény segítségével futtatja. ez azt eredményezi, hogy a Drupal saját globális változóit importálni kell az oldal névterébe, így a $user változót is. A megoldás, tehát az alábbi:
<?php
global $user;
print("<PRE>");
print_r($user);
print("</PRE>");
?>
Ehhez hasonló eredményt kapunk. A válaszban jelzem az egyes részek jelentését:
stdClass Object( [sort] => 0 [threshold] => 0 [theme] => [signature] => [created] => 1195917194 [access] => 1200828420 [login] => 1200388494 [status] => 1 [timezone] => 0 [picture] => [init] => xy@mail.hu // email címe [data] => a:1:{s:18:"admin_compact_mode";b:1;} // Milyen adatokat mentettünk le hozzá [sid] => m1ouo9j5qat4s7rsjha0u3rjundhm6i6 // Session azonosítója [hostname] => 80.99.4.206 // Milyen IP címről jelentkezett be. [timestamp] => 1200828420 [cache] => 1200828420 [session] =>Iag7dBO0CX2ku2rhqIQ8PYlH7CenM6aK_P.... //Session adatok [admin_compact_mode] => 1 // milyen módban van a user [uid] => 1 // A user tábla uid mezője, egyedi azonosító [name] =>Gipsz Jakab // Usernév [pass] => 990df75cb228d3cc06dc67f9750c0b18 // Jelszó elkódolt alakban [mail] => xy@mail.hu // Email címe [mode] => 0 [language] => hu // Mi a beállított nyelve [roles] => Array //A user állapota ( [2] => authenticated user ) )
Ezeket az adatokat felhasználva lehet userfüggő részeket beiktatni a Drupal alatti kódba.
Erre mutatok az alábbiakban egy példát.
A példában a globális névtérből beimportálom a $user változót,
majd létrehozok egy konstanst attól függően,
hogy egy modulban milyen jogosultsága van az aktuális felhasználónak.
<?php
global $user;
$editable = variable_get('xmodul_ok',true) && isset($user) && ($user->admin_compact_mode);
?>
FONTOS!
A Drupal a $_COOKIE tömbben küldözgeti a session adatokat a szerverhez vissza, de a cookie elérési útvonalát és a cookie azonosítóját az URL alapján állítja elő. Ezért ha például a Drupal oldalunk a
gyökérből indul és a mi különálló PHP oldalunk a
http://valami.hu/include/foo.php
oldal lenne, mivel az elérési útvonal nem ugyanaz (!), ezért másik cookie jön létre és nem azonosítja a user magát.
Megoldás:
Létrehozzuk a gyökérben http://valami.hu/interface.php állományt, és ennek a tartalma:
<?php
require_once("./includes/bootstrap.inc"); //A Drupal indítása
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); //lefuttatja a Drupal inicializálást, többek között a sessionokat is
include("./valami/foo.php");
?>
Az igazi kódot pedig az include állományban helyezzük el. Általánosságban kell csinálni egy olyan interface.php oldalt, amely megfelelően felparaméterezve beinclude-olja a megfelelő oldalakat és így lehet kezelni minden erőforrást a Drupal részéről.













