Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#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 .
$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
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
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.
.. 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
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
global $gCms;
oder
$gCms = cmsms();
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. )
#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
Seiten: 1