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

#1 19. September 2015 15:26

nhaack
Server-Pate
Ort: Bonn
Registriert: 12. Dezember 2010
Beiträge: 171
Webseite

Von CMSMS (Frontend) auf normale PHP Session zugreifen

Hello zusammen,

folgendes Szenario:

- CMSMS ist bei mir nur ein Teilbereich der Seite (Unter-Ordner) domain.com/cmsms
- Ich schreibe in die PHP Session außerhalb von CMS. z.B. Hier: domain.com/some-item-outside-cmsms, ganz normal mit session_start() und $_SESSION['key'] = $value;
- Wenn der Besucher im CMSMS Front-End ist, möchte ich auf $_SESSION['key'] zugreifen. Jedoch kann ich mit einem UDT in CMSMS nur auf die CMSMS Session zugreifen.

Ich bin jetzt kein großer Entwickler, folgendes habe ich herausgefunden (CMS 1.12 Pohnpei):

- CMSMS verwendet eine eigene Session. Der Name wird in der include.php Zeile 21ff gesetzt. Er ist am Ende die ersten 12 Zeichen des MD5 Hashes des Verzeichnises von CMSMS. Keine große Magie, vermutlich um mehrere CMSMS Installationen unter der gleichen Domain zu betreiben.

[== php ==]
$dirname = dirname(__FILE__);
....
$session_name = 'CMSSESSID'.substr(md5($dirname), 0, 12);

Wenn ich jetzt den Sessionname in z.B. PHPSESSID umbenenne, kann CMSMS auf die Session zugreifen.


[== php ==]
$dirname = dirname(__FILE__);
....
$session_name = 'PHPSESSID';

Ein kurzer Dump der Session zeigt mir, das sowohl die Daten aus meiner laufenden PHPSESSION als auch von CMSMS enthalten sind. Da ich unter der Domain nur eine CMSMS Installation verwenden möchte, sollte eine Änderung des Namens ja eigentlich kein Problem sein. Auf den ersten Blick scheint es zu klappen.

Meine Frage an euch: habe ich CMSMS an dieser Stelle richtig verstanden? An für sich sollten doch keine weiteren Probleme zu erwarten sein?

Viele Grüße
Nils

Offline

#2 20. September 2015 17:59

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Von CMSMS (Frontend) auf normale PHP Session zugreifen

Kommt darauf an, was du CMSMS-seitig nutzen möchtest.

Grundsätzlich braucht CMSMS im Frontend keine Sessions - wie die auszuschalten gehen, weisst du ja wink.

Zudem sollte im Frontend {$smarty.server.session.key} funktionieren roll ...

Offline

#3 21. September 2015 08:20

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

Re: Von CMSMS (Frontend) auf normale PHP Session zugreifen

Meine Frage an euch: habe ich CMSMS an dieser Stelle richtig verstanden? An für sich sollten doch keine weiteren Probleme zu erwarten sein?

Kurz: Ja, hast Du richtig verstanden.
Aber: PHPSESSID ist der von PHP aus eingestellte Standardname für Sessions. Aus Sicherheitsgründen sollte man da einen anderen Namen verwenden.

Schreibst Du die externen Scripte selber? Dann würde ich es umgekehrt machen. D.h. das Session-Handling von CMSms "kopieren" - zumindest den Session-Namen - anstelle die include.php von CMSms zu ändern. (Nach meiner Logik versuchst Du ja Session-Daten für CMSms bereitzustellen und nicht umgekehrt. Daher müsstest Du Dich beim Session-Handling auch nach CMSms richten.)


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 23. September 2015 21:33

nhaack
Server-Pate
Ort: Bonn
Registriert: 12. Dezember 2010
Beiträge: 171
Webseite

Re: Von CMSMS (Frontend) auf normale PHP Session zugreifen

Danke für eure Rückmeldungen. Die externen Scripte sind eigene und ich will die Daten für CMSms bereitstellen.

Der Einwand leuchtet ein, sich bei der Session möglichst nach dem CMSms zu richten. Zumal die anderen Scripte von mir sind und angepasst werden können und das kein wirklicher Aufwand ist.

Denn sonst muss ich bei jedem Update dran denken, den Sessionnamen anzupassen.

Thx!
Nils

Offline