Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 03. Januar 2011 13:34

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

username ermitteln

Moin!

Kann mir mal jemand sagen wie ich im Backend den Usernamen ermittle?

$username = $gCms->variables['username'];

ergibt nix wenn ich das testhalber in einen UDT schreibe und im Backend laufen lasse ... obwohl das im filepicker von TinyMCE exakt so verwendet wird und dort auch funktioniert.

Was dort allerdings auch nicht funktioniert ist

[== php ==]
if (!$this->CheckPermission('allowadvancedprofile')) {   if (($this->GetPreference("restrictdirs", 0) == 1)) {     $username = $gCms->variables['username']; /// usernameabfrage if ($username == "test") {     if ($type == "image") {       $tmppath = dirname($rootpath) . '/' . $username;       //echo $tmppath;       @mkdir($tmppath); //Make sure initial dir is there       $rootpath = str_replace("images", $username . "/" . "images", $rootpath);       @mkdir($rootpath); //make sure images-dir is there       //echo $rootpath;       $rooturl = str_replace("images", $username . "/" . "images", $rooturl);     } else {       $rootpath.='/' . $username;       @mkdir($rootpath);       @mkdir($rootpath . "/images");       $rooturl.="/" . $username;     } }   } }

(der user test existiert natürlich)

Hab ich nen Denkfehler?

EDIT: Gibts ne Möglichkeit den Code normal darzustellen statt einzeilig?

Servus,
Alex

Beitrag geändert von faglork (03. Januar 2011 13:35)

Offline

#2 03. Januar 2011 13:58

piratos
Gast

Re: username ermitteln

Warum einfach wenn es auch kompliziert geht ?
Ok manchmal das CMSMS Prinzip . big_smile

$username=$smarty->_supers['session']['login_user_username'];

das kann man noch heraus holen:

array(4) {
  ["cmsuserkey"]=>
  string(8) "761fb79f"
  ["cms_admin_user_id"]=>
  string(1) "1"
  ["cms_admin_username"]=>
  string(5) "admin"
  ["login_user_username"]=>
  string(5) "admin"

#3 03. Januar 2011 14:39

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: username ermitteln

Von welcher CMS Version ist hier die Rede?
Seit der Version 1.9 kann man nicht mehr auf $gCms->variables zugreifen.
Der korrekte Weg soll laut Entwickler dieser sein:

$username = '';
$userops =& cmsms()->GetUserOperations();
if($user =& $userops->LoadUserById(get_userid(false)))
{
    $username = $user->username;
}

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#4 03. Januar 2011 15:16

piratos
Gast

Re: username ermitteln

NaN schrieb:

Der korrekte Weg soll laut Entwickler dieser sein:

Ok - der von mir aufgezeigte Weg ist auch korrekt und Versionsunabhängig da diese Daten nach einem Login im Backend immer auch in der Session zu finden sind und die Werte liegen bei Smarty vor - man kann die auch direkt in den Templates benutzen.

{$smarty.session.login_user_username}

#5 03. Januar 2011 16:49

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: username ermitteln

Ja, aber smarty ist halt für smarty templates und nicht für php scripte.
Im Template würde ich natürlich eher die $smarty.session variable nehmen.
Aber im php script über smarty auf die session variable zuzugreifen ... da kann ich doch gleich direkt auf die $_SESSION variable zugreifen.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#6 03. Januar 2011 17:19

piratos
Gast

Re: username ermitteln

NaN schrieb:

Ja, aber smarty ist halt für smarty templates und nicht für php scripte.

Das ist leider so die Denkweise die den Unterschied ausmacht zwischen einem ganz schnellen System und einem normal schnellem System.
Smarty ist zunächst ein PHP Klassensystem in dem eine ganze Menge auch unter PHP griffbereit aufbereitet werden.

NaN schrieb:

.. da kann ich doch gleich direkt auf die $_SESSION variable zugreifen.

So ist es.

#7 03. Januar 2011 17:52

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: username ermitteln

NaN schrieb:

Von welcher CMS Version ist hier die Rede?
Seit der Version 1.9 kann man nicht mehr auf $gCms->variables zugreifen.
Der korrekte Weg soll laut Entwickler dieser sein:

$username = '';
$userops =& cmsms()->GetUserOperations();
if($user =& $userops->LoadUserById(get_userid(false)))
{
    $username = $user->username;
}

1.9.2.

Ich verstehe nur nicht, warum dann
a) die mitgelieferte TinyMCE-Version sehr wohl auf $gCms->variables zugreift (in der action.filepicker.php)
b) dieses auch prinzipiell funktioniert - damit werden die user-bezogenen Verzeichnisse angelegt, und das funktioniert problemlos ...

Was mich so fuchst ist b) ... denn das bedeutet dass die Variable korrekt zugewiesen wurde - sonst könnten die user-Verzeichnisse ja nicht angelegt werden. Wenn ich ne diesbezügliche if-Abfrage if($usename == "test") mache bekomme ich aber immer false ...

