Update from Git Manager GUI
This commit is contained in:
@@ -6,8 +6,25 @@ class WBF_Auth {
|
||||
const SESSION_KEY = 'wbf_forum_user';
|
||||
|
||||
public static function init() {
|
||||
// PHP 8.3: session_start() nach gesendeten Headers erzeugt E_WARNING,
|
||||
// der direkt in den HTML-Output fließt und das Layout zerstört.
|
||||
// Lösung: headers_sent() prüfen + session_start() mit Cookie-Optionen aufrufen.
|
||||
if ( ! session_id() ) {
|
||||
session_start();
|
||||
if ( headers_sent() ) {
|
||||
// Headers bereits gesendet — Session kann nicht sicher gestartet werden.
|
||||
// Passiert z.B. wenn WP_DEBUG=true und PHP Notices vor dem Hook ausgegeben hat.
|
||||
return;
|
||||
}
|
||||
$session_opts = [
|
||||
'cookie_httponly' => true,
|
||||
'cookie_samesite' => 'Lax',
|
||||
'use_strict_mode' => true,
|
||||
];
|
||||
// cookie_secure nur setzen wenn HTTPS aktiv — verhindert Session-Verlust bei HTTP
|
||||
if ( is_ssl() || ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' ) ) {
|
||||
$session_opts['cookie_secure'] = true;
|
||||
}
|
||||
session_start( $session_opts );
|
||||
}
|
||||
// Auto-login via Remember-Me cookie if not already logged in
|
||||
if ( empty( $_SESSION[ self::SESSION_KEY ] ) && isset( $_COOKIE['wbf_remember'] ) ) {
|
||||
@@ -55,6 +72,7 @@ class WBF_Auth {
|
||||
]);
|
||||
// Frisch laden und einloggen
|
||||
$user = WBF_DB::get_user( $user->id );
|
||||
if ( session_id() ) session_regenerate_id( true ); // Session Fixation verhindern
|
||||
$_SESSION[ self::SESSION_KEY ] = $user->id;
|
||||
WBF_DB::touch_last_active( $user->id );
|
||||
return array( 'success' => true, 'user' => $user );
|
||||
@@ -67,6 +85,7 @@ class WBF_Auth {
|
||||
}
|
||||
return array( 'success' => false, 'banned' => true, 'message' => $reason );
|
||||
}
|
||||
if ( session_id() ) session_regenerate_id( true ); // Session Fixation verhindern
|
||||
$_SESSION[ self::SESSION_KEY ] = $user->id;
|
||||
WBF_DB::touch_last_active( $user->id );
|
||||
return array( 'success' => true, 'user' => $user );
|
||||
@@ -96,6 +115,7 @@ class WBF_Auth {
|
||||
'avatar_url' => $avatar,
|
||||
));
|
||||
|
||||
if ( session_id() ) session_regenerate_id( true ); // Session Fixation verhindern
|
||||
$_SESSION[ self::SESSION_KEY ] = $id;
|
||||
return array('success'=>true,'user'=>WBF_DB::get_user($id));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user