im GitHub-Ticket #528 wurde das Problem mit dem Cookie-Parameter "samesite" behoben. Vor PHP 7.3 konnte man das einfach an den Pfad anhängen, z. B. "/; sameSite=lax", seit PHP 7.3 wird das nicht akzeptiert.
Während der Arbeiten am Ticket gab es folgende Änderungen, die ich hier auflisten möchte.
- Neue Konfiguration für Backend-/Frontend-Session-Cookies $cfg['backend']['session'] und $cfg['frontend']['session'] in data/config/production/config.misc.php und data/config/test/config.misc.php. Damit kann man nun detaillierter die Session für Backend/Frontend konfigurieren.
- Die Klasse cSession (contenido/classes/class.session.php) wurde überarbeitet. Es Arbeitet mit der neuen Konfiguration und die Funktionen zum Serialisieren der Session-Variablen nutzen nun keine eval()-Funktion mehr.
- Die Sichbarkeit der Funktion cSession->serialize() ist von `public` auf `protected` geändert worden. Im CONTENIDO Core wird es nur in cSession genutzt, die Gefahr, dass andere Module/Plugins das außerhalb von cSession ist, sehr gering, auch wenn es früher öffentlich war. Zusätzlich hat die cSession->serialize() einen neuen Parameter bekommen. Das war nötig, um von der Nutzung der eval() wegzukommen.
Cookie-Konfigurationen, die in der Konfig-Datei des Frontends gesetzt sind, werden auch übernommen, Beispiel:
Code: Alles auswählen
// Im Frontend in der Datei "cms/data/config/{environment}}/config.local.php"
global $cfg;
if (empty($cfg)) {
$cfg = [];
}
if (empty($cfg['cookie'])) {
$cfg['cookie'] = [];
}
$cfg['cookie']['path'] = '/';
Code: Alles auswählen
// In CONTENIDO in der Datei "data/config/{environment}/config.misc.php"
$cfg['frontend']['session'] = [
'cookie_expires' => $cfg['cookie']['expires'] ?? null,
'cookie_path' => $cfg['cookie']['path'] ?? null,
'cookie_domain' => $cfg['cookie']['domain'] ?? null,
'cookie_secure' => $cfg['cookie']['secure'] ?? false,
'cookie_httponly' => $cfg['cookie']['httponly'] ?? false,
'cookie_samesite' => $cfg['cookie']['samesite'] ?? null,
];
xmurrix