Servus,
Alex

Beitrag geändert von faglork (03. Januar 2011 17:59)

Offline

#8 03. Januar 2011 21:17

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: username ermitteln

Im tiny mce filepicker steht ja auch nicht einfach nur $gCms->variables['username'].
Dort steht vorher ja bestimmt noch sowas wie

oder

Auf jeden Fall wird das in späteren Versionen nicht mehr so gehen, weil das eine CMSms interne Variable ist auf die man nichtmehr so ohne Weiteres von einem UDT oder Modul aus zugreifen kann. Nur weil es noch so im TinyMCE steht, heißt das nicht, dass es richtig ist. Auch wenn es noch funktioniert, schon in der nächsten Version könnte sich das ändern.

Ich hatte Calguy gefragt, ob es eine Alternative für diese Variable geben würde, oder ob man die Userdaten dann jedesmal selbst laden muss. Er meinte letzteres sei die einzig korrekte Methode, denn auf eine DB Abfrage mehr oder weniger käme es nicht an, da der Username ja nicht so häufig abgefragt wird. Daher der von mir gepostete Code. (über Sinn und Unsinn dieser Antwort kann man sich letztendlich streiten)

Allerdings ist die Methode mit der $_SESSION Variable wesentlich einfacher und vor allem performanter:

$username = (isset($_SESSION['login_user_username']) ? $_SESSION['login_user_username'] : '');

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#9 03. Januar 2011 22:40

piratos
Gast

Re: username ermitteln

Da der Name im Backend abgefragt werden soll, was nur dann geht wenn eingeloggt ist und somit auch die Session-Daten vorhanden sind genügt auch

$username = $_SESSION['login_user_username'];

da etwas vorhanden sein muss (wenn wir schon beim Stichwort performanter sind.  wink   )

#10 04. Januar 2011 14:38

faglork
arbeitet mit CMS/ms
Ort: Fränkische Schweiz
Registriert: 15. Dezember 2010
Beiträge: 1.152
Webseite

Re: username ermitteln

Thx!

Wo finde ich denn eine Übersicht über diese im Backend verfügbaren Variablen?

Ideal wäre es nämlich wenn ich mit Benutzergruppen statt mit einzelnen Usern arbeiten könnte.

Dann könnte ich zb. für Editoren andere Basisverzeichnisse einrichten.

BTW: Hat das denn wirklich noch niemand gemacht? Ich meine die Option "benutzerspezifische Verzeichnisse" bei TinyMCE aktiviert? Das funzt prinzipiell gut, nur kommt man dann nicht mal als Admin in die Userverzeichnisse :-(
Ideal wäre ja wenn die im CMSMS-Backend-Seiteneditor angegebenen "zusätzlichen Bearbeiter" ebenfalls Zugriff auf ide userspezifischen Verzeichnisse hätten. So zumindest hatte ich das verstanden, was aber leider nicht der Fall ist. DAS wäre allerdings die optimale Lösung. 
a) Gibt es eine Variable mit der man das abfragen kann?
b) Seht ihr eine Möglichkeit das "mit Bordmitteln" zu realisieren anstatt im Code rumzufummeln?

Servus,
Alex

Offline