Előre is elnézést kérek a nagyon kezdő kérdéseimért, lehet anyázni, de jobban örülnék ha segíteni tudnátok. Sok témát átnéztem az oldalon és rákerestem de sajnos nem lelem a választ.
Szóval adott egy php script, amit menüvel érnek el bizonyos drupal userek eddig ez oké!
De azt szeretném, hogy a közvetlen link megadásával (pl: drupalportal.hu/phpscript.php) is csak azok a felhasználók tudják futtatni, akik be vannak bejelentkezve a portálra! Tehát egy egyszerű feltétel teljesüléséhez szeretném kötni, (pl.: ha a usernév <> "") hogy lefusson-e a script vagy se.
Látjátok, hogy nagyon kezdő vagyok, most ismerkedem a drupallal. de kérlek segítsetek, hogy hogy adjam meg ezt a feltételt!
Köszönettel: Dorottya
Fórum:
nem csináltam ilyet, csak ötlet
ha a drupal beépített függvényeit szeretnéd használni, írd a következőt a phpscript elejére:
include_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
ezután minden beépített függvényt használhatsz a szkriptben, ezért ha jól gondolom, azt is le tudod kérdezni, hogy van e belépett felhasználó és ha igen, ki az.
szóval, ha jól gondolom, a fenti sorok után működnie kell egy ilyen ellenőrzésnek:
if ($user){
(valaki szóljon közbe, ha rosszul gondolom légyszi, szeretnék tanulni ebből én is;)
-
clear: both;
<?php include_once
A fenti script mindkét esetben (ha be van jelentkezve ha nincs) a be vagy jelentkezve! üzenettel tér vissza!
Ez mitől van?
Különben köszönöm szépen!
Dorottya
hibás
Szia.
Eggyel több kapcsos zárójeled van. A feltétel elé egy global $user; még kell, valamint ha nincs szükséged az összes drupal komponensre, akkor célszerű csak azokat betöltögetni a bootstrap-el, amik kellenek. A bootstrap.inc fájlban megtalálod ezeket.
Üdv: Zoli
igen
Igen, köszönöm a zárójelet én is észrevettem és javítootam!
Most akkor itt tartok:
De ismét csak a Be vagy jelentkezve jön ki eredményül mindkét esetben!
:-(
Dorottya
Object id #1
Közben kiirattam a $user értékét, ha be van jelentkezve akkor "Object id #1" ha nincs akkor "Object id #2".
Ezek után próbáltam ezt (és most kéretik nem röhögni!) :
De itt is csak azt írja ki, hogy "be vagy jelentkezve!"
:(
Dorottya
alap php hiba
Engedd meg, hogy kijavítsam ezt az igen érdekes kódot ;)
if($user == "Object id #1")
Szóval két egyenlőségjel az az egyenlőség vizsgálat, az egy az értékadás ;)
Más:
- Érték kiíratása print_r, vagy var_dump, hogy lásd is mi van a tömbben és mi az object-ben.
- Drupalban meg mindig van $user objektum.
- Global csak akkor kell, ha függvényen belül vagy. (a te gányolós megoldásod az egyetlen olyan eset amikor nem kell ;))
- $user->uid ami megmutatja neked, hogy mi az azonosítója a júzernak.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
Köszönöm szépen a
Köszönöm szépen a segítséget!
Ígérem, hogy fél év múlva már megtanulom a php-t és a drupal-t is, de csak pár napja kezdtem el vele foglalkozni (mindkettővel) és amint azt te is jelezted még igen csak az elején tartok.
Dorottya
Én ezt használom: global
Én ezt használom:
global $user;
if($user['uid']>0){
...
}
lehet, hogy nem elég "drupálos", de működik.
Nézd meg a user tömböt:
print_r($user);
kipróbálta, de
Kipróbáltam, de ezt írja: Fatal error: Cannot use object of type stdClass as array in .....
Mit csináltam rosszul?
Dorottya
Bocsi, $user->uid akart
Bocsi, $user->uid akart lenni, mert egy osztály tulajdonságra vagyunk kiváncsiak.
tökéletes
Nekem is leeshetett volna!
Köszönöm szépen tőkéletesen működik!
Dorottya
Egy felismerés
Meghívtam AJAX-szal egy különálló oldalt egy alkönyvtárban és a user bejelentkezettségét akartam azonosítani ezen a módon. Sokat debuggoltam, amíg rájöttem, hogy a fenti módon az azonosítás csak akkor megy, ha a drupal root-jában van a meghívott oldal. Ennek az oka, hogy a session cookie azonosítóját a Drupal az URL-ből hozza létre és kódolja md5-tel. Igy egy node és az alkönyvtárból meghívott php oldal más sessionID-t és a meghívott oldal anonymous userként látszik.
Megoldás:
a root könyvtárba egy interface.php és abból include-dal lehet hívni az eredeti oldalt.
Kicsit gány, de így megy.
Drupal 5.8
Fábián Zoltán
www.fzolee.hu
Egy módja annak, hogy
Egy módja annak, hogy felhasználónként tudjunk elágaztatni egy scriptet:
inkább user->uid mert az nem változik
És ha belabacsi átírja a nevét bélabácsira akkor borul a kódod. Én maradnék az uid-nál.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
jogos
Igazad van, de mikor ezt leírtam, akkor a fórum elején feltett kérdésre próbáltam válaszolni, és ott az volt a kívánalom, hogy a usernév legyen vizsgálva a feltételben.