PHP Quirks im Legacy Code

Manche Vorgehensweisen im Legacy Code der Shops sind veraltet, fehleranfällig oder bringen nicht offensichtliche Eigenheiten mit sich.

BASE 64 Pfade

base64_encode() ist nicht Url-Safe. Padding am Ende des Strings (=xxxx) und beispliesweise + oder / werden ggf. (auch browserabhängig) nicht korrekt übergeben via GET. Base64 daher mit rawurlencode() und rawurldecode() behandeln.

PREPARED STATEMENTS - Spaltennamen

Das erste ? funktioniert nicht, Prepared Statement Parameter können nicht spaltennamen definieren.

$sprache = 'de';
$sql = <<<SQL
    SELECT id, modul, langvar, ?
    FROM webtool2_language 
    WHERE modul = ? OR modul = 'global'
SQL;

$result = $db->runQuery($sql, [$sprache, __MODNAME__]);
}

Substring Multibyte

Beim abschneiden von Strings beachten, dass Umlaute mehrere Zeichen lang sind und ein abschneiden via substr() einen fehlerhaften Character produzieren kann

mb_substr